質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

943閲覧

Access VBAでのファイル取込について

syncrock

総合スコア209

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2017/08/04 05:42

現在AccessのVBAにてファイル取込を実装しています。

vb

1 '未使用のファイル番号を取得 2 inFileNum = FreeFile 3 4 'fileNameのファイルを開く 5 Open fileName For Input Access Read As inFileNum 6 Set db = CurrentDb 7 8 ' ファイルオープン 9 Do Until EOF(inFileNum) 10 11 Input #inFileNum, in_item1. in_item2・・・・・・・ 12 13 ' データの登録 14 sql = "INSERT INTO TEST_TABLE・・・・・" 'インサート文 15 objDB.ExecSQL sql 16 17 Loop

のような形で行ってます。
中身省略してますが、純粋にインポートではなく少し値を編集、追加する必要があるので、
ファイルを開いてインサート文で登録という形にしています。

そこでお伺いしたいのですが、ファイルの項目数が多くすごく長ったらしくなってしまいます。
インサート文は仕方ないかもしれませんが、
「Input #inFileNum, in_item1. in_item2・・・・・・・」
の部分だけでもなんとかならないものでしょうか。
もしくは、やりたいこととしては「ファイルの中身を編集して登録」です。
それさえ満たしていればどのようなやり方でも良いですので、
スマートな方法があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

  1. Docmd.TransferText acLinkDelim, ・・・ で、リンクテーブルとして取り込む。

  2. このリンクテーブルを元に追加クエリ(INSERT INTO ・・SELECT)を生成する。

  3. 追加クエリを実行する。

  4. リンクテーブルを削除する。

以上でどうでしょうか。

ループする必用もなく、追加クエリを一度実行するだけです。

DoCmd.TransferText acLinkDelim, , "TEMP_TABLE", Filename, True SQL = "INSERT INTO TEST_TABLE " & _ "SELECT ・・・・・ " & _ " FROM TEMP_TABLE" objDB.Exec SQL DoCmd.DeleteObject acTable, "TEMP_TABLE" End Sub

投稿2017/08/04 12:28

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syncrock

2017/08/07 06:03

回答ありがとうございます。 なるほど、これは使えそうです・・・。 編集内容で出来るかどうかもあるので試してみたいと思います!
guest

0

ベストアンサー

編集内容によると思いますが、
編集内容が単純な置換などであるのであれば、

  • テキストファイルから1行読み込み
  • 読み込んだ1行のテキストをvbaコードにより編集
  • テキストファイルに出力
  • DoCmd.TransferText でインポート

という方法はどうでしょうか?

投稿2017/08/04 05:55

koguma98

総合スコア288

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syncrock

2017/08/04 06:52

回答ありがとうございます。 ユーザの作業を増やしたくないので、 出来ればボタン一つの処理でやってしまいたいと思っています。 そのような実現方法しかないですかね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問