vbscript - variable - macro para buscar datos en otra hoja de excel
Cómo modificar una hoja de cálculo sin Excel usando VBScript (10)
Creo que la respuesta simple a su pregunta es no porque necesita el objeto COM de Excel que solo se instala cuando Excel está instalado. Esto solía ser uno de los inconvenientes reales de escribir una aplicación de Office: la necesidad de toda la aplicación (Excel, Word o lo que sea) para que un usuario final pueda usarla.
Necesito encontrar una manera de agregar una fila a una hoja de cálculo usando VBScript, en una PC que no tiene Microsoft Office instalada.
He intentado usar una línea como esta [Establecer objExcel = CreateObject ("Excel.Application")], pero como Excel no existe en la pc, no puedo crear este objeto.
¿Hay alguna manera de modificar una hoja de cálculo sin Excel?
Lamento llegar tarde a la fiesta. El hecho de que nadie mencione a VSTO probablemente significa que estoy malinterpretando la pregunta. Y, de todos modos, escuché críticas mixtas de personas que lo usaban.
No sin dificultad extrema. Microsoft ha publicado sus especificaciones de formato de archivo, Excel aquí , pero estas no deben tomarse a la ligera, y creo que tendrá dificultades para usar VBScript.
Sin Excel instalado, no veo cómo podrá cambiar un documento de Excel.
Sin embargo, si usa hojas de cálculo de Excel 2007 (xslx), entonces debería poder usar la funcionalidad OpenXML de .NET Framework para actualizar los contenidos sin que se instale físicamente Excel.
Mire aquí para obtener más información sobre Office OpenXML.
Lo sé ... años después, pero hoy necesitaba averiguar cómo acceder a una hoja de cálculo de Excel usando vbScript sin cargar Excel en mi servidor. Busqué en la red y encontré útil tu información, pero aún necesitaba más, así que seguí buscando. Finalmente encontré la solución que necesitaba y quería compartirla aquí por si acaso alguien tiene los mismos problemas que yo.
Estaba intentando acceder (leer / escribir) una hoja de cálculo de Excel usando vbScript en un servidor de Windows 2008 y no quería instalar Excel en mi servidor. Mi solución estaba aquí (usa PowerShell pero es fácil de descifrar a VBS):
Usar vbScript para leer desde una hoja de cálculo de Excel sin Excel instalado
Usar vbScript para escribir en una hoja de cálculo de Excel sin Excel instalado
Espero que esto ayude a alguien que necesita la misma solución en el futuro.
L8r ...
UCG
Esta es la versión final del script que utilicé, gracias a todos por la ayuda.
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
Use EPPlus. epplus.codeplex.com
Puede hacer la mayoría de las cosas que puede hacer con VSTO, sin Excel instalado.
Para usar el siguiente código, cree un libro de Excel llamado "Test.xls" en la misma carpeta que el archivo vbscript.
En Test.xls, ingrese los siguientes datos en las celdas A1 a B4:
First Last
Joe Smith
Mary Jones
Sam Nelson
Pegue el código de vbscript a continuación en un archivo .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
En un símbolo del sistema, escriba:
CSCRIPT Yourfile.vbs
Agregará un nombre a la hoja de cálculo y luego escribirá todos los nombres.
Joe Smith
Mary Jones
Sam Nelson
George Washington
Es posible que desee ver esta pregunta . Está basado en C #, pero debe darle una idea de las técnicas para acceder a spreatsheets.