お世話になっております。
VB2005から指定したEXCELファイルを開き、標準モジュールにあるマクロを起動したいと考えております。
調べたところ、Runメソッドを使用するようですが、マクロファイルを開くところで停止してしまいます。
以下にソースを書きましたので、アドバイス頂きたいと思います。
Dim n As Short
Dim xlApp As Excel.Application = Nothing
Dim xlBooks As Excel.Workbooks = Nothing
Dim xlBook As Excel.Workbook = Nothing
Dim xlSheets As Excel.Sheets = Nothing
Dim xlSheet As Excel.Worksheet = Nothing
Dim xlRange As Excel.Range = Nothing
Dim Fname As String = "C:\Documents and Settings\hoge\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS" '読み込むファイル
Try
xlApp = New Excel.Application()
xlBooks = xlApp.Workbooks
For n = 0 To fil.Length - 1
xlBook = xlBooks.Open(fil(n))
xlSheets = xlBook.Worksheets
xlApp.Run("'" & Fname & "'!module2.DB処理", fil(n)) '引数をもつ処理の呼び出し方法
'1000ミリ秒(1秒)待機する
System.Threading.Thread.Sleep(1000)
' Excel ブックを保存する
xlApp.DisplayAlerts = False
xlBook.Save()
Next
' Microsoft Excel を終了する
xlApp.Quit()
Finally
If Not xlSheet Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
End If
If Not xlSheets Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
End If
If Not xlBook Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
End If
If Not xlBooks Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
End If
If Not xlApp Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
End If
End Try
#1です。
>Cドライブ直下に置きましたが、ファイルがみつからないというエラーが出てしまいました。
Cドライブに置いたのは単に私の方のテストです。
例えば
C:\abc.xls に
Sub try(st As String)
MsgBox st
End Sub
と言うマクロがあったとします。
VB2005で
Dim xlApp As Excel.Application = Nothing
Dim xlWb As Excel.Workbook = Nothing
Dim v As Object
xlApp = New Excel.Application
xlApp.Visible = True
xlWb = xlApp.Workbooks.Open("C:\abc.xls")
v = xlApp.Run(xlWb.Name & "!try", "今日も元気だね")
とやるとExcel側のメッセージボックスで「今日も元気だね」と表示されます。
v = xlApp.Run(xlWb.Name & "!try", "今日も元気だね")
の部分についてはExcelVBAのヘルプを見ました。
お礼
お礼が大変遅れてしまい申し訳ありませんでした。 >>Cドライブ直下に置きましたが、ファイルがみつからないというエラーが出てしまいました。 >Cドライブに置いたのは単に私の方のテストです。 私が勘違いしていたのですね。 教えていただいた方法で解決しました、どうもありがとうございます。