
タイトルの通り、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を使用しています。
お手数ですが、みなさんよろしくお願いします。
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
などのように記述します。
あとは、フォームのボタンをクリックすれば、一発で全部処理されます。
回答ありがとうございました。
極力VBAは使用したくないと思っていましたが、やはり
VBAを使うのが1番のようですね。
大変わかりやすく教えていただきありがとうございました。またよろしくお願いします。
No.3
- 回答日時:
>しかし、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ファイルをプログラム関係があまりわからない他の人にあげるのですが極力その人がいじれるようにシンプルに作りたいのですよ。
その人がいじれるように、というのはあきらめたほうがいいんでしょうか?
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
でインポート出来ます。
この回答への補足
VBAでの解決の仕方、解り易く回答頂きありがとうございます。
そのあとに他の処理をクエリで多数作成し、マクロで
実行させたいのですができればボタン1個1クリック
で、終わらせたいのです。なのでマクロのアプリケーションの実行
を使用したいのですが・・・。
私の考え以外でいい方法があるようでしたら
教えて頂けませんか?宜しくお願いします。
No.1
- 回答日時:
バッチファイルを実行する方法でいいのでしょうか?
Accessマクロでは試していませんが、"csv_copy.dat"ではなく、"csv_copy.bat"というファイル名に変えて、Shellコマンドで呼び出せば実行されるのではないでしょうか。
Excel2003のVBAでは動作確認できました。
ボタンクリックのイベントプロシージャで、
Shell "d:\csv_copy.bat"
を実行してみてください。
この回答への補足
早速の回答ありがとうございました。
補足ですが、"dat"と"bat"書き間違えました。すいません。
イベントプロシージャ=VBAですよね?
VBAでマクロを呼び出す方法がちょっと分からないので・・・。
よければ以前の質問のリンクでも結構ですので
教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordの文章をExcelに内容ごとに...
-
ACCESS でインポートフ...
-
VBA 複数のCSVファイルを一度...
-
【Access】クエリで抽出...
-
ACCESS2000のマクロについて質...
-
エクセル2000で65536行を超える...
-
ISOファイルとMDSファイル
-
【マクロ】変数に入れるコード...
-
ccdファイルはどのようにして使...
-
エクセルでファイル名が毎回違...
-
NASのフォルダが読み取り専用に...
-
イーファンビューでwebpファイ...
-
Word差し込み印刷、フォルダの...
-
差し込み印刷の元データファイ...
-
「パス名が無効です」の発生原因
-
生鮮MDシステムについて。
-
gccを行ってもexeファイルが生...
-
ACCESSでエラー
-
PDFの文書の一箇所だけ消すか、...
-
読み取り専用にチェックが入っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordの文章をExcelに内容ごとに...
-
【Access】クエリで抽出...
-
SQLSever 一括インポートについて
-
Excelのデータ(数字)をテキス...
-
多数のeml形式ファイルを1つの...
-
複数eml形式のBecky!への一括イ...
-
アクセス2007でのインポートエ...
-
notepad++ で作成した文書を cs...
-
Excelでhtml形式のテキストを表...
-
複数のメールファイルを1つの...
-
【AccessVBA】ダイアログで複数...
-
特定行の選択、抽出
-
列数が4000を超えるcsvファイル...
-
エクセル2000で65536行を超える...
-
アクセスで小数点以下1桁まで...
-
ACCESS複数テキストファイルを...
-
xls→csv→txtで住所が数値で読み...
-
数値を文字列として読み込ませ...
-
ダブルクォーテーション囲いカ...
-
アクセス(ACCESS) インポート...
おすすめ情報