在PowerShell中运行VB代码

时间:2016-12-14 21:28:07

标签: vba powershell

是否可以在 PowerShell中运行VB Code ?我不想从PowerShell中调用.vbs,我想在VBhell脚本中嵌入VB代码。我想,90%肯定你可以做到这一点,但我不知道如何以及似乎无法获得可靠的Google结果。我只是在猜测这一点。

我目前正在PowerShell中调用带有参数的.vbs,因为参数参数基于执行者在运行PowerShell时所做的选择,但我真的想将它们全部包装到一个文件中。

目前,我正在使用它将Excel工作表的第2页转换为CSV:

Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.Worksheets(2).Activate
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit

我尝试使用this from the Scripting Guy blog,但无法让它工作,从来没有得到答案。

我收到此错误:

Const : The term 'Const' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify 
that the path is correct and try again.
At line:1 char:1
+ Const xlCSV = 6
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (Const:String) [],     CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

如果有人能告诉我这个PowerShell代码如何工作以获取我的Excel表格的第二张(SHEET1),我也会喜欢它。

我希望答案像我想的那样简单而愚蠢。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

当您可以直接在Powershell中执行此操作时,无需使用VBS:

$a = New-Object -comobject Excel.Application
$a.Visible = $True

$b = $a.Workbooks.Open("C:\_Stuff\test2.xlsx")
$c = $b.Worksheets.Item(2)
$c.Activate()
$b.SaveAs(“C:\_Stuff\Test.csv”,6)
$b.Close(0)
$a.Quit()

https://blogs.technet.microsoft.com/heyscriptingguy/2006/09/08/how-can-i-use-windows-powershell-to-automate-microsoft-excel/