Excel, usar una hoja de calculo para rellenar formularios

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Excel, usar una hoja de calculo para rellenar formularios

Mensaje por qpongo »

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.
Ejemplo Lineas para contabilizar.xls
(9.06 KiB) Descargado 266 veces
Muchas no... muchísimas gracias por vuestra ayuda :smt024 :smt023

Qpongo
Adjuntos
Ejemplo Lineas para contabilizar.xls
(9.06 KiB) Descargado 234 veces
Avatar de Usuario
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

Mensaje por Chefito »

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.
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 ;).
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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.
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?

Gracias otra vez y perdonad si no he escrito las funciones bien.....estoy desde el movil y no recuerdo los nombres exactos.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por Dany »

hola, la verdad no me queda claro lo que quieres hacer pero podrías rellenar el arreglo así.

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
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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)






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)
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por Dany »

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
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por Dany »

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.
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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.
Hola Dany y compañeros del foro...

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
Avatar de Usuario
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

Mensaje por arkcrew »

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!
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por Dany »

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
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

Jejeje alucinado me dejas. Luego lo pruebo.
Muchas gracias
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por qpongo »

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



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
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Excel, usar una hoja de calculo para rellenar formulario

Mensaje por Dany »

Que bien un gusto ver que avances, cualquier duda pregunta, aquí respondemos con gusto.

:smt027
saludos
  • ............................................Imagen
    ......................................Imagen
Responder