• ベストアンサー

アクセスからエクセルのマクロを実行したいのですが

Sub エクセルのVBA実行する() Dim xlsWB As Object Dim MyFileName As String MyFileName = "C:\test.xlsx" Set xlsWB = GetObject(MyFileName) xlsWB.Application.Run xlsWB.Name & "!マクロ" Set xlsWB = Nothing End Sub と言うコードを作ったのですが エクセルファイルにはパスワードがかかっています。 パスワード付のエクセルファイルを開きマクロを実行するにはどうすればいいでしょうか?

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは マクロ付きなら拡張子はxlsxではなくてxlsmですよね? Sub エクセルのVBA実行する()   Dim xlsAP As Object   Dim xlsWB As Object   Dim MyFileName As String   MyFileName = "C:\temp\test.xlsm"   Set xlsAP = CreateObject("Excel.Application")   xlsAP.EnableEvents = False   Set xlsWB = xlsAP.Workbooks.Open(MyFileName, , True, , "1234")   xlsAP.Run xlsWB.Name & "!マクロ"   xlsAP.EnableEvents = True   xlsWB.Close False   Set xlsWB = Nothing End Sub 「C:\temp\test.xlsm」でパスワードは「1234」、マクロ名は「マクロ」としてます。

WIWJPCUHIABJ
質問者

お礼

ご回答ありがとうございました。

その他の回答 (1)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

エクセルで「Test.xlsx」というファイルに「1234」という読み取りパスワードのみを設定して、「D」ドライブに保存しました。 「Test.xlsx」のセルA1には「a」と入力してあります。 この状況で、アクセスのVBAから上記ファイルを開いて、画面に「a」と表示させてみました。 Sub Test() Set x = CreateObject("Excel.Application") Set y = x.Workbooks.Open(FileName:="D:\Test.xlsx", Password:="1234") Set z = y.Worksheets(1) MsgBox (z.Range("A1")) End Sub

WIWJPCUHIABJ
質問者

お礼

ご回答ありがとうございました。

関連するQ&A