2015-06-02 6 views
0

Я пытаюсь преобразовать файлы с разделителями строк в xls (Excel) с командами и vbscript. К сожалению, мой файл «output.xls» по-прежнему показывает разделитель каналов в таблице, и данные не организованы.Преобразование файлов с разделителями строк в .xls

srccsvfile = Wscript.Arguments(0) 
tgtxlsfile = Wscript.Arguments(1) 

'Create Spreadsheet 
'Look for an existing Excel instance. 
On Error Resume Next ' Turn on the error handling flag 
Set objExcel = GetObject(,"Excel.Application") 
'If not found, create a new instance. 
If Err.Number = 429 Then '> 0 
    Set objExcel = CreateObject("Excel.Application") 
End If 

objExcel.Visible = false 
objExcel.displayalerts=false 

'Import CSV into Spreadsheet 
Set objWorkbook = objExcel.Workbooks.open(srccsvfile) 
Set objWorksheet1 = objWorkbook.Worksheets(1) 

'Adjust width of columns 
Set objRange = objWorksheet1.UsedRange 
objRange.EntireColumn.Autofit() 
'This code could be used to AutoFit a select number of columns 
'For intColumns = 1 To 17 
' objExcel.Columns(intColumns).AutoFit() 
'Next 

'Make Headings Bold 
objExcel.Rows(1).Font.Bold = TRUE 

'Freeze header row 
With objExcel.ActiveWindow 
    .SplitColumn = 0 
    .SplitRow = 1 
End With 
objExcel.ActiveWindow.FreezePanes = True 

'Add Data Filters to Heading Row 
objExcel.Rows(1).AutoFilter 

'set header row gray 
objExcel.Rows(1).Interior.ColorIndex = 15 
'-0.249977111117893 


'Save Spreadsheet, 51 = Excel 2007-2010 
objWorksheet1.SaveAs tgtxlsfile, 51 

'Release Lock on Spreadsheet 
objExcel.Quit() 
Set objWorksheet1 = Nothing 
Set objWorkbook = Nothing 
Set ObjExcel = Nothing 

Источник: http://www.tek-tips.com/viewthread.cfm?qid=1682555

+0

Файл с разделителями каналов не совпадает с файлом CSV: вам нужно использовать метод OpenText, а не 'Workbooks.Open'. Попробуйте записать макрос при этом, а затем включите его в ваш файл VBScript. https://msdn.microsoft.com/en-us/library/office/ff837097.aspx В Excel: http://www.udel.edu/itwebdev/help/import/import.html –

ответ

0

трубы не равна Comma, Excel изначально знает, что делать с CSV, но не с трубкой.

Все не потеряно, запишите свои действия, открыв файл вручную, после открытия столбца подсветки A и щелкните Data/Text To Columns, выберите разделитель и в поле «other» поставьте трубку, затем нажмите «Далее», выберите форматы столбцов (отлично подходит для форматирования чисел в виде текста, если вам нужны почтовые индексы и телефонные номера), затем нажмите «Готово».

Теперь остановите рекордер и посмотрите на код, который он сгенерировал. Перенесите это на свой объект Excel в свой скрипт.

+0

запустить макрос из VBS? Как. – Lee

+0

Поместите код, используйте свой объект excel для отправки макрокоманд, а не для запуска макроса в excel. –

1

Excel немного придирчив, когда дело доходит до чтения CSV-файлов. Если у вас есть файл с разделителем с расширением .csv, Excel будет корректно открывать его только с помощью метода Open, если разделителем является символ, настроенный в региональных настройках системы.

Метод Open имеет дополнительные параметры, которые позволяют задать пользовательский символ-разделитель (кредит на @Jeeped указывают на это):

set objWorkbook = objExcel.Workbooks.Open(srccsvfile, , , 6, , , , , "|") 

Вы также можете использовать метод OpenText (который будет использоваться при запись действия как макро):

objExcel.Workbooks.OpenText srccsvfile, , , 1, , , , , , , True, "|" 
Set objWorkbook = objExcel.Workbooks(1) 

Обратите внимание, что метод OpenText не возвращает объект рабочей книги, так что вы должны назначить книгу на переменный самостоятельно после открытия файла.

Важно: в любом случае ваш файл не должны иметь расширение .csv, если ваш разделитель отличается от региональных настроек системы, в противном случае разделитель будет игнорироваться.

+1

Не работает [Метод открытия книг] (https://msdn.microsoft.com/en-us/library/office /aa195811(v=office.11).aspx) также допускает конкретный разделитель? – Jeeped

+0

@ Jeeped По-видимому [он делает] (https://msdn.microsoft.com/en-us/library/office/ff194819.aspx). Когда это было введено? Кажется, я вспоминаю, что в тот день «OpenText» был единственным способом добиться этого. Обновленный ответ. –

+0

Не знаю, что касается изменения. FWIW, метод [Workbooks.OpenText] (https://msdn.microsoft.com/en-us/library/office/ff837097.aspx) предоставляет больше опций, найденных в Мастере импорта текста графического интерфейса (близкий родственник мастер «Текст-Колонка»). – Jeeped

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