visual variable valor una que para otra macro hoja guarda formulario especificas datos copiar condicion con codigos celdas celda captura buscar asignar vbscript

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.


Puede intentar utilizar el Microsoft Jet Driver:

Vea aquí para una muestra de vbscript. Vea aquí para más enlaces y formas de insertar filas.