Excel, usar una hoja de calculo para rellenar formularios
Excel, usar una hoja de calculo para rellenar formularios
Hola autoiteros,
Vuelvo a pediros ayuda...
-Necesito manejar una hoja Excel donde tengo grabados los datos de unas facturas
-Tengo que rellenar con autoit un formulario de otro sistema (un ERP) con los datos que tengo grabados en el Excel
-Los campos en uno y otro sistema ya son iguales, pero no sé como decirte a autoit que por ejemplo la variable Numpro (Numero de Proveedor) debe ser la celda A2 del excel... y así con las diferentes variables y después ir agregando nuevos registros.
¿Y si los datos son de un archivo .mdb de access en vez de excel... sabéis que necesitaría para hacer lo mismo?
Adjunto un excel de ejemplo por si se me escapa explicaros algo y para ser lo más claro posible. Muchas no... muchísimas gracias por vuestra ayuda
Qpongo
Vuelvo a pediros ayuda...
-Necesito manejar una hoja Excel donde tengo grabados los datos de unas facturas
-Tengo que rellenar con autoit un formulario de otro sistema (un ERP) con los datos que tengo grabados en el Excel
-Los campos en uno y otro sistema ya son iguales, pero no sé como decirte a autoit que por ejemplo la variable Numpro (Numero de Proveedor) debe ser la celda A2 del excel... y así con las diferentes variables y después ir agregando nuevos registros.
¿Y si los datos son de un archivo .mdb de access en vez de excel... sabéis que necesitaría para hacer lo mismo?
Adjunto un excel de ejemplo por si se me escapa explicaros algo y para ser lo más claro posible. Muchas no... muchísimas gracias por vuestra ayuda
Qpongo
- Adjuntos
-
- Ejemplo Lineas para contabilizar.xls
- (9.06 KiB) Descargado 234 veces
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Excel, usar una hoja de calculo para rellenar formulario
Para trabajar con excel, busca en la ayuda todas las funciones que empiezan por _Excel . Por ejemplo, para recuperar un dato de una celda está la función _ExcelReadCell.
Saludos.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Excel, usar una hoja de calculo para rellenar formulario
Muchas gracias Chefito.... no lo encontraba en la ayuda en español, he visto luego en la de inglés que una función _Excelreadtoarray (hablo de memoria)......e imagino que teniendo los datos en la memoria también se pueden utilizar y quizá sea mas rápido. ¿Sabéis donde puedo encontrar un ejemplo que combine _Excelreadtoarray y luego maneje _array?Chefito escribió:Para trabajar con excel, busca en la ayuda todas las funciones que empiezan por _Excel . Por ejemplo, para recuperar un dato de una celda está la función _ExcelReadCell.
Saludos.
Gracias otra vez y perdonad si no he escrito las funciones bien.....estoy desde el movil y no recuerdo los nombres exactos.
Re: Excel, usar una hoja de calculo para rellenar formulario
hola, la verdad no me queda claro lo que quieres hacer pero podrías rellenar el arreglo así.
Saludos
Código: Seleccionar todo
#include <Excel.au3>
#include <Array.au3>
Local $sFilePath1 = @ScriptDir & "\Ejemplo Lineas para contabilizar.xls" ;This file should already exist
Local $oExcel = _ExcelBookOpen($sFilePath1,0)
$array=_ExcelReadArray($oExcel,1,1,12)
$array2=_ExcelReadArray($oExcel,2,1,12)
_ExcelBookClose($oExcel)
_ArrayDisplay($array)
_ArrayDisplay($array2)
Saludos
- ............................................
......................................
Re: Excel, usar una hoja de calculo para rellenar formulario
Gracias Dani,
Perdona, no me explico muy bien, soy novato novato más que nada porque tengo poco tiempo para autoit, aunque me está encantando.
Me has ayudado con tu ejemplo, veo que se pueden hacer cosas mas complicadas con arreglos y coger sólo las filas o columnas que interesen.
Buscando, he encontrado que con _ExcelReadSheettoArray cojo los datos de la hoja entera y creo que será lo mejor, así que he modificado tu código poniendo _ExcelReadSheettoArray ¿Lo que hace array es mantener los datos en la memoria para usarlos como queramos verdad? Bueno, imagino que se puede grabar también, claro.
Lo que quiero ahora es usar el arreglo para enviar los datos a otro formulario de Baan IV (mi ERP) como si una persona lo estuviese metiendo, es decir enviando teclas con Send.
Veo que puedo tener problemas con los formatos en el campo de la Fecha(20130524000000), y el exceso de decimales en los campos Diferencia y Expr2 que tendré que recortar a 2 como máximo.
Gracias otra vez Dani,
Jose
(qpongo)
Perdona, no me explico muy bien, soy novato novato más que nada porque tengo poco tiempo para autoit, aunque me está encantando.
Me has ayudado con tu ejemplo, veo que se pueden hacer cosas mas complicadas con arreglos y coger sólo las filas o columnas que interesen.
Buscando, he encontrado que con _ExcelReadSheettoArray cojo los datos de la hoja entera y creo que será lo mejor, así que he modificado tu código poniendo _ExcelReadSheettoArray ¿Lo que hace array es mantener los datos en la memoria para usarlos como queramos verdad? Bueno, imagino que se puede grabar también, claro.
Lo que quiero ahora es usar el arreglo para enviar los datos a otro formulario de Baan IV (mi ERP) como si una persona lo estuviese metiendo, es decir enviando teclas con Send.
Veo que puedo tener problemas con los formatos en el campo de la Fecha(20130524000000), y el exceso de decimales en los campos Diferencia y Expr2 que tendré que recortar a 2 como máximo.
Gracias otra vez Dani,
Jose
(qpongo)
Código: Seleccionar todo
#include <Excel.au3>
#include <Array.au3>
Local $sFilePath1 = @ScriptDir & "\Ejemplo Lineas para contabilizar.xls" ;This file should already exist
Local $oExcel = _ExcelBookOpen($sFilePath1,0)
$array=_ExcelReadSheettoArray($oExcel);($oExcel,1,1,12)
;$array2=_ExcelReadArray($oExcel,2,1,12)
_ExcelBookClose($oExcel)
_ArrayDisplay($array)
;_ArrayDisplay($array2)
Re: Excel, usar una hoja de calculo para rellenar formulario
claro todo depende de como quieras trabajarlo. en los parámetros que te dan errores seria cuestión de crearte una función para cambiarlo.
a la final lo que quieres es pasar de excel a mdb que es de Access. lo que puedes hacer es importar el archivo xls y luego guardarlo como mdb. asi te ahorras un montón de cosas.
saludos
a la final lo que quieres es pasar de excel a mdb que es de Access. lo que puedes hacer es importar el archivo xls y luego guardarlo como mdb. asi te ahorras un montón de cosas.
saludos
- ............................................
......................................
Re: Excel, usar una hoja de calculo para rellenar formulario
No no... que va....
Si fuera access, con "Obtener datos externos" estaría resuelto. Es un formulario pero no de access, es del sistema informático de mi empresa. Tengo que meter miles de datos manualmente y quiero que sea automáticamente con autoit...
Como soy muy cabezón lo conseguiré de una u otro forma, ya he conseguido manejar los menús y me parecía imposible.
Muchas gracias,
Jose
Si fuera access, con "Obtener datos externos" estaría resuelto. Es un formulario pero no de access, es del sistema informático de mi empresa. Tengo que meter miles de datos manualmente y quiero que sea automáticamente con autoit...
Como soy muy cabezón lo conseguiré de una u otro forma, ya he conseguido manejar los menús y me parecía imposible.
Muchas gracias,
Jose
Re: Excel, usar una hoja de calculo para rellenar formulario
si pero si lograras ver el si e software de tu empresa genera algún tipo de archivo con los datos podrías hacer algo sin tener que usar controlsend ni nada de eso.
- ............................................
......................................
Re: Excel, usar una hoja de calculo para rellenar formulario
Hola Dany y compañeros del foro...Dany escribió:si pero si lograras ver el si e software de tu empresa genera algún tipo de archivo con los datos podrías hacer algo sin tener que usar controlsend ni nada de eso.
Como preveía y le comenté a Dani hace ya tiempo, estoy atascado con el formato de una fecha y no sé ahora mismo como solucionarlo.
Cuando _ExcelReadSheettoArray lee una celda en Excel que contiene una fecha por ejemplo "24/05/2013" la graba en el arreglo como: "20130524000000" y ahora yo la tengo que modificar para que quede como "24052013" para que mi sistema informático la valide,
¿Sabéis como puedo cambiarlo o mostrarlo así para poder enviarlo con un ControlSetText al campo correspondiente?
Gracias chicos!!!
qpongo
- arkcrew
- Profesional del Autoit
- Mensajes: 506
- Registrado: 28 Sep 2009, 19:17
- Ubicación: Granada, España
- Contactar:
Re: Excel, usar una hoja de calculo para rellenar formulario
Buenas,
Lo que pasa es que en el arreglo te la pasa a año-mes-dia-horas-minutos-segundos
Si siempre es asi el formato, puedes hacer lo siguiente:
Con el stringleft puedes trabajar quedándote con los 8 dígitos de la izquierda. De ahí puedes ir haciendo más stringsleft e ir quedándote con lo que quieras.
Ejemplo:
$var = StringLeft("20130524000000",8) ;devolverá -> 20130524
$year = StringLeft($var,4); devolverá -> 2013
Etc,
También, dado que sabes que siempre cumple lo mismo, con un bucle y una condición podrías saber los datos, incluso la función StringMid te serviría para acceder a todas las posiciones de la fecha,
$year = StringMid("20130524000000",1,4); ->2013
$mes = StringMid("20130524000000",5,2); -> 05
$dia= StringMid("20130524000000",7,2); ->24
Esta última es la más sencilla, funciona de la siguiente manera: String sobre el que trabajas, posición desde la que lees, numero de caracteres que lees.
Espero que te sirva!
Saludos!
Lo que pasa es que en el arreglo te la pasa a año-mes-dia-horas-minutos-segundos
Si siempre es asi el formato, puedes hacer lo siguiente:
Con el stringleft puedes trabajar quedándote con los 8 dígitos de la izquierda. De ahí puedes ir haciendo más stringsleft e ir quedándote con lo que quieras.
Ejemplo:
$var = StringLeft("20130524000000",8) ;devolverá -> 20130524
$year = StringLeft($var,4); devolverá -> 2013
Etc,
También, dado que sabes que siempre cumple lo mismo, con un bucle y una condición podrías saber los datos, incluso la función StringMid te serviría para acceder a todas las posiciones de la fecha,
$year = StringMid("20130524000000",1,4); ->2013
$mes = StringMid("20130524000000",5,2); -> 05
$dia= StringMid("20130524000000",7,2); ->24
Esta última es la más sencilla, funciona de la siguiente manera: String sobre el que trabajas, posición desde la que lees, numero de caracteres que lees.
Espero que te sirva!
Saludos!
ArkCrew
http://www.nodluna.blogspot.com
http://www.nodluna.blogspot.com
Re: Excel, usar una hoja de calculo para rellenar formulario
ArkCrew ..... Muchísimas gracias!!! Por ka rapidez y por el ejemplo. Con StringMid veo que me voy a apañar perfectamente. Espero luego saber concatenar dia+mes+año... pero probando lo consigo seguro. ..
Lo dicho graciassss.
qpongo
Lo dicho graciassss.
qpongo
Re: Excel, usar una hoja de calculo para rellenar formulario
También podrías hacer algo así:
[codelocal Enum $year,$mes,$dia
$arreglo=StringRegExp("20130524000000","(\d{4})(\d{2})(\d{2})",3)
consolewrite("Dia: " & $arreglo[$dia] & @crlf)
consolewrite("Mes: " & $arreglo[$mes] & @crlf)
consolewrite("Año: " & $arreglo[$year] & @crlf)
][/code]
saludos
[codelocal Enum $year,$mes,$dia
$arreglo=StringRegExp("20130524000000","(\d{4})(\d{2})(\d{2})",3)
consolewrite("Dia: " & $arreglo[$dia] & @crlf)
consolewrite("Mes: " & $arreglo[$mes] & @crlf)
consolewrite("Año: " & $arreglo[$year] & @crlf)
][/code]
saludos
- ............................................
......................................
Re: Excel, usar una hoja de calculo para rellenar formulario
Jejeje alucinado me dejas. Luego lo pruebo.
Muchas gracias
Muchas gracias
Re: Excel, usar una hoja de calculo para rellenar formulario
Dany,
Que esto me funcionó... y tu respuesta la utilizo como si fueran apuntes ... porque fue muy completa y como uso la función una vez y luego se me olvida, me voy imprimiendo lo que considero más interesante o que más voy a usar.
Sigo avanzando poco a poco.
GRACIAS, os seguiré dando "la matraca"
qpongo
Que esto me funcionó... y tu respuesta la utilizo como si fueran apuntes ... porque fue muy completa y como uso la función una vez y luego se me olvida, me voy imprimiendo lo que considero más interesante o que más voy a usar.
Sigo avanzando poco a poco.
GRACIAS, os seguiré dando "la matraca"
qpongo
Dany escribió:También podrías hacer algo así:
[codelocal Enum $year,$mes,$dia
$arreglo=StringRegExp("20130524000000","(\d{4})(\d{2})(\d{2})",3)
consolewrite("Dia: " & $arreglo[$dia] & @crlf)
consolewrite("Mes: " & $arreglo[$mes] & @crlf)
consolewrite("Año: " & $arreglo[$year] & @crlf)
][/code]
saludos
Re: Excel, usar una hoja de calculo para rellenar formulario
Que bien un gusto ver que avances, cualquier duda pregunta, aquí respondemos con gusto.
saludos
saludos
- ............................................
......................................