• ベストアンサー

ACCESS テーブルに2行目から取り込む方法

Access2013で、 指定の場所に置いてあるCSVファイルに対して、 「リンクテーブルを作成してソースデータにリンクする」設定にてテーブルを作成し、 このCSVファイルが更新されても最新の状態にてレポートを出力できるようにしています。 しかしこのCSVデータが作成される仕様により、1行目に余計な文字列、2行目に項目名、3行目以降にデータが入っているため、毎回CSVデータの1行目を削除する手作業が発生しています。 2行目以降をリンクするようにするとか、テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

>2行目以降をリンクするようにするとか、 >テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか? D:\ナントカ\コントカ\オリジナル.csv に余計な一行があったとして下記のコードを標準モジュールに作成し Sub LineCut1() Dim fSo As Object Dim buf As Variant Dim f As Object Set fSo = CreateObject("Scripting.FileSystemObject") With fSo.GetFile("D:\ナントカ\コントカ\オリジナル.csv").OpenAsTextStream .SkipLine buf = .readall .Close End With Set f = fSo.OpenTextFile("D:\ナントカ\コントカ\オリジナル_改.csv", 2, True) f.Write buf f.Close End Sub 出来た"D:\ナントカ\コントカ\オリジナル_改.csv"をリンクテーブルとさせればよいのでは? オリジナル.csv が更新される都度実行する必要がありますが >2行目以降をリンクするようにするとか、 CSVのようなテキストファイルでは無いかと。 >テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか? 一旦取り込んでからだとデータ型の変更などが必要になりそうなので 厄介です。 オリジナル.csv の使われ方がイマイチ不明なのですが 上記のSub LineCut1() を、 Function LineCut1() に改名して autoexec マクロに プロシージャの実行に、LineCut1() としても良いかもですね。

その他の回答 (1)

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>2行目以降をリンクするようにするとか、テーブルの3行目以降を取り出すクエリとか方法はありませんでしょうか? Accessのことはほとんど忘れたので、何とも言えませんが、現在の取り込みのプログラム見ないと何とも言えません。 容易に考えるなら、ループ処理かけて取り込む。処理だったりするなら、1回目のループ飛ばせばいい。 とかなんですが、現状の構成が分からないとなんとも。 >>毎回CSVデータの1行目を削除する手作業が発生しています。 まぁ、でも、手作業が許されてるなら、わざわざ、今動いてるプログラムいじって、 「動かなくなる可能性」というリスクを背負う意味がない。 「CSVデータの一行目を削除する」という、バッチ処理でも、スクリプト作成して、実行するほうが、よっぽど楽かな。と思いますよ。

関連するQ&A

  • Accessでテーブルやクエリのリストを作りたい。

    テーブルが100、クエリが200ほどあるデータベースを使用してます。そのほかにレポート、フォーム、マクロもそこそこあります。これらのテーブル名やクエリ名の一覧表を作成したいのですがどうすればいいでしょうか。出力はファイル(たとえばExcelなど)でもプリントアウトでもかまいません。初心者なのでできるだけ簡単方法を教えていただければ助かります。よろしくお願いします。

  • Access のリンクテーブルについて

    よろしくお願い致します。 Access側から外部テーブルを参照したリンクテーブルを作成しました。 しかしそのテーブルを開くのにはすごく時間がかかり、時にAccessが応答なしの状態になったりします。 そこで、ためしにテーブル作成クエリでリンクテーブルのデータと同じデータをもつテーブルを作成しました。 すると、そのクエリで作成したテーブルからの操作はスムーズに行われました。リンクテーブルとはデータ量も同じなのにこのように重さの違いがでるのはなぜなのでしょうか? Accessを使いはじめたばかりで、裏ではどのようになっているのかよくわからずパフォーマンスのあげ方に四苦八苦しております。 アドバイスをよろしくお願いします。

  • ACCESS2013 データのエクスポート方法

    ACCESS2013を使用しています。(初心者) テーブルデータをCSVファイル形式で出力する際、1,2行目にタイトル等を入れ、3行目からテーブルデータを出力したいと考えています。 方法が見つからないため、どうすればできるのか教えてください。

  • accessのレポートの詳細セクションに行番号を印字したい。 

    こんにちわ。 いまaccess2000でレポートを作成しています。 レポートのコントロールソースとなっている テーブル/クエリーのカラムを使用せずに, レポートの詳細セクションに[行番号]を印字するには どうすれば良いでしょうか? 教えてください。お願いします。

  • accessでテーブルのリンクでクエリに反映させる方法を教えてください

    accessでテーブルのリンクでクエリに反映させる方法を教えてください。 現在2つのエクセルデータを比較するクエリを作成したのですが、 比較するデータが大量にあり、テーブルのリンクでクエリに反映させたいのですが、 うまくいきません。 よろしくお願いします。

  • VBでCSVファイルを取り込み、Accessに格納する方法

    VBから、csvファイルを取り込んで、Accessのテーブルに格納したいので すが、Input# でうまくいきません。 csvファイルは、基本的に,区切りですが 1)値の両端を"でくくる。 2)値として"がある場合は、""に変換する。 という仕様です。(ExcelでCSVファイルを作るときと同じ) 3)先頭13列が、上記のような仕様   さらに14列目から290列目までは数値データで、値を""でくくらない。 データ例として、 "aaa","""値""",""",,","""値2,,""","bbb",・・・"ccc",0,1,2,・・・,276 === ====== ==== ========== === === = = = ===  1 2 3 4 5 13 141516 290 1の値:aaa 2の値:"値"," 3の値:",, 4の値:"値2,," 5の値:bbb としてテーブルに取り込みたいです。 Access2000では、255列以上は取り込めないため、 14列目以降の値を9個ずつ別レコードに分けています。 つまり、22列のテーブルにレコード化しています。 レコード1:列1~13の値+列14~22の値 レコード2:列1~13の値+列23~31の値 ・・・ 255列の制限は仕方ないとしても、上記のようなCSVファイルを VBでAccessテーブルに取り込む良い方法を教えてください。

  • Access2003からピボットテーブルの作成

    ACCESSのVBAでピボットテーブルを作成する方法がわかりません。 ACCESSで作成したクエリをそのままデータソースに使用して EXCELの新しいWORKBOOKに出力したいと思っています。 どんな方法でもいいので知っている方がいれば教えていただきたいです。

  • ACCESS(アクセス)2003→2010について

    最近ACCESS(アクセス)2010に変えたのですが、 ACCESS2003で作成したクエリについて、まれに正常にデータのエクスポートができません。 テーブルデータは、Excel2003で作成したデータをリンクテーブルとし、 同様の形式を複数組み合わせて出力させています。 もちろん、ACCESS2003では正常に出力されます。 ▽解決方法をどなたかおしえていただけませんでしょうか?

  • Accessで、複数のテーブルからデータを繋げたい

    ■テーブル1 2011年データ 行:名前 列:年月日 201101~201112 行:商品名 値:件数 ■テーブル2 2010年データ 行:名前 列:年月日 201001~201012 行:商品名 値:件数 となっております。 列を伸ばして、201001~201112までのデータにしたいのですが クエリの組み方が不明です。 ネットでサーチはしたのですが、該当のものが出てこず、良ければ教えて下さい!

  • エクセル複数シートをアクセスで1つのテーブルに。

    エクセルのシートで1000行程度のものが5シートあります。それぞれは数字列に文字が入っている行もあってエクセルでの必要データ抽出に手間がかかってしまいます。「エクセル5シートをアクセスでリンクさせクエリで特定文字行を削除し、テーブル構造が整ったところでテーブル作成を行う」までをアクセスで自動化したいと思っています。アクセス側でエクセル5シートを一括して合体させる事は出来ないものでしょうか?宜しくお願い致します。

専門家に質問してみよう