dポイントプレゼントキャンペーン実施中!

環境 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

よろしくお願いします。

A 回答 (3件)

こんばんは。



ふと見ていて思ったことですが、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が残らなければ成功)

この回答への補足

いつもお世話になっています。

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

すみませんが、よろしくお願いします。

補足日時:2007/11/09 10:28
    • good
    • 1

こんにちは。


#2の回答者です。

>シートのクリアでなく、シートごと削除したいと思っています。
>マクロで行うと警告(確認)メッセージが表示されます

こんな風に、DisplayAlerts を使います。

Set xlSheet = xlBook.Worksheets(SHNAME)
 Application.DisplayAlerts = False
 If xlBook.Worksheets.Count > 1 Then
  xlSheet.Delete
 End If
 Application.DisplayAlerts = True
    • good
    • 0
この回答へのお礼

なるほど!
今回つまづいているケース以外にも、応用が利きそうです。

ご回答、本当にありがとうございました。

お礼日時:2007/11/09 12:03

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
というところでしょうか。

この回答への補足

bonaronさん、早々にご回答いただきありがとうございました。
質問直後に帰宅してしまったため、お礼が今になってしまい申し訳ありませんでした。

で、Wendy02さんへの補足にも書いたのですが、
エクセルのシートごと削除をするにはどのように記述すればよろしいですか?またその際に警告(確認)メッセージも表示されないようにしたいです。
(つまり全く手を触れないフルオートで処理を行いたい)

よろしくお願いします。

補足日時:2007/11/09 10:35
    • good
    • 0
この回答へのお礼

すみません、追加質問の文は自力で解決できました。

ご回答いただき、本当にありがとうございました。

お礼日時:2007/11/09 11:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!