AccessとExcelの連携方法についての質問

このQ&Aのポイント
  • AccessとExcelを連携させる方法について質問です。
  • Accessでボタンを押すとExcelの指定ファイルを印刷し、Excelは終了させずにAccessの作業を続けたい場合、どうすれば良いか教えてください。
  • 具体的には、AccessのVBAコードで指定ファイルを開いて印刷し、その後はExcelを終了せずにAccessの作業を行いたいと考えています。
回答を見る
  • ベストアンサー

Access、Excel ともに2003 を使用しています。

Access、Excel ともに2003 を使用しています。 Access で Excel を動かすことでの質問です。 まず「やりたいこと」を箇条書きにします。 (1)Accessのボタンを押すと以下の作業をする。 (2)Excel の ●●.xls を印刷する。   (但し、この時 Excel の画面は表示しない) (3)その ●●.xls は保存せずに終了する この間、画面は常にAccessが開かれた状態 これを Access側で次のように書きました。 Private sub ボタン_Click() strfile = CurrentProject.Path & "\●●.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible=false ActiveSheet.PrintOut ActiveWorkbook.Saved = True Application.Quit End Sub こうすると、最後の「Application.Quit」でExcel も Access も 共に終了してしまいます。 Excel だけを終了させて、Access は引き続き次の作業に入るには どうすればよいのでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

参考になれば Private Sub コマンド3_Click() MsgBox CurrentProject.Path strfile = CurrentProject.Path & "\XXXX.xls" Set Appexcel = CreateObject("Excel.Application") Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = False 'Appexcel.Visible = True wb.Sheets("Sheet1").range("A1:C10").PrintOut wb.Close Appexcel.Quit End Sub これで印刷もし、エクセルで上記を開くと普通に開きました。 wb.Closeを入れていないで、テストで実行した時期があったのでタスクマネジャーでエクセルを終了し やってみると「ファイルは編集のためロックされています」が出なくなった。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

提示されたコードには変数の宣言などが抜けているので コンパイルエラーが出ます。また、プロセスが残り いろいろ困ることが起きます。Excelが起動されていない 状態でタスクマネージャを起動し、Excel EXE が タスクマネージャのタスクにプロセスに表示されていないか 確認してください。表示されていたらExcel EXE を選択し プロセスを終了してください。 また、コード表のツールから参照設定を見て、 Microsoft Excel xx Object Library にチェックが入っているか確認してください。xx は数字です。 一般的には以下のような感じでExcelファイルにアクセスして 作業をします。 Private Sub コマンド1_Click() Dim objExcel As Excel.Application Dim wkb As Excel.Workbook Dim wks As Excel.Worksheet Set objExcel = CreateObject("Excel.Application") Set wkb = objExcel.Workbooks.Open(Filename:=CurrentProject.Path & "\●●.xls") objExcel.ActiveWorkbook.Sheets("Sheet1").Name = "Sheet1" 'ここに作業目的のコードを入れる '以下はオブジェクトの破棄 wkb.Save wkb.Close Set wkb = Nothing Set wks = Nothing End Sub

  • szk9998
  • ベストアンサー率45% (1024/2232)
回答No.1

Application.Quit の代わりに、 ActiveWorkbook.close でExcelだけ閉じますが、どうでしょう?

Star-X
質問者

補足

やってみましたが、  コンパイルエラー  変数が定義されていません となって、うまくいきませんでした。

関連するQ&A

  • AccessからExcelが開かない

    Access2000 の●●mdb から Excel2007 のAAA.xls を開こうとしますが オートメーションエラー(サーバーによって例外が返されました) が表示され開きません。 ●●mdb と AAA.xls は同じフォルダーに入れてます。 Accessの「参照設定」では、   Microsoft Excel 12.0 Object Library を選んでます。 ボタン(Cmd1)を押して表示させたいので Private Sub Cmd1_Click() Dim Appexcel As New Excel.Application Dim wb As Excel.Workbook Dim strfile As String strfile = CurrentProject.Path & "\AAA.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True End Sub のように書いてますが、どうもうまく開いてくれません。 どうすれば表示させることができますか。

  • Excel の結果を Access へ移行したい

    Access および Excel 共に2003を使っています。 Access側からExcelを呼び出して、Excel にAccess のデータ(数字)を書き込みます。 Excel側で計算処理をして、「戻る」のボタン(別途作成)を押せば その計算結果を元のAccess のテキストボックスに書き込みたいと思います。 Access側からExcelへは問題なくデータ表示ができ、計算処理もできるのですが、 Access側に計算結果の移行ができません。 どうしたらよいか教えていただけませんか。 ちなみにAccess から Excel の移動は次のようにやっています。 strfile = CurrentProject.Path & "\○○.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True

  • AccessからExcelのVBAを動かしたい

    2002です。 Excel_A.xlsからExcel_B.xlsのFromAccessプロシージャを実行する場合、 Application.Run "'" & ActiveWorkbook.Path & "\Excel_B.xls'!FromAccess" でいけたのですが、、、 Access_A.mdbから次のようにやると Application.Run "'" & CurrentProject.Path & "\Excel_B.xls'!FromAccess" エラーになります。 それで、次のようにやってみたら動いたのですが、FromAccessが一気に終了して しまい、デバッグできません。 Dim myExcel As Object Set myExcel = CreateObject("Excel.Application") Set myExcel = GetObject(CurrentProject.Path & "\Excel_B.xls", "Excel.Sheet") myExcel.Application.Visible = True myExcel.Application.UserControl = True myExcel.windows(1).Visible = True myExcel.Application.Run "FromAccess" デバッグしながら、AccessからExcelのプロシージャを実行するにはどうしたらいいのでしょうか?

  • Excel と Access または、Access と Excel との連携処理

    (1)(初期処理として)、Excel(1.xls)よりアイテムセットしたパラメータ(起動するAccessのパス名)でAccess(A.mdb)を起動する。 (2)Access(A.mdb)の自動処理が終わると、次に起動させるAccess(B.mdb)のパスパラメータをExcel(1.xls)に渡し、Access(A.mdb)を終了する。 (3)パラメータを受け取ったExcel(1.xls)は、Access(B.mdb)を起動し、処理をする。 (1)より開始して、(2)(3)の繰り返し出来る方法を教えてください。 よろしくお願いします。

  • アクセス2000で困ってます!教えて下さい!!

    アクセス2000を使用しています。 プログラム内より エクセル95を起動し、データを取得後、エクセルを閉じる・・ という単純な作業をしてますが、 エクセルを閉じるときに、「変更を保存しますか?」のメッセージが 出力されてしまいます。 エクセルには "Application.DisplayAlerts"に"False"をセットすると 回避できますが、アクセスからも設定できるのでしょうか? これ(メッセージ)を出力しない方法をご存知の方がいらっしゃいましたら、 ご教授願います。。 詳細は以下の通り・・・ Dim Excel_2 as Object '--エクセルopen Set Excel_2 = GetObject(対象エクセルパス) '********* 処理 ********** '--エクセル自動終了 Excel_2.Application.Quit '←ここで確認のメッセージが出力されます '--オブジェクト解放 Set Excel_2 = Nothing

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • Accessから呼び出したExcelの入力状態を解除したい

    WinXP-pro Access 2003 (Excel 2003) お世話になります。 以下のコードで、AccessのフォームからExcelファイルを開きます。 ~~~~~~~~~~~~~~~ Dim obj As Object Set obj = CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open Application.CurrentProject.Path & "test.xls" ~~~~~~~~~~~~~~~ 新しく開かれたtest.xlsファイルの上で入力を行い、Accessに戻ってフォーム上にあるボタンをクリックし、Excelファイルを閉じる処理までを行います。 問題はExcel操作中にセル上で「F2キー」を押下すると、入力状態になると思います。 この状態の時にAccess側で「obj.Quit」や「obj.cells(1, 1).select」のようなExcelへの操作を行おうとすると、ExcelとAccessの間で「ビジー状態である」と警告が表示され、処理が固まってしまいます。 Excelが入力状態であることが問題のようですので、入力を解除してやれば良いと思うのですが、この方法がわからず詰まっております。 入力状態解除の方法、もしくはこのようなフリーズ状況が回避できる方法がないものでしょうか。 よろしくお願いいたします。

  • AccessでExcelのプロセスが消せない

    Access2007を使用してExcelへ出力するプログラムを作っております。 On Error時にExcelのプロセスが消せなくて困っています。 正常に終了した場合は消えているのですが、On Error時には消せないと言うのはなぜでしょう? どなたか教えてください! ロジックは以下の通りです。 Dim xls, Book, newSheet As Object Private Sub cmd02_Click() On Error GoTo Err_cmd02_Click '処理A '処理B '処理C 'ExcelFile出力 Call ExcelOut Exit_cmd02_Click: Exit Sub Err_cmd02_Click: MsgBox ERR.Description 'ExcelがOpenしているかの判断 If bolExcelFlag = True Then 'Open中だったらClose Set newSheet = Nothing Book.Close SaveChanges:=False Set Book = Nothing xls.Quit Set xls = Nothing End If Resume Exit_cmd02_Click End Sub Private Sub ExcelOut() 'Excelオブジェクト作成 Set xls = CreateObject("Excel.Application") '新しいブックを追加 Set Book = xls.Workbooks.Add '新しいシートを追加 Set newSheet = Book.Worksheets(1) 'ExcelFlagをOn bolExcelFlag = True 'ヘッダー出力 Call HeaderOut 'ExcelFile編集メイン Call MainOut '最終のSub Total編集 Call BreakOut 'フッター出力 Call FooterOut 'ファイルの保存 Book.SaveAs (strOutFileName) '各オブジェクトのClose Book.Close xls.Quit Set newSheet = Nothing Set Book = Nothing Set xls = Nothing 'ExcelFlagをOff bolExcelFlag = False End Sub 以上、よろしくお願いいたします。

  • ACCESSからexcelを操作

    accessのVBからEXCELのデータ編集を行う際、 最後エクセルを開放しているつもりなのですが、できていないようです。 ※タスクマネージャーにエクセルのタスクが残っており、 該当のファイルを開くと白くなっている。閉じて再度開くと正常動作する。 いくつかの帳票がありますが、 現象が起こるものと起こらないものがあります。 試しに Xls_app.ScreenUpdating = Trueにしてみるとタスクには残っているが 問題なく開けます。 Xls_app.ScreenUpdating = Falseだとタスクにも残るし、ファイルを開くと白くなっているような感じです。 しかし発生原因がわからず、再発するような気もするので根本原因を 突き止めたいです。 Excel起動時 ---------------- Set Xls_app = CreateObject("Excel.Application") Set Xls_book = Xls_app.Workbooks.Open(STR_out_file) Set Xls_sheet = Xls_book.Worksheets(STR_sheet1) Set Xls_sheet2 = Xls_book.Worksheets(STR_sheet2) 'DEBUG Xls_app.Visible = False Xls_app.ScreenUpdating = False Xls_app.UserControl = True ' Xls_app.Visible = True ' Xls_app.ScreenUpdating = True Private Sub Excel終了()----------------------- Xls_book.Close (True) Xls_app.Quit Set Xls_sheet = Nothing Set Xls_sheet2 = Nothing Set Xls_book = Nothing Set Xls_app = Nothing End Sub

  • ACCESSのVBAからExcelのセルから読めたのですが、書く方法を教えてください

    下記の方法でCell(1,1)、から読むことができました そこで今度書き込みなのですが With xlBk.Worksheets("Sheet1")    'Debug.Print .Cells(1,1)    .Cell(1,2) = "data" End With としても、エクセルシートには書かれていないのですが 書く方法を教えてください ただ、下記の Open(Filename:=strFile, UpdateLinks:=0) はエクセルをOpenする時 「このブックは他のデータソースへのリンクがふくまれています」 とメッセージがでるので、UpdateLinks:=0、と入れています よろしくおねがいします '--------------------------------- Dim xlApp As Excel.Application Dim xlBk As Excel.Workbook Dim strFile As String strFile = "C:\Sample\Book1.xls" Set xlApp = CreateObject("Excel.Application") Set xlBk = xlApp.Workbooks.Open(Filename:=strFile, UpdateLinks:=0) With xlBk.Worksheets("Sheet1")   Debug.Print .Cells(1,1) End With xlBk.Close False xlApp.Quit Set xlApp = Nothing '----------------------------------

専門家に質問してみよう