エクセルからデータをインポートして、データ加工後、エクセルにエクスポートさせるように作成中です。 となっていますのでACCESSへ、インポートする際に  IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで どのようにすればよいでしょうか。, いつもお世話になっています。 表題のとおり、Access テキスト型に対する指定桁での0埋め方法を探しております。 Set xlApp = CreateObject("Excel.Application") b)別の組込関数を使用する場合: 「データ型が一致しません」 解決したい点を列挙します。 [使用者氏名], ""), " ", "", 1, -1, 1) As 式1, PC管理台帳.新PC名, PC管理台帳.部署名, PC管理台帳.マシンベンダ名, PC管理台帳.マシンモデル From PC管理台帳; Private Sub Cmd1_Click() 0000ヌ2 第2、第3引数の、質問の順序にあわせるとこうなる。, アクセスからテーブルをcsv形式でエクスポートしようとしています。 宜しくお願いします。, 正しくエスクポートされ 対象の列全てで「文字列」を指定したら「完了」をクリックします。, 「データの取り込み」が表示されるので「既存のワークシート」で =$A$1 を選択して「OK」をクリックします。, 上記の例のように1セルのデータ内に改行が無いデータであればうまくいきますが、セル内に改行が存在する場合に上記の手順を行うと以下のようになってしまいます。, CSVを普通にExcelで開いた際には、1セル内に改行を含む文字列が正常に表示されますが、「データの取り込み」で「テキストファイル」を選択して取り込んだことにより、改行がそのまま解釈されて次の行に表示されてしまいます。, これでは先頭の0が省かれてしまう問題が解決しても、このままでは使えるデータではありません。, 改行を含んだデータがある場合には「データ取り込み」の時点ですでに文章が次の行になってしまい対処のしようがないので、元々のCSVファイルのデータを変更することで対処します。, 具体的にはCSVファイル内の1セルに対応するデータを =”データ” の形式にすることで、CSVファイルをExcelが読み込んだときに自動で「文字列」として認識してくれます。, 「=」で始まる項目はExcelの数式としてとらえられ、セルに対して =”データ” といった数式を入れることになり、結果的に ”データ” という部分が文字列として扱われます。これによって先頭の「0」が省かれることもなくなります。, 今回は数字だけのセルの値を =”” で囲む方法を説明します。 宜しくお願い致します。, >Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。 この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに 式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", "")))) Set xlSheet = Nothing クエリ2: よい方法があれば、ご教授をお願いします。, 更新クエリで行なう場合 どうか教えてください。よろしくお願いいたします。, 昔の回答で悪いけど参考にしてください。バージョン違いでうまくいかなかったらご勘弁。 データ形式を「テキスト型」に直しましたが、コードは直りません。  使用できる、似た機能の関数に、Switch関数というものもあります。 電話番号などが含まれるcsvデータを扱う際、エクセルで開いた時に最初の「0(ゼロ)」が消えてしまった経験はありませんか? エクセルのデフォルトの設定では整数でない数列は最初の0が消えてしまいます。 今回はそれを回避する2つの方法をご紹介しま xlApp.Cells.Select Mid関数にて対応時間を抽出しました。 例)処理後20070824.xls  となっているCSVファイルを「エクセルで開く」と、 数値型やオートナンバー型の数値は、[書式]プロパティで書式を指定することで、先頭に「0」を補完し、けたをそろえた表示にできます。数値の表示形式を変える、主な書式指定文字を紹介します。 Resume Exit_Cmd1_Click ことになります。 SELECT [クエリ2].  一応、 ことになります。 000320, EXCELで b)別の組込関数を使用する場合: 式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む, アクセス2003を使用しています。 Nz関数は、第1引数がNull(=文字列扱い不可の空白)だった場合に、第2引数の値に置換する関数 変換したいフィールドを「顧客コード」とします。 ヌ2   IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")  (詳しくは、Accessのヘルプを参照下さい) なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、 (2)このクエリをデザインモードで開く→クエリ画面で右クリックするとプルダウンメニューがでます。 Set xlApp = Nothing なお、念のため元のテーブルはコピーを取ってから実行ください。 元のテーブルに入力されているIDを変更することなく、 (「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と) →一番上のSQLビューをクリック→何やら表示しています。これを消して 正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の  IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで 岐阜      鈴木      33   50<[X]<=100  であれば B  とすればokのハズです。, ACCESSで複数のフィールドに全く同じレコードが複数存在します テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。 [式1]; ヌ2   [氏名]」の誤記と判断して記述しています) 愛知      田中      12 フィールド1  フィールド2  フィールド3 スペースは全て削除されるため、Trim関数は不要になります。 Accessに慣れていなくて困っています、どなたか教えてください(>_<) されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として このデータには、「000123」と先頭に0が付く6桁のコードのデータもあり、EXCEL上では文字列として認識されていました。 この方法であれば、セル内改行がある場合でも、0落ちすることなく簡単に対処することができます。, GoogleスプレッドシートはGoogleアカウントが必要です。 MsgBox Err.Description ス...続きを読む, Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。 Set xlApp = CreateObject("Excel.Application") CSVをExcelで開いたときに電話番号や郵便番号の先頭の0が表示されず困ったことはありませんか?, CSVファイルをExcelで開いたときにExcelが勝手にデータの型を変更して表示してしまいます。 EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。 なお、前回のフォーム閉じてフォームをクリックすれば実行モードになります、ボタンをクリックすればイベントに書いた内容を実行してくれます。 ...続きを読む, ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。 クエリ2のSQL文 b)別の組込関数を使用する場合: これを最初の0もきちんとある状態でcsv形式にエクスポートするには [ユーザー定義]での設定ですか?, 「エクスポート アクセス」に関するQ&A: ACCESS2010 エクスポート 自動化方法, アクセスからテーブルをcsv形式でエクスポートしようとしています。  使用できる、似た機能の関数に、Switch関数というものもあります。 どなたかアドバイスお願いします, クエリ1とクエリ2をクエリ3で結合するとクエリ3で「データ型が一致しません」と表示されます。  IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。 クエリ3で[使用者氏名]と[氏名]が一致しているものを抽出したいです。  IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで 回答            対応時間   Dim xlBook As Excel.Workbook 尚テーブルの時点ではフィールドの型はテキスト型になっています。 フィールド(ご質問の件では式1が該当)の結果がエラーとなるレコードが含まれている』というのが 「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。 何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、 [氏名], ""), " ", "", 1, -1, 1) As 式1, 職員アカウント.パスワード, 職員アカウント.メールアドレス, From 職員アカウント;  この場合、Yのフィールド設定で指定する数式についてご教授願います。 クエリでカウントして「0」を表示させることは出来たのですが、このクエリをエクスポートし、そのExcelファイルを開くと、「ファイルエラー:表示形式の設定が失われた可能性があります。」と表示され、0の部分は空白セルになってしまいます。 Excelでの編集作業で、新たに列を3列ほど挿入する必要がありますが、出来ればクエリの段階で、タイトル名だけ付けて、3列空けた状態にしておきたいです(挿入列も、連続で無い為)。 桁数あわせに0が入るといった方法、つまり12345なら0000012345、123なら0000000123と変換させる Dim xlSheet As Excel.Worksheet All rights reserved. クエリは画面上で右クリックで、表示モードが変えられます。 インポートし直すなら、 オ21 岐阜      鈴木      33 会社の上司からこのような相談を受けました。バージョンはoffice2003を使用しています。excelのデータをaccessのテーブルにインポートしました。このデータには、「000123」と先頭に0が付く6桁のコードのデータもあり、excel上では文字 (例) Accessのフォームで追加したデータがテーブルには反映されるが、フォームでは表示されない. 000021 愛知      田中      12 スペースドット 大小のカッコ など間違うと大変です。 データ形式を「テキスト型」に直しましたが、コードは直りません。 なるのを回避しています。 と表示されます。 どうすればいいのでしょうか? SELECT 職員アカウント.職員番号, Trim(Replace([職員アカウント.氏名]," ","")) AS 式1, 職員アカウント.パスワー...続きを読む, 「データ型が一致しません」のエラーが発生するパターンのひとつに、『結合に使用している演算 出来れば、(2)をACESSで取り込んでからACCESSで処理をしたいです。, format関数を使用してクエリーで変換するのがよいかと思います。 DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, "" 320 EXCELのデータをACCESSのテーブルにインポートしました。 現テーブルのレコードを削除して、EXCELのインポートでインポート先を今のテキスト型に設定したテーブルに直接インポートするか (2)手入力で管理しているデータ 下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。 フィールド(ご質問の件では式1が該当)の結果がエラーとなるレコードが含まれている』というのが Select 職員アカウント.職員番号, Replace(Nz([職員アカウント]. このデータをインポートしたところ、ACCESS上では「123」というように表示されています。 対応時間:Mid([回答],1,3) 第2、第3引数の、質問の順序にあわせるとこうなる。, タイトルの通りなのですが、 (「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた 三重      山本      23 どうしてもcsv形式でないとならない為、困っています。 b)別の組込関数を使用する場合:  これであれば、入れ子にする必要がなくなります。 (2)は有効分(12345とか123) (「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた よろしくお願い致します。 IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席"), もうひとつの書き方は CSVファイルの確認は、メモ帖など「勝手に変換したりしないアプリ」で確認しなければなりません。 クエリ1・クエリ2の式1にはReplace関数が使われていますが、Replace関数の第1引数にNullを どなたかお力を貸してください。 お手数ですが、ご教授願います。, 例えばボタンにエクスポートの処理を書いているのでしたら 先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください, ※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。 全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです  これであれば、入れ子にする必要がなくなります。 FROM クエリ1 INNER JOIN クエリ2 ON [クエリ1].[式1]=[クエリ2].   100<[X]<=150  であれば C   ※仮にレコードが1000件ある場合はEXCELで1000行作ります。 「標準」にすると、入力した値を基にExcelが判断した書式を割り当てるということのようです。 とは何ですか? "012345","abcd",123,"あいう" 「!」実行ボタンで完了です。 2行をコピーしてください、 インポートするcsvファイルの5列目は必ず数量の項目の値である必要があります。 なお、在庫一覧の表示する項目を変更しても、インポートするcsvファイルの各列の値は変わりません。 あります。 2つの要素からなる形にする必要があります。  この場合、Yのフィールド設定で指定する数式についてご教授願います。 Err_Cmd1_Click: 一括で簡単にできる方法を、至急教えて下さい!, sanbitです。 以外なので、「真(=-1)」という値が返された、ということです。 この事でしょうか?しかし 式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", "")))) しかし、ご回答の内容がよくわかりませんでした・・・ フォームはデータを表示させたり、ボタンでいろんな処理をするのにしようします。, sanbitです。 なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに: よろしければ、お試し下さい, ※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。 式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "") 単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します (その前の「1, -1」は、それぞれ開始位置と置換する文字数の指定です。この辺りは、詳しくは FROM PC管理台帳; 式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証 マクロで   100<[X]<=150  であれば C CSVをExcelで読み込んだ際に先頭の0が消える(0落ちする)場合の対処方法 . (1)AccessからExcelへエクスポートする際に意図しない表示の変更がなされる事。 式1: IIf([試験番号] Is Not Null,[試験番号],"欠席") End Sub. Set xlSheet = xlBook.Worksheets(1) ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す CSVファイルの確認は、メモ帖など「勝手に変換したりしないアプリ」で確認しなければなりません。 正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の いちいち「再計算」がかかってしまうので作業がやりづらいんです。。。 オ21 (1)のERPからのデータは必ず10桁(0000012345とか0000000123)で 方法はありませんでしょうか。 上記推測が当たっていれば、 のどちらかの対応をされれば、ご質問のエラーは解消されるものと思います。 クエリ1のSQL文 指定すると、エラーになります。 式1の変更で対応する場合は、それぞれ以下のようにしてみてください: 2行をコピーしてください、 どうしてもcsv形式でないとならない為、困っています。 この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに  場合は、省略ができない、と) 対象とする値が数値である場合は、「Format」関数で処理が行えるのですが、先頭が文字列の場合ですと、0埋め処理がスルーされてしまいます。 WHERE Len([フィールド名])=4; 更新欄に Format(CLng([フィールド名]),"000000") として更新すれば 指定すると、エラーになります。 指定すればOk、ということになります。 6.貼り付けをします。  これであれば、入れ子にする必要がなくなります。 FROM PC管理台帳; IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。  何卒よろしくお願いいたします。, a)IIF関数で対応する場合: クエリーで抽出したデータをcsv形式でエクスポートするには クエリでしたらできますか?更新クエリで案内します。 後は「ファイル」の「形式を指定してダウンロード」で「Microsoft Excel」を選択すればExcelファイルがダウンロードできます。, ファイルのダウンロード後はGoogleスプレッドシートからシートを削除しておきます。, 2つ目の対処方法は数字3桁以上のデータを対象としましたが、「正規表現」を覚えることにより柔軟な指定方法も可能になりますのでお試しください。, 参考:正規表現 (なお、Trim関数は、第1引数がNullであってもエラーになりません) EXCELのデータをACCESSのテーブルにインポートしました。 その後はいろいろ加工したいので、 クエリ1のSQL文   (その上で、今後のことを考えると値要求を「はい」に設定しておくことをお勧めします) クエリでしたらできますか?更新クエリで案内します。 >書式を数値の"0"にして 以下のサンプルのデータに対し、指定桁での0埋め方法について、良い案がありましたらおしえてください。 テキスト型のセルには「A」、数値型のセルには「9」、日付型のセルには日付をセットして新規テーブルにインポートしてください。, ACCESSからEXCELにエクスポートした際、ACCESS側でEXCELの書式設定は行えますか?(例:セルAの幅がX桁等) 手順は以下になります。, ※あくまで例であり、文字列にしたいセルの値が =”” で囲まれればよいので他のテキストエディタでも問題ありません。, 3つ目の方法としてはGoogleのスプレッドシートにCSVをインポートするという方法があります。 ボタンをCmd1とすると 5.下方向へドラッグし、項目を選択します。 ※貼り付けに失敗した場合、元に戻せませんので必ず元ファイルのコピーを取ってから行ってください DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, "" データの量が多いため、なるべく簡単に訂正する方法が知りたいとのことでした。 エクセルでは頭の0がきちんと残りますが、csvだと消えてしまいます。 FROM 職員アカウント; どのようにすればいいのでしょうか? 先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください, 選択クエリにおいて、あるフィールド「 X」 のレコード数値が フィールドの一覧に該当のフィールド名をセット フィールド1  フィールド2  フィールド3 エクセルに「080101」と入力したいが、最初の「0」が出てこない。どうすれば「0」が表示されますか.  一応、   としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。  と表記させるフィールド「Y」を追加したいと考えています。 参考URL:http://okwave.jp/qa1482781.html, クエリ1とクエリ2をクエリ3で結合するとクエリ3で「データ型が一致しません」と表示されます。 【参考】 「エクセルで開いている限り、何をしても無駄」なので、エクセルで開いてはいけません。, 会社の上司からこのような相談を受けました。 会社の上司からこのような相談を受けました。 もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり 無理なのでしょうか?, クエリーのデザインビューで任意の場所に列を挿入し、そのフィールド欄をそれぞれ「タイトル1: ""」「タイトル2: ""」「タイトル3: ""」とすれば、ご希望の通りに出来ます。, Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。 4.先頭レコードの貼り付けをしたい項目にカーソルを合わせます。(カーソルは白の十字) これを最初の0もきちんとある状態でcsv形式にエクスポートするには いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。 AccessからExcelにエクスポートしたデータのアポストロフィーを消すには・・・? 初めからExcel形式でエクスポートすると、とても重くなるし、 クエリ2のSQL文 クエリ1では[使用者氏名]の苗字と名前のスペースを置換しました。 但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる Set xlBook = Nothing  (詳しくは、Accessのヘルプを参照下さい)   50<[X]<=100  であれば B  テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。 です。第2引数に「""」(空文字=文字列扱い可の空白)を指定することで、Replace関数がエラーに 三重      山本      23   IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","") 更新クエリーでフィールドに「顧客コード」、 こんな感じで記述してください。  場合は、省略ができない、と) データ件数が多すぎて、下記VBでエクスポート処理をしています。 全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです WHERE Len([フィールド名])=4; この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」 なります。  (詳しくは、Accessのヘルプを参照下さい) 12345 abcd 123 あいう 最終的にはExcel形式で保存しなおそうと思っています。 ================================= これを「0(ゼロ)落ち」とも呼びます。, この現象はExcelがCSVのデータを開く際に、セルの表示形式を「標準」にしてしまうことで起こります。 なので「CSVファイルの中身を確認する場合、エクセルを使用してはいけない」のです。 UPDATE テーブル名 SET テーブル名.フィールド名 = "0"+[フィールド名] よろしくお願いします。, 質問の回答にならないかも知れませんが・・・ Set xlSheet = xlBook.Worksheets(1) なので「CSVファイルの中身を確認する場合、エクセルを使用してはいけない」のです。 そこで、(2)のデータを(1)のように必ず10桁にして Exit_Cmd1_Click: [使用者名]」と 000320 EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。 それぞれ入力方法が On Error GoTo Err_Cmd1_Click ボタンをCmd1とすると  IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。 DoCmd.TransferText acImportDelim, , "発送データ_TR", "C:\Access\Inport_data2.csv", False.  IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで クエリ2では[氏名]の苗字と名前のスペースを置換しました。 http://oshiete.goo.ne.jp/qa/4850675.html, a)IIF関数で対応する場合: Dim xlBook As Excel.Workbook   0<[X]<=50   であれば A  CSVをExcelで開いたときに電話番号や郵便番号の先頭の0が表示されず困ったことはありませんか? 今回は対処方法を3つお伝えします。 INDEX. この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」 DoCmd.TransferSpreadsheet acExport, 8, "XXX", "\XX.xls", False, "" End Sub 何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、 よい方法があれば、ご教授をお願いします。, 「テーブル データ」に関するQ&A: アクセス 日付抽出(年月のみ) 独特のテーブルデータをご了承ください。 毎月、先月分、先々月分の2ヶ, ご回答ありがとうございます。 Excelの列方向へのコピーと同じような感覚でできないのでしょうか? Dim xlApp As Excel.Application