Página 1 de 1

Excel, usar una hoja de calculo para rellenar formularios

Publicado: 05 Jun 2013, 13:38
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 276 veces
Muchas no... muchísimas gracias por vuestra ayuda :smt024 :smt023

Qpongo

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

Publicado: 05 Jun 2013, 17:46
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.

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

Publicado: 08 Jun 2013, 09:32
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.

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

Publicado: 10 Jun 2013, 17:06
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

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

Publicado: 10 Jun 2013, 18:38
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)

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

Publicado: 10 Jun 2013, 19:24
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

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

Publicado: 10 Jun 2013, 19:30
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

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

Publicado: 10 Jun 2013, 19:36
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.

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

Publicado: 24 Sep 2013, 18:23
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

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

Publicado: 24 Sep 2013, 19:36
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!

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

Publicado: 24 Sep 2013, 20:01
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

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

Publicado: 25 Sep 2013, 04:23
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

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

Publicado: 25 Sep 2013, 07:47
por qpongo
Jejeje alucinado me dejas. Luego lo pruebo.
Muchas gracias

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

Publicado: 07 Oct 2013, 13:28
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

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

Publicado: 07 Oct 2013, 19:14
por Dany
Que bien un gusto ver que avances, cualquier duda pregunta, aquí respondemos con gusto.

:smt027
saludos