アクセス2000でエクセルを閉じるときに「変更を保存しますか?」のメッセージが出力される問題

このQ&Aのポイント
  • アクセス2000を使用している際に、エクセルを閉じるときに「変更を保存しますか?」のメッセージが出力されてしまう問題が発生しています。
  • エクセルの「Application.DisplayAlerts」プロパティに「False」を設定することで回避できますが、アクセスからも設定する方法があるかどうか知りたいです。
  • 上記の問題について、解決方法をご存知の方がいらっしゃいましたら、教えていただきたいです。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

>"Application.DisplayAlerts"に"False"をセットすると 回避できますが、アクセスからも設定できるのでしょうか? 実際に試せば良いのでは? 下記のようにQuitの前に実行すればいいのでは? excel_2.Application.Workbooks("workbook").saved = True

anan2001
質問者

お礼

アドバイス通り 「excel_2.Application.Workbooks("workbook").saved = True 」 を設定するだけで、解決できました。 大変助かりました。ありがとうございました!

関連するQ&A

  • Accessからoutlookのプロシージャー

    Accessからoutlookのプロシージャーを実行する方法は? AccessからExcelなら、エクセルに ************************ Sub エクセルマクロ() MsgBox "a" End Sub ************************ を作り、アクセス側で、 ************************ Private Sub AccessからExcel() Dim xlsWB As Object Set xlsWB = GetObject("D:\My Documents\up\エクセル.xls") xlsWB.Application.Run xlsWB.Name & "!エクセルマクロ" Set xlsWB = Nothing End Sub ************************ を実行すると、エクセル側のプロシージャーが実行されますが、 Accessからoutlookの場合は、どうすればいいでしょうか? Outlookの標準モジュールに、 ************************ Sub Outlookマクロ() MsgBox "a" End Sub を作っても、 アクセス側で、 Private Sub AccessからExcel() Dim xlsWB As Object Set xlsWB = GetObject("D:\My Documents\up\ ")‘ここをどうすればいいかわからない。 xlsWB.Application.Run xlsWB.Name & "! Outlookマクロ" Set xlsWB = Nothing End Sub ************************ と言うコードしか作れなくて、詰んでしまいます。 Accessからoutlookのプロシージャーを実行する方法をご教授ください。よろしくお願いします。

  • 既に開いているエクセルを閉じるには?

    既に該当のファイルが開いているのなら閉じたいのですが xlBook.Quitだとエラーになります。 Sub test1() Dim xlApp As Excel.Application Dim xlBook As Workbook Dim FileName As String FileName = "C:\test.xlsm" Set xlApp = GetObject("", "Excel.Application") 'GetObjectで合ってるか不安 Set xlBook = xlApp.Workbooks.Open(FileName) If xlBook.ReadOnly = True Then 'ファイルが開いてるのなら MsgBox "既にファイルが開いているので閉じます。" xlBook.Quit 'エラー 438 End If xlApp.Quit 'これって何のために必要? Set xlBook = Nothing 'ココを通り過ぎるのにすごく時間がかかる。 Set xlApp = Nothing End Sub と言うコードを作りました。 xlBook.Quitがダメならどのコードを使えばいいでしょう? また、 GetObject("", "Excel.Application") と言う開き方でいいのでしょうか? あと、 xlApp.Quit は何のために必要なのでしょう? タスクマネージーのプロセスを見ると、 Set xlApp = GetObject("", "Excel.Application") を通る時に新しいEXCEL.EXEが作成され、 Set xlApp = Nothing を通り過ぎる時に、そのEXCEL.EXEが消えます。 だから xlApp.Quit は不要ですか?

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • マクロがあるファイルの読み出し時にマクロの有効を聞いてこないようにする。

    以下のようにエクセルのブックのシート名をゲットしようとしたのですが、エクセルにマクロを入れてあるため、「マクロの有効、無効」を聞いてきます。 聞いてこないようにするため xlApp.DisplayAlerts = False を入れたのですが、ダメでした。なにか良い方法はあるのでしょうか? 宜しくお願いいたします。 Dim FileNam As String Dim filebasho As String Dim wbsinario As Object Dim shtsinario As Object Dim ExcelWasNotRunning As Boolean If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' xlApp.DisplayAlerts = False Set shtsinario = GetObject(filebasho & "\" & FileNam) Set wbsinario = shtsinario.Application.Workbooks(FileNam)

  • エクセルマクロで開いているアクセスのファイルを知る

    エクセル2007です。今立ち上がっているファイルを、エクセルの表に書き出すマクロを作りたいです。 エクセル自身はいうまでもなく、ワード、パワーポイントまで成功しました。けど、アクセスだけがうまくいきません。パワーポイント用testはうまく動くのに、アクセス用testはだめなのです。 For Each アクセス文書 In アクセスアプリケーション.databases でこけるのです。どうも、「databases」 というところが間違っていると、目星をつけました。どう書いたらいいのか教えてください。いろいろ調べましたがわかりませんでした。 Sub パワーポイント用test() Dim パワーポイントアプリケーション As Object Dim パワーポイント文書 As Object Dim カウンター As Long カウンター = 1 Range("A2").Select On Error Resume Next Set パワーポイントアプリケーション = GetObject(, "PowerPoint.Application") On Error GoTo 0 If パワーポイントアプリケーション Is Nothing Then Exit Sub For Each パワーポイント文書 In パワーポイントアプリケーション.Presentations カウンター = カウンター + 1 Cells(カウンター, 1) = パワーポイント文書.Name Cells(カウンター, 2) = パワーポイント文書.FullName Next Set パワーポイントアプリケーション = Nothing End Sub Sub アクセス用test() Dim アクセスアプリケーション As Object Dim アクセス文書 As Object Dim カウンター As Long カウンター = 1 Range("A2").Select On Error Resume Next Set アクセスアプリケーション = GetObject(, "Access.Application") On Error GoTo 0 If アクセスアプリケーション Is Nothing Then Exit Sub For Each アクセス文書 In アクセスアプリケーション.databases カウンター = カウンター + 1 Cells(カウンター, 1) = アクセス文書.Name Cells(カウンター, 2) = アクセス文書.FullName Next Set パワーポイントアプリケーション = Nothing End Sub

  • 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 以上、よろしくお願いいたします。

  • Excelの終了について

    こんにちは。昨日もお世話になったguruguru2です。 早速質問なのですが、VBから新規Excelを起動したあとで、フォルダから既存のExcelファイルをダブルクリックで起動します。そのあとで、VBからExcelを終了する時、VBで起動したExcelのみを終了させたいのに、2つとも終了してしまいます。又、フォルダから起動するのではなく、スタートメニューからExcelを起動して、「ファイルを開く」で既存のファイルを開き、VBからExcelを終了するとVBで起動させたExcelのみ終了させることが出来ました。 どうしたら、前者の方法でVBで起動したExcelのみを終了させることが出来るのでしょうか。ソースも書きます。 Private Sub Excel起動() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objXls = CreateObject("Excel.Application") objXls.DefaultFilePath = mstrPath(最初に設定したパスです。) objXls.DisplayAlerts = False objXls.Workbooks.Add objXls.Visible = True End If AppActivate (objXls.Caption) Set objXls = Nothing Err.Clear End Sub Private Sub Excel終了() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application) If Err.Number = 0 Then     objXls.Quit End If Set objXls = Nothing End Sub わかりづらい説明ですみません。お願いします。

  • 教えてください

    簡単なことで済みません。 初心者なので分からずつまづいています。 教えてください。 下記のソースを実行するとエラーが出てきます。 「メモリーが不足しています」 「ファイルが見つかりません」 どう対処したらいいのでしょうか? Private Sub Command1_Click() On Error GoTo dbg: ' Excelのインスタンス作成 Set xlApp = CreateObject("Excel.Application") ' Excelを表示有無 xlApp.Visible = True ' マクロの警告やメッセージを表示しないように設定 xlApp.DisplayAlerts = False ' 指定したExcelファイルを開く Set xlBook = xlApp.Workbooks.open("D:\test.xls") ' Excelの終了 xlApp.Quit ' オブジェクトを解放 Set xlBook = Nothing Set xlApp = Nothing Exit Sub dbg: ' エラーメッセージを表示 MsgBox Err.Description End Sub

  • アクセスのオートメーションについて

    お世話になっております。 ACCESSのオートメーションでExcelを以下のような感じで操作しています。 'Excel 9.0 object library used Dim xlApp As Excel.Application Dim xlWbk As Excel.Workbook Dim xlWst As Excel.Worksheet Dim strPath As String 'ブックの作成 Set xlApp = CreateObject("Excel.Application") Set xlWbk = xlApp.Workbooks.Add Set xlWst = xlWbk.Worksheets(1) DoCmd.Hourglass (True) xlWst.Range("A3:B4").Select With xlApp.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = True End With   ~~~~~~長いので・・・~~~ xlWst.Range(Cells(Lcnt, 1), Cells(Lcnt + 1, 1)).Select(1)   ~~~~セルの結合~~~~~~~ xlWst.Cells(Lcnt, 2) = "滞留債権"   ~~~~~~~~~~~~~~~~ SAVENM = CurDir & "\あああ.xls" xlWbk.SaveAs SAVENM DoCmd.Hourglass (False) Set xlApp = Nothing Set xlWbk = Nothing Set xlWst = Nothing と行って新規ブックを開いてデータを書込んでセーブして閉じてます。 ところが初回は普通に起動できるんですが2回目は(1)のところで 'Cells'メソッドは失敗しました。'_Global'オブジェクト となります。 色々と試してみたのですが、何が悪いのか分かりません。 どなたか助言お願いいたします。

  • VB6からExcelを操作する

    VB6.0からExcelの操作をしています。 そのなかで、Excelシートを印刷したいのですが、どのようにしたら良いのでしょうか。 また、ExcelVBAのFunctionやSubを実行するにはどのようにするのでしょうか。 VB6.0内でExcel操作は次のようにしています。 Dim ExcelApp As Object Dim EWorkbook As Object Dim ESheet As Object Set ExcelApp = CreateObject("Excel.Application") Set EWorkbook = ExcelApp.Workbooks.Open(ExcelBookFlNm) Set ESheet = EWorkbook.Sheets(M_SheetNm) Set ESheet = Nothing Set EWorkbook = Nothing ExcelApp.Quit Set ExcelApp = Nothing よろしくお願いします。