重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

タイトルの通り、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を使用しています。

お手数ですが、みなさんよろしくお願いします。

A 回答 (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

などのように記述します。

あとは、フォームのボタンをクリックすれば、一発で全部処理されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/04 09:01

>しかし、CSVファイルがLAN内の他のPCにあるので取り込みができませんでした。


どうしてなんでしょうね。共有フォルダに置いてあって、共有フォルダの権限を正しく設定していれば、他の PC 上のファイルでもできるハズですけどね。

>c:\windows\system32\cmd.exe"d:\csv_copy.dat"
>として試してみましたがだめでした。
単に
d:\csv_copy.bat
とすると大丈夫だと思います。

>できればボタン1個1クリックで、終わらせたいのです。
>なのでマクロのアプリケーションの実行を使用したいのですが・・・。
VBAでもボタン1クリックでできますけどね・・・。
マクロでインポートは、アクション=「データベース変換」を選びます。アクション=「インポート」っていうのがないので、ちょっとわかりにくいですよね。

この回答への補足

ご協力ありがとうございます。

>どうしてなんでしょうね。共有フォルダに置いてあって、>共有フォルダの権限を正しく設定していれば、他の PC 上>のファイルでもできるハズですけどね。
私の場合、
\\PC_A\共有フォルダ\CSVファイル
と記述して試してはみましたがだめでした。

>d:\csv_copy.bat
>とすると大丈夫だと思います。
試してみたいと思います。

またVBAでも・・・とみなさん言われますが私自身以前VBを使ったことがあるのですがブランクがあってなかなかうまく使えないのと、作成したACCESSファイルをプログラム関係があまりわからない他の人にあげるのですが極力その人がいじれるようにシンプルに作りたいのですよ。
その人がいじれるように、というのはあきらめたほうがいいんでしょうか?

補足日時:2004/02/04 08:37
    • good
    • 0

>しかし、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

でインポート出来ます。

この回答への補足

VBAでの解決の仕方、解り易く回答頂きありがとうございます。

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

補足日時:2004/02/03 13:56
    • good
    • 0

バッチファイルを実行する方法でいいのでしょうか?


Accessマクロでは試していませんが、"csv_copy.dat"ではなく、"csv_copy.bat"というファイル名に変えて、Shellコマンドで呼び出せば実行されるのではないでしょうか。
Excel2003のVBAでは動作確認できました。

ボタンクリックのイベントプロシージャで、
Shell "d:\csv_copy.bat"
を実行してみてください。

この回答への補足

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

補足日時:2004/02/03 13:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!