5

vbsを使用してExcelマクロを呼び出そうとしています。これが私のコードの抜粋です。

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls")
objExcel.Application.Visible = True
objExcel.Application.Run "C:\Folder\Test_PO.xls!Data_Analysis"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit

ここでの問題は、ファイルを開くことができるのに、マクロがどういうわけかここで無効になり、表示されることです'macro may not be present or may be disabled'。正しいマクロ名を呼び出していることは確かですが、ファイルを開くとすぐに、マクロを実行するように構成した[アドイン]タブが消えます。ファイルを手動で開くと、これは開きません。タブが表示されます。タブ自体からマクロを実行します。この問題を克服してマクロを実行する方法についての提案はありますか?

4

2 に答える 2

7

これを試して

Dim objExcel, objWorkbook 

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls")
objExcel.Visible = True
objExcel.Run "Data_Analysis"
objWorkbook.Close
objExcel.Quit

Set objWorkbook = Nothing
Set objExcel = Nothing

WScript.Echo "Finished."
WScript.Quit

編集

マクロがモジュール内にある場合は、上記が役立ちます。マクロがシートにある場合、たとえばSheet1は、行を置き換えます

objExcel.Run "Data_Analysis"

objExcel.Run "sheet1.Data_Analysis"

ファローアップ

このコードを試してください。

Dim objExcel, objWorkbook, ad, FilePath

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

For Each ad In objExcel.AddIns
    If ad.Name = "Converteam.xla" Then
        FilePath = ad.Path & "\Converteam.xla"
        Exit For
    End If
Next

objExcel.Workbooks.Open (FilePath)

Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls")

objExcel.Run "Data_Analysis_Converteam"
objWorkbook.Close
objExcel.Quit

Set objWorkbook = Nothing
Set objExcel = Nothing

WScript.Echo "Finished."
WScript.Quit

説明

を使用する場合CreateObject、アドインはデフォルトではインストールされません。このリンクをご覧ください。

トピック:ExcelでCreateObjectコマンドを使用すると、アドインが読み込まれません

リンクhttp ://support.microsoft.com/kb/213489/

アドインをロードしてから、関連するマクロを呼び出す必要があります。また、あなたのマクロの名前はそうではありませんData_AnalysisData_Analysis_Converteam

HTH

于 2012-05-10T08:42:32.070 に答える
1

Siddhartの答えに追加するには、次のように必要なアドインをVBScriptにロードできます。

objExcel.RegisterXLL("analys32.xll") 'For XLL addins
objExcel.Workbooks.Open(objExcel.LibraryPath & "\analysis\atpvbaen.xla") 'For standard XLA addins
objExcel.Workbooks.Open("C:\Program Files\MyAddins\MyAddin.xla") 'for custom XLA addins
于 2012-05-10T09:47:22.123 に答える