Мне нужно добавить строку в электронную таблицу с помощью VBScript на ПК, на котором не установлен Microsoft Office.
Я пробовал [Set objExcel = CreateObject("Excel.Application")]
Поскольку Excel не существует на ПК, я не могу создать этот объект.
Есть ли способ изменить электронную таблицу без Excel?


Без установленного Excel я не могу понять, как вы сможете изменить документ Excel.
Однако, если вы используете электронные таблицы Excel 2007 (xslx), вы должны иметь возможность использовать функциональность OpenXML .NET Framework для обновления содержимого без физической установки Excel.
Взгляните на здесь для получения дополнительной информации об Office OpenXML.
Не без особого труда. Microsoft опубликовала свои спецификации формата файлов, Excel здесь, но к ним нельзя относиться легкомысленно, и я думаю, вам будет сложно использовать VBScript.
Возможно, вы захотите увидеть этот вопрос. Он основан на C#, но должен дать вам представление о методах доступа к таблицам.
Чтобы использовать приведенный ниже код, создайте книгу Excel с именем «Test.xls» в той же папке, что и файл vbscript.
В Test.xls введите следующие данные в ячейки с A1 по B4:
First Last
Joe Smith
Mary Jones
Sam Nelson
Вставьте приведенный ниже код vbscript в файл .vbs:
Const adOpenStatic = 3
Const adLockOptimistic = 3
filename = "Test.xls"
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & filename & _
";Extended Properties=Excel 8.0"
query = "Select * from [Sheet1$A1:B65535]"
Set rs = CreateObject("ADODB.Recordset")
rs.Open query, cn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("First") = "George"
rs("Last") = "Washington"
rs.Update
rs.MoveFirst
Do Until rs.EOF
WScript.Echo rs.Fields("First") & " " & rs.Fields("Last")
rs.MoveNext
Loop
В командной строке введите:
CSCRIPT Yourfile.vbs
Он добавит имя в электронную таблицу, а затем запишет все имена.
Joe Smith
Mary Jones
Sam Nelson
George Washington
Это не зависит от Excel. Он использует ODBC.
Я считаю, что простой ответ на ваш вопрос - нет, потому что вам нужен COM-объект Excel, который устанавливается только при установке Excel. Раньше это было одним из реальных недостатков написания приложения Office - необходимость всего приложения (Excel, Word или чего-то еще), чтобы конечный пользователь мог его использовать.
Это последняя версия скрипта, который я использовал, спасибо всем за помощь.
Dim arrValue
arrValue = Array("Test","20","","I","2.25","3.9761","20","60","12","1","","1","1","1")
AddXLSRow "C:\Test.xls", "A1:N109", arrValue
Sub AddXLSRow(strSource, strRange, arrValues)
'This routine uses the data from an array to fill fields in the specified spreadsheet.
'Input strSource (String) = The Full path and filename of the spreadsheet to be used.
'Input arrValues (Array) = An array of values to be added to the spreadsheet.
Dim strConnection, conn, rs, strSQL, index
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & strSource & ";Extended Properties = ""Excel 8.0;HDR=Yes;"";"
Set conn = CreateObject("ADODB.Connection")
conn.Open strConnection
Set rs = CreateObject("ADODB.recordset")
strSQL = "SELECT * FROM " & strRange
rs.open strSQL, conn, 3,3
rs.AddNew
index = 0
For Each field In rs.Fields
If field.Type = 202 Then
field.value = arrValues(index)
ElseIffield.Type = 5 And arrValues(index) <> "" Then
field.value = CDbl(arrValues(index))
End If
If NOT index >= UBound(arrValues) Then
index = index + 1
End If
Next
rs.Update
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub
Извините за опоздание на вечеринку. Тот факт, что никто не упомянул ВСТО, вероятно, означает, что я неправильно понимаю вопрос. И, во всяком случае, я слышал смешанные отзывы от людей, использующих его.
VSTO по-прежнему требует установки Office, AFAIK.
Я знаю ... годы спустя, но сегодня мне нужно было выяснить, как получить доступ к электронной таблице Excel с помощью vbScript, не загружая Excel на свой сервер. Я поискал в сети и нашел вашу информацию полезной, но мне все еще нужно было больше, поэтому я продолжал поиск. Я наконец нашел решение, которое мне было нужно, и хотел поделиться им здесь на случай, если у кого-то еще возникнут те же проблемы, что и у меня.
Я пытался получить доступ (читать / писать) к электронной таблице Excel с помощью vbScript на сервере Windows 2008, и я не хотел устанавливать Excel на свой сервер. Мое решение было здесь (оно использует PowerShell, но его легко расшифровать на VBS):
Использование vbScript для чтения из электронной таблицы Excel без установленного Excel
Использование vbScript для записи в электронную таблицу Excel без установленного Excel
Я надеюсь, что это поможет кому-то, кому в будущем понадобится такое же решение.
L8r ...
UCG
Используйте EPPlus. epplus.codeplex.com
Вы можете делать большинство вещей, которые вы можете делать с VSTO, без установленного Excel.
Я думал, он сказал, что у него нет Excel?