• ベストアンサー

ACCESS2000のマクロについて質問です。

タイトルの通り、ACCESS2000のマクロで アプリケーションの実行で困っています。 ACCESSで作成したdb1.mdbでCSVファイルを取り込んで 加工したいと思っています。 しかし、CSVファイルがLAN内の他のPCにあるので 取り込みができませんでした。 そこで、CSV_COPY.DATというMS-DOSバッチファイル を作成して取り込み前に指定したフォルダにCSVファイルを コピーするというものを作りました。 できればdb1.mdbのフォームのボタンをクリック 1回で   1、CSV_COPY.DATの実行   2、マクロでCSVファイルのインポート    (多数のクエリで加工) を行いたいのでぜひ、アプリケーションの実行 のコマンドラインの指定について教えてください。 ちなみに、以前他の方が質問された内容・回答を 参考にして、   c:\windows\system32\cmd.exe"d:\csv_copy.dat" として試してみましたがだめでした。 ※windowsXPを使用しています。 お手数ですが、みなさんよろしくお願いします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

>そのあとに他の処理をクエリで多数作成し、マクロで >実行させたいのですができればボタン1個1クリック >で、終わらせたいのです。 フォームに「取り込み」と名前を付けたボタンを置いて、ボタンのプロパティの「クリック時」に「[イベントプロシージャ]」を指定します。 そして、その横の「…」ボタンを押すとVBAエディタが開くので Private Sub 取り込み_Click()   'インポートするテーブルを空にする   DoCmd.RunSQL "DELETE インポート先テーブル名.* FROM インポート先テーブル名;"   'インポート実行   DoCmd.TransferText acImportDelim, "インポート用定義名", "インポート先テーブル名", "\\PC名\共有フォルダ名\インポート元.csv", false   'インポート後のSQL処理   DoCmd.RunSQL "UPDATE (略);"   DoCmd.RunSQL "UPDATE (略);" End Sub などのように記述します。 あとは、フォームのボタンをクリックすれば、一発で全部処理されます。

katu115
質問者

お礼

回答ありがとうございました。 極力VBAは使用したくないと思っていましたが、やはり VBAを使うのが1番のようですね。 大変わかりやすく教えていただきありがとうございました。またよろしくお願いします。

その他の回答 (3)

回答No.3

>しかし、CSVファイルがLAN内の他のPCにあるので取り込みができませんでした。 どうしてなんでしょうね。共有フォルダに置いてあって、共有フォルダの権限を正しく設定していれば、他の PC 上のファイルでもできるハズですけどね。 >c:\windows\system32\cmd.exe"d:\csv_copy.dat" >として試してみましたがだめでした。 単に d:\csv_copy.bat とすると大丈夫だと思います。 >できればボタン1個1クリックで、終わらせたいのです。 >なのでマクロのアプリケーションの実行を使用したいのですが・・・。 VBAでもボタン1クリックでできますけどね・・・。 マクロでインポートは、アクション=「データベース変換」を選びます。アクション=「インポート」っていうのがないので、ちょっとわかりにくいですよね。

katu115
質問者

補足

ご協力ありがとうございます。 >どうしてなんでしょうね。共有フォルダに置いてあって、>共有フォルダの権限を正しく設定していれば、他の PC 上>のファイルでもできるハズですけどね。 私の場合、 \\PC_A\共有フォルダ\CSVファイル と記述して試してはみましたがだめでした。 >d:\csv_copy.bat >とすると大丈夫だと思います。 試してみたいと思います。 またVBAでも・・・とみなさん言われますが私自身以前VBを使ったことがあるのですがブランクがあってなかなかうまく使えないのと、作成したACCESSファイルをプログラム関係があまりわからない他の人にあげるのですが極力その人がいじれるようにシンプルに作りたいのですよ。 その人がいじれるように、というのはあきらめたほうがいいんでしょうか?

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>しかし、CSVファイルがLAN内の他のPCにあるので >取り込みができませんでした。 以下のようなインポートコマンドで取り込めませんか?   DoCmd.TransferText acImportDelim, "インポート用定義名", "インポート先テーブル名", "\\PC名\共有フォルダ名\インポート元.csv", false 例えば、csvがあるLAN内の他のPCのコンピュータ名が「PC-001」で、共有フォルダ「\c\temp\data\」に「import.csv」があるなら   DoCmd.TransferText acImportDelim, "インポート用定義名", "インポート先テーブル名", "\\PC-001\c\temp\data\import.csv", false でインポート出来ます。

katu115
質問者

補足

VBAでの解決の仕方、解り易く回答頂きありがとうございます。 そのあとに他の処理をクエリで多数作成し、マクロで 実行させたいのですができればボタン1個1クリック で、終わらせたいのです。なのでマクロのアプリケーションの実行 を使用したいのですが・・・。 私の考え以外でいい方法があるようでしたら 教えて頂けませんか?宜しくお願いします。

  • incho0922
  • ベストアンサー率41% (84/204)
回答No.1

バッチファイルを実行する方法でいいのでしょうか? Accessマクロでは試していませんが、"csv_copy.dat"ではなく、"csv_copy.bat"というファイル名に変えて、Shellコマンドで呼び出せば実行されるのではないでしょうか。 Excel2003のVBAでは動作確認できました。 ボタンクリックのイベントプロシージャで、 Shell "d:\csv_copy.bat" を実行してみてください。

katu115
質問者

補足

早速の回答ありがとうございました。 補足ですが、"dat"と"bat"書き間違えました。すいません。 イベントプロシージャ=VBAですよね? VBAでマクロを呼び出す方法がちょっと分からないので・・・。 よければ以前の質問のリンクでも結構ですので 教えていただけないでしょうか?

関連するQ&A

専門家に質問してみよう