2015-03-07 2 views
0

Я пытаюсь автоматически определить диапазон данных в файле xlsx и превратить его в форматированную таблицу. Я хочу, чтобы он был таким же, как таблица в формате Excel (CTRL-T в приложении)Создать таблицу Excel в VBScript

Я получаю сообщение об ошибке «Объект не поддерживает это свойство метода: wb.ListObjects».

Я показываю, что VBA использует ListObjects для создания таблицы. Есть ли что-то другое в VB Script?

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 

Спасибо!

ответ

1
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 
+0

Это сработало отлично. Спасибо!! – Mike

0

В vbscript нет констант. Вы должны посмотреть значения в Object Viewer и поместить их. EG xlYes = 1, поэтому замените на 1.

В соответствии с объектной моделью это коллекция ListObjects на листе, а не один объект, поэтому wb. ListObjects (1) .method.

В соответствии с объектной моделью нет метода добавления.

В помощь есть пример того, как это использовать.

+0

'Добавить' есть в Обозревателе объектов ... –

+0

@Serenity Я по-прежнему получаю ту же ошибку после обновления кода. Выше сценарий обновлен. Я что-то упускаю? – Mike

+0

Метод - это заполнитель для добавления. Я показывал часть в скобках в том, как получить доступ к первой вещи в коллекции. – Serenity

Смежные вопросы