有人可以告诉我为什么以下VB脚本在excel中执行时工作正常但如果使用cmd:cscript c:\ vb \ test.vbs?执行则无效。下面是我的代码我正在尝试使用cmd工作。我正在使用excel .xls(excel 97-2003)。
Private Sub CopyData()
Dim x
Dim y
'## Open both workbooks first:
Set x = Workbooks.Open("C:\VB\CopyDataTest.xls")
'Now, copy what you want from x:
Sheets("Sheet1").Range("A:B").Copy
Set y = Workbooks.Open("C:\VB\Destination.xls")
'Now, paste to y worksheet:
y.Sheets("Sheet2").Range("A:B").PasteSpecial
'Close x:
y.Close
End Sub
答案 0 :(得分:2)
如果需要从cmd运行脚本,则需要创建一个excel对象。试试这个:
Private Sub CopyData()
Dim x
Dim y
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\VB\Destination.xls", 0, True)
## Open both workbooks first:
Set x = xlApp.Workbooks.Open("C:\VB\Destination.xls")
Now, copy what you want from x:
xlApp.Sheets("Sheet1").Range("A:B").Copy
Set y = xlApp.Workbooks.Open("C:\VB\Destination.xls")
Now, paste to y worksheet:
y.Sheets("Sheet2").Range("A:B").PasteSpecial
Close x:
y.Close
End Sub
CopyData()
答案 1 :(得分:2)
Mnimonic已经为此提供了一个完美可用的解决方法,但解释也可能有用。
您已在VBA(Visual Basic for Applications)中编写了一段代码。
您尝试将其作为VBS(VB Script)
运行在excel中运行代码时,VB脚本不了解Office和其他已加载的库。
您需要了解如何在VBscript中与办公室的COM接口进行交互。
现在更好的解决方案是在VB.NET中编程并与.NET中的excel进行交互:
代码看起来仍然非常熟悉,但它是微软希望你现在做的事情。
注意:您始终需要在运行脚本的PC上安装Excel! 如果你想避免这种情况,也许可以看看像Aspose这样没有安装Office的东西......