在 VBScript 中创建 Excel Table

Create an Excel Table in VBScript

我正在尝试自动检测 xlsx 文件中的数据范围并将其转换为格式化的 table。我希望它与 Excel 格式相同 table (应用程序中的 CTRL-T)

我收到一条错误消息,提示“对象不支持此 属性 方法:wb.ListObjects”。

我显示 VBA 使用 ListObjects 创建 table。 VB 脚本有什么不同吗?

Const xlDelimited                =  1
Const xlTextQualifierDoubleQuote =  1
Const xlOpenXMLWorkbook          = 51

Set xl = CreateObject("Excel.Application")

''Working: Convert csv to xlsx. Is all this necessary for a simple csv to xlsx convert?
xl.Workbooks.OpenText "C:\Users\me\Desktop\Automate\data2.csv", , , xlDelimited _
  , xlTextQualifierDoubleQuote, True, False, False, True, False, False, _
  , Array(Array(1,2), Array(2,2), Array(3,2), Array(4,1), Array(5,2) _
  , Array(6,1), Array(7,1), Array(8,1), Array(9,1), Array(10,1), Array(11,1))
Set wb = xl.ActiveWorkbook


'This is still not working...
'wb.ListObjects.add xlSrcRange,x1.Range(),,XlYes
wb.ListObjects(1).method


''Working: Save file with current date.
wb.SaveAs "C:\Users\me\Desktop\Automate\data2" & "(" & Right(Day(Date),2) & MonthName(Month(Date()),1) & Year(Date) & ")" & ".xlsx", xlOpenXMLWorkbook, , , , False


wb.Close

xl.Quit

谢谢!

vbscript 中没有常量可用。您必须在对象查看器中查找值并将它们放入。EG xlYes = 1 所以用 1 替换。

根据对象模型,它是工作表中 ListObjects 的集合,而不是单个对象,因此 wb.ListObjects(1).method.

根据对象模型,没有添加方法。

帮助有一个关于如何使用它的例子。

Const xlOpenXMLWorkbook = 51
Const xlYes = 1
Const xlSrcRange = 1
Dim wb,sht

Set xl = CreateObject("Excel.Application")
'xl.visible=true 'uncomment if you want to see Excel

Set wb = xl.Workbooks.open("D:\Analysis\VBScript\data.csv")
Set sht = wb.worksheets(1)

'create a new listobject from the Range with top-left=A1
sht.ListObjects.Add xlSrcRange, sht.Range("A1").CurrentRegion, , xlYes

xl.DisplayAlerts = False 'don't show "a file already exists..."
wb.SaveAs "D:\Analysis\VBScript\dataOut.xlsx", xlOpenXMLWorkbook, , , , False
xl.DisplayAlerts = True
wb.Close

xl.Quit