• ベストアンサー

AccessのVBAで、Excelのマクロを起動したい

環境 OS:XP    OFFICE:2003 Accessで、同一フォルダにあるエクセルのマクロを起動したいのですが、どのようにコーディングすればよろしいでしょうか? フォルダ:C:\test Access:テストAccess.mdb Excel:テストExcel.xls 起動したいマクロ Sub all_delete() Sheets("シートA").Select Cells.Select Selection.Delete Shift:=xlUp End Sub よろしくお願いします。

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

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

こんばんは。 ふと見ていて思ったことですが、Excel のRun all_delete で、マクロを走らせる理由がないと思います。Access から、全部行ってしまえばよいのではないでしょうか? もしも、シート名やファイル名が変わったりしても、元から変更できます。 それから、Delete Shift:=xlUp ということは、セル幅などを調整すると意味かしら? そうでなければ、Clear でよいと思います。 --------------------------------------------------------- Sub XlSheetDelMacro()   Dim xlApp As Object   Dim xlBook As Object   Dim xlSheet As Object   Dim AcPath As String   Const XLFNAME As String = "Excel.xls" 'Excelファイル名   Const SHNAME As String = "シートA"   AcPath = CurrentProject.Path & "\"   On Error GoTo ErrHandler   Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.Workbooks.Open(AcPath & XLFNAME)   xlApp.Visible = True '目で確認   Set xlSheet = xlBook.Worksheets(SHNAME)   xlSheet.Cells.Clear   xlBook.Close True '閉じる+保存    ErrHandler:   If Err.Number > 0 Then     MsgBox Err.Number & ": " & Err.Description, 16   End If   Set xlSheet = Nothing '当面は不要   Set xlBook = Nothing '当面は不要   Set xlApp = Nothing '絶対必要 End Sub (プロセスでExcelが残らなければ成功)

motsu2006
質問者

補足

いつもお世話になっています。 なるほど、言われてみればAccessでコーディングする方が後々楽ですね。 一つ追加で質問なんですが、 >xlSheet.Cells.Clear ↑シートのクリアでなく、シートごと削除したいと思っています。 その場合、エクセルで手作業及びマクロで行うと警告(確認)メッセージが表示されますよね? このメッセージを表示させず、シートを削除するにはどうしたらよろしいでしょうか? すみませんが、よろしくお願いします。

その他の回答 (2)

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

こんにちは。 #2の回答者です。 >シートのクリアでなく、シートごと削除したいと思っています。 >マクロで行うと警告(確認)メッセージが表示されます こんな風に、DisplayAlerts を使います。 Set xlSheet = xlBook.Worksheets(SHNAME)  Application.DisplayAlerts = False  If xlBook.Worksheets.Count > 1 Then   xlSheet.Delete  End If  Application.DisplayAlerts = True

motsu2006
質問者

お礼

なるほど! 今回つまづいているケース以外にも、応用が利きそうです。 ご回答、本当にありがとうございました。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

Dim xlApp As Object Dim xlBook As Object Dim stPath As String stPath = CurrentProject.Path & "\テストExcel.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(stPath) xlBook.Application.Run "all_delete" xlBook.Close Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing というところでしょうか。

motsu2006
質問者

お礼

すみません、追加質問の文は自力で解決できました。 ご回答いただき、本当にありがとうございました。

motsu2006
質問者

補足

bonaronさん、早々にご回答いただきありがとうございました。 質問直後に帰宅してしまったため、お礼が今になってしまい申し訳ありませんでした。 で、Wendy02さんへの補足にも書いたのですが、 エクセルのシートごと削除をするにはどのように記述すればよろしいですか?またその際に警告(確認)メッセージも表示されないようにしたいです。 (つまり全く手を触れないフルオートで処理を行いたい) よろしくお願いします。

関連するQ&A