• ベストアンサー

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

  • 各DBのaccessマクロを1回で実行したい

    教えてください・・・ 3つのDBでそれぞれマクロを作成しました。 マクロは「クエリの実行」を指定しているだけのものです。 これを1回の実行で流れるように連結させたいのですが、 どのようにすればよいのでしょうか? VBSでもVBAでも実行方法は問いません。 そしてmdbではなくaccdbです。 さっぱりわからなくなってきてしまいました・・・。スランプです(><) すみませんが、初心者レベルのご教示をお願いします・・・

  • Access2007のマクロ

    Access2003のファイルをAccess2007で開き2007のファイルに変換しました。 Access2003のホームからマクロでExcel2003のファイルを開くマクロを張ってあったのですがAccess2003のマクロにあった「アプリケーションの実行」という項目がAccess2007では無くなっていました。 「アプリケーションの実行」という項目に変わる項目は何というのでしょうか。 よろしくお願いします。

  • VB6.0からAccess2007のマクロを呼び出す方法について

    VB6.0からAccess2007のマクロを呼び出す方法について教えてください。 [vb6.0のソース] Private Sub ImportFile() Dim AccessMacro As Access.Application Set AccessMacro = GetObject("C:\test.mdb") AccessMacro.Run "Import" end Sub [test.mdbのマクロ] Public Sub Import() DoCmd.TransferText acImportDelim, "test インポート定義", "test", "C:\test.csv", False end Sub 上記の物を、XP+Access2003+VB6.0の環境でコンパイルし、Access2000が入っている環境で実行したところ、問題なくtest.mdbのマクロが実行できました。 (コンパイルした環境でも問題なく動作しました。) ところがこれをWin2003 + Access2007環境で実行したところ、 『実行時エラー 432 オートメーションの操作中にファイル名またはクラス名をみつけられませんでした。』 と表示されます。 おそらく、GetObject("C:\test.mdb")のところでエラーになっているものと思われるのですが、どのようにすれば原因が解消できるかが全くわかりません。 どなたがご教示ください。 よろしくお願いいたします。

  • Accessのマクロでモジュールを実行させたい。

    Access2002を勉強中の初心者です。 AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。 マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。 しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」 根本的に方法が間違っているのでしょうか? アドバイスをよろしくお願いします。

  • VBからAccessのマクロを動かしたい(最適化したい)

    開発環境=NT4SP4 VB5 Access97 VBからMDBファイルを最適化するプログラムを作成しているのですが、 現在わかっているやり方は 最適化したファイルを作る→最適化元ファイルを削除→最適化後ファイルのファイル名を元ファイル名に直す。 という手順を踏んでいるのです。 これをAccessのマクロならば上記の手順のようにファイル削除したりしなくても 最適化が行えるそうなのです。 そこでVBからAccessのマクロを実行する方法がわからなくて困っているのです。 よろしくお願いいたします。

  • Access2000でAutoExecマクロを使用しています。マクロの

    Access2000でAutoExecマクロを使用しています。マクロの条件にCommand()=""の時にアクションを実行するようにしています。 Access2000では問題ないのですが、このファイルをAccess2007で起動した場合、以下のメッセージが表示されて起動できません。 「指定した式に、microsoft office accessが見つけることができない関数名が含まれています。」 ちなみにファイル形式はmdbのままです。 以上、宜しくお願いします。

  • エクセルVBAからアクセスを起動させたい、他1点

    いつもお世話になります。お聞きしたいことが2点あります。 1点目 「エクセルで作成したリストをCSVファイルで指定の場所に保存し、MDBファイルを起動してそのCSVファイルを取り込み、アクセス内で処理をした後、さらにCSVファイルを出力したい」と思っております。アクセスを使えない人の為に、エクセル上でマクロのボタンを起動すると、以上のことを全て行うようにしたいのですが、MDBファイルを開こうとした時に、 "EXCELから直接ACCESSのMDBファイルを開くことはできません・・・" のメッセージが出て、実行できませんでした。 何らかの解決方法はありますでしょうか? 2点目 CSVファイルを保存の際に、 D = Range("B3").CurrentRegion.Rows.Count + 2 Range("B4:I" & D).Copy Workbooks.Add ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:="C:\list.csv", FileFormat _ :=xlCSV, CreateBackup:=False ActiveWindow.Close としているのですが、 "この場所にC:\list.csvという名前のファイル名が既に存在します。置換えますか?"と、閉じる際に、"list.csvへの変更を保存しますか?"のメッセージが出てきますが、これを表示しないようにするにはどうすれば良いのでしょうか?

  • Accessのマクロにパラメータを渡したい!

    AccessのマクロでCSVファイルのインポートをしているんですが、このときのCSVファイル名をパラメータでVBAから指定する方法を知っていたら教えてくださいっ。

  • EXCELのマクロで外部データの取り込み

    CSVファイルを「外部データの取り込み」でシートに読み込むマクロを自動記録で作成したのですが取り込むファイル名が毎回違うのでそのマクロを使うことができません。そこでファイルリストのダイアログからパスとファイル名を指定して実行できる様にしたいのです。良い方法が有りましたらご伝授をお願いします。 ちなみにCSVファイルはネットワークドライブ上にあります。

  • マクロが実行できません

    マクロを実行すると以下のエラーが表示されます --------------------------------------- 実行時エラー'1004': マクロ一覧作成.xlsm'!日付取り込み"を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 --------------------------------------- 「デバッグ」をクリックすると、以下の箇所が黄色でハイライトされます。 --------------------------------------- Sub まとめて実行() Application.Run "'一覧作成.xlsm'!data00取り込み" Application.Run "'一覧作成.xlsm'!data01取り込み" Application.Run "'一覧作成.xlsm'!data02取り込み" Application.Run "'一覧作成.xlsm'!data03取り込み" Application.Run "'一覧作成.xlsm'!data04取り込み" Application.Run "'一覧作成.xlsm'!data05取り込み" Application.Run "'一覧作成.xlsm'!data06取り込み" Application.Run "'一覧作成.xlsm'!data07取り込み" Application.Run "'一覧作成.xlsm'!data08取り込み" Application.Run "'一覧作成.xlsm'!data09取り込み" Application.Run "'一覧作成.xlsm'!data10取り込み" Application.Run "'一覧作成.xlsm'!data11取り込み" Application.Run "'一覧作成.xlsm'!data12取り込み" Application.Run "'一覧作成.xlsm'!data13取り込み" Application.Run "'一覧作成.xlsm'!data14取り込み" Application.Run "'一覧作成.xlsm'!data15取り込み" Application.Run "'一覧作成.xlsm'!data16取り込み" Application.Run "'一覧作成.xlsm'!data17取り込み" Application.Run "'一覧作成.xlsm'!data18取り込み" Application.Run "'一覧作成.xlsm'!data19取り込み" Application.Run "'一覧作成.xlsm'!data20取り込み" Application.Run "'一覧作成.xlsm'!日付取り込み"    <-----ここが黄色になります Range("a265").Select End Sub --------------------------------------- 黄色でハイライトされたマクロの中身は以下の通りです。 --------------------------------------- Sub 日付取り込み() ' Sheets("data00").Select Range("a2:a400").Select Selection.Copy Sheets("一覧").Select Range("a4").Select ActiveSheet.Paste Application.CutCopyMode = False Range("a258").Select End Sub --------------------------------------- 他のマクロ(「一覧作成.xlsm'!data01取り込み」など)は実行できるのに、最後の 「一覧作成.xlsm'!日付取り込み」のところでエラーになるようですが、どうして エラーになるのか分かりません。どうか教えていただけないでしょうか。 よろしくお願いいたします。

専門家に質問してみよう