• ベストアンサー

ACCESSからExcelのVBAを動かしたい。

ACCESSからExcelのVBAを動かしたいのですが・・・。 何か、いい方法はありますか?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3>特別問題ないと思います。 End Ifが対応してないのは、多分誤記で Set exl = Nothingする前に 開いたファイルは、閉じるべきで あと、それより重要なのが exl.Quitしてやらないとエクセルが立ち上がったままになる というのはありますが。 アクティブワークブックとか、 そういうのは、 多分、formVBAでみんなやってるんでしょうから

kaekaekaede
質問者

お礼

度々有難うございます。 exl.Quitも入れておかないとまずいですね。 また、何かありましたら、ご指導宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

エクセルでエクスポートしてもそのVBAの部分ができるわけではないので、 何かと面倒な気がします。 むしろ、エクセルからアクセスの加工データを取り込んではどうでしょう? そうすれば、あらかじめエクセルVBAを書いておけますし。 私、ちょっと勘違いしてますか? そういう決まったエクセルが既にあって、 そこから取り込みなどをするプロシジャーがあって 単にそのプロシジャーを実行したいだけなのでしょうか?

kaekaekaede
質問者

補足

返信有難うございます。補足させていただきます。 ACCESSのクエリーを名前を指定し、エクスポートする(Excel形式で)。あらかじめ、VBAを書いたExcelファイルを用意しておき、エクスポートデータを基に、アウトプットを作成する。のような感じにしたいのです。 ・フォームで作成ボタンを用意し、クリックした時、処理をさせる。 ・ACCESSのマクロ(クエリーエクスポート)を用意しておき、エクスポートさせる。 ・VBAを書いたExcelファイル(フォーム.XLS)を開き、formVBAを実行させる。 一応、自分なりに考えてみたんですけど。エラーもなく、動くんですけど、これで大丈夫なのでしょうか? Private Sub コマンド1_Click() Dim exl As Object DoCmd.RunMacro "クエリーエクスポート" Set exl = CreateObject("Excel.application") Set bk = exl.workbooks.Open("C:\フォーム.xls") exl.Visible = True exl.Run "formVBA" Set exl = Nothing End If End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>いい方法はありますか? 良い方法(特別に知恵が要る方法、裏技などが必要な方法)なんて要る問題では無いと思います。解説書やWEBに当たれば、良く解説してある処理です。私も寄せ集めで下記を作って見ました。参考になれば。 実行するとアクセスのテーブルをエクセルから(処理を入れてないので、そのまま)印刷します。 PrintOutの前にエクセルVBAの処理を、エクセルVBAのつもりで書いて、VBAコードを入れてください。 ただオブジェクトを頭につけ無いとなりません。 Sub test01() Dim strFilePath As String 'エクスポート先ファイル名を設定 strFilePath = "C:\My Documents\箇所1.txt" x = Dir(strFilePath) If x <> "" Then Kill strFilePath End If 'エクスポートを実行 DoCmd.TransferText acExportDelim, , "箇所1", strFilePath, True Set xlapp = CreateObject("Excel.Application") xlapp.Visible = True Workbooks.OpenText Filename:=strFilePath, StartRow:=1, _ DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _ :=False, Tab:=True, Semicolon:=False, Comma:=True, Space:=False, _ Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), _ Array(5, 1)) ActiveWindow.SelectedSheets.PrintOut Copies:=1 'Set xlbk = xlapp.workbooks("Book1") Set xlbk = xlapp.activeworkbook 'Set xlsh = xlbk.Sheets("sheet1") Set xlsh = xlbk.activesheet Set xlapp = Nothing Set xlbk = Nothing Set xlsh = Nothing End Sub アクセスのモジュールに貼りつけます。 VBE画面のツール-参照設定-MicrosoftExcel9.0ObjectLibraryなどをチェックを入れる必要があるようです。 C:\My Documents\箇所1.txtのフォルダ名を適当に変えること。 「箇所1」はアクセスのテーブル名と同じにしてます。 別の行のテーブル名の「箇所1」も自分に合わせて変えること。 小数例でテスト済み。

kaekaekaede
質問者

お礼

有難うございました。 自分でも、調べてみて解決する事ができました。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

確か、今までの質問の中に有ったような気がします。 どんな処理をするのでしょうか?

kaekaekaede
質問者

補足

ACCESSで加工したデータを基に、ExcelのVBAを実行したいのです。今は、ACCESS加工データをエクスポートし、Excelを開き、ExcelのVBAを実行しております(アウトプットのフォームをExcelで作成しているため)。 その過程が、面倒なので、エクスポート&Excel VBA実行をACCESS側から行いたいと考えています。 説明が下手ですみません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAとアクセスはどちらが難しいのでしょうか?

    その人の感覚にもよるかとは思いますが エクセルVBAとアクセスはどちらが難しいのでしょうか? あとVBAは英語が出来ないと無理でしょうか? よろしくお願いします。

  • EXCELのVBAを用いたACCESSのデータベース操作の本について

    VBAの初心者です。 EXCELのシート上にあるデータをACCESSのデータベースに蓄積したり、ACCESSのデータベースからEXCELにデータを飛ばして加工したりしたいと考えています。できれば、ACCESSにVBAを記述するのではなく、EXCELにVBAを記述し、データの蓄積などをEXCELから行う方法を勉強したいのです。 自分が本屋で見た限りでは、ACCESSにVBAを記述する方法であれば様々な本が出版されているのですが、EXCELに記述する方法が書いてある本が見当たりません(たくさんあるのかも知れませんが)。皆様お勧めの分本を教えてください。 なお、自宅でEXCEL2000とACCESS2000、会社でEXCEL97とACCESS97を使っていますので、どちらでもいける本がいいです。 よろしくお願いします。

  • エクセルvbaかアクセスのvbaで開発予定

    エクセルvbaかアクセスのvbaで開発予定 お疲れ様です。 検索システムを作る予定です。 セルをクリックした時に、詳細画面を表示させたい のですが、データはアクセスから取得したいと 考えています。 もしそのようなシステムを作るとしたら、 エクセルvba + アクセス の組み合わせか、 又は、 アクセスのvba + エクセル、 どちらでも開発可能になるのでしょうか? 又、どちらでも開発可能な場合、 どちらの組み合わせが 上記のシステムの開発に 向いているのでしょうか? よろしくお願いします。

  • accessでexcelのVBAを実行

    excelのファイルにはVBAは一切入れないで、accessにexcelで使いたいVBA入力しておき実行したいのです。 理由はCSVファイルをVBAにて加工したいからです。 よろしくお願い致します。

  • アクセス2003・VBA

    アクセス2003を使っています。 アクセスのVBAを使って下記のやり方を教えて下さい。 (1)ファイル名を指定して、エクセルファイルを開く。 (VBA構文上でファイル名を入力し、固定するのではなく、そのVBAを実行すると、ファイルをダイアログで選択する方法です。) (2)その開いたファイルで2行目からデータが入っている行までをコピーし、そのVBAを実行しているアクセスファイルの特定のテーブルに貼り付ける。 上記の方法がお分かりの方、是非教えて下さい。 よろしくお願いします。

  • ACCESS VBAで、エクセルファイルの更新

    ACCESS VBAで、エクセルファイルの更新を行いたいのですが、方法を教えてください。 エクセルで書式や集計の計算式を作成し、データ部のみACCESSで集計した値を置き換える方法を教えてください。

  • Excel VBAからAccessマクロを実行したい

    Excel VBAからAccessマクロを実行する方法を知っている人がいましたら 教えてください。 よろしくおねがいしまっす!

  • Access VBA実行中にエクセルが開かない

    すみません、お世話になります。 Access VBA初心者なので言葉足らずかも知れません。 申し訳ありません。 Access VBAで画面からDBの値を抽出して画面に表示、 プログラム上でその表示データをエクセル出力するというものを 作成しています。 エクセルは新しいブックを作成してデスクトップに貼り付けるように 指定しています。 エクセ出力後、Accessを終了せずに作成したエクセルを開こうとすると エクセルが最後まで表示できません。 Accessを終了するとエクセルはちゃんと表示されます。 何かAccessのほうで設定しなくてはいけないのでしょうか? それともプログラムで制御しなくてはいけないのでしょうか? まったく想像がつきません。 よろしくお願いします。

  • Excel VBA Accessでデータ取り込み

    Excel VBA、Access VBAについてお教え下さい。 「My_Excel.xlsm」というファイルがあります。このファイルにはボタンが1つあります。 このボタンを押すことにより、「Imp_Excel.xlsx」というファイルを取り込みたいと思います。 取り込み先ですが、「My_Excel.xlsm」に取込むのではなく、Accessの「My_Access.accdb」の「T_MyTable」というテーブルに取り込みたいと思っています。 Accessから直に「Imp_Excel.xlsx」をインポートするには、TransferSpreadsheetを用いれば比較的簡単にデータをAccessに取り込むことができるのですが、「My_Excel.xlsm」をまたいでAccessに取り込みたいので、TransferSpreadsheetは使えません。 やり方としては、 My_Excel.xlsxを開く。 レコードセット取得。 レコードセットがEOFになるまでまわして、SQLのINSERT、またはAddNewメソッドを使用して1件1件挿入していくしか方法はないでしょうか? 今のところ、私が思い浮かぶのは上記の方法なのですが、何かもっと簡単にやれるような方法はあるでしょうか?よろしくお願いします。

  • エクセルVBAでアクセスファイルを開く方法

    いろいろ検索してコピペ等でやってみてもだめでした。 エクセルVBAで、エクセルファイルやEXEファイルを開く方法は簡単なのに、 アクセスファイルの開き方がわかりません。 ただ開くだけなのですが、簡単な記述の仕方はありませんか?

専門家に質問してみよう