• ベストアンサー

エクセル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への変更を保存しますか?"のメッセージが出てきますが、これを表示しないようにするにはどうすれば良いのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>CSVファイルを出力したい オオボケしていなければ、こんな所になるかな? 実際に合わせて、ファイル名、テーブル名など変更してください。なお、参照設定は必要です。CreateObjectですと、すごく重くなります。 Sub AccessCSvOut() '要参照設定:Microsoft Access xx Object Library Dim appAcc As Access.Application Dim myFname As String Set appAcc = New Access.Application myFname = "C:\db1.mdb" With appAcc  .OpenCurrentDatabase myFname, False  .DoCmd.TransferText acExportDelim, , "テストテーブル", "C:\db2.CSV", False  .Quit End With Set appAcc = Nothing End Sub

7-samurai
質問者

お礼

モジュールにコピー&ペーストで完璧に動きました。 ありがとうございました。

その他の回答 (2)

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.2

Access叩くだけでいいかなと思ったんですが、 >マクロのボタンを起動すると、以上のことを全て行うようにしたいのですが とのことですので、COMにてアクセスを操作する方法を覚えて下さい もう1つのAccessデータベースを開く方法(COM版) http://www.tsware.jp/tips/tips_179.htm

7-samurai
質問者

お礼

ありがとうございます。 COMなんて言葉を聞くのも初めてだったので、大変参考になりました。

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.1

1. >MDBファイルを開こうとした時に どのように開いているのですか? 2. Applicationオブジェクトの「DisplayAlerts」プロパティにて、メッセージの抑制ができます

7-samurai
質問者

補足

1、Workbooks.Open Filename:="C:\db1.mdb", Notify:=False としています。 2、いただきましたお答えで問題解決しました。 ありがとうございました。

関連するQ&A