Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro para traer datos desde un CVS a un libro Excel

17 views
Skip to first unread message

colm...@gmail.com

unread,
Aug 26, 2008, 3:56:58 PM8/26/08
to
Hola a todos.

Tengo un libro donde tomo los pedidos de la empresa y tengo un
archivo .CSV que tiene la información que debo registrar en el libro
de pedidos.

Al abrir el CSV se abre otro libro de manera organizada (cada campo en
su columna), la columna C tiene el código del producto y la columna G
tiene las unidades del producto.

El libro de hoja de pedido tiene un comentario en cada celda que
contiene el código del producto.

La idea es la siguiente: Si el código del producto del archivo CSV
coincide con el comentario de la celda del libro de hoja de pedido
entonces asignarle a la celda del libro de pedido el contenido de la
columna G del archivo CSV que son las unidades. De esta manera se
llenaría la hoja de pedido alimentándose de la lectura del CSV.

Espero haberme explicado y que me puedan ayudar.

Gracias.

Saludos,

Flor.

Héctor Miguel

unread,
Aug 26, 2008, 5:25:08 PM8/26/08
to
hola, Flor !

> Tengo un libro donde tomo los pedidos de la empresa y... un archivo .CSV que tiene la informacion que debo registrar
> ... el CSV... la columna C tiene el codigo del producto y la columna G tiene las unidades del producto.
> El libro de hoja de pedido tiene un comentario en cada celda que contiene el codigo del producto.

supongo que el *.CSV lo abres con excel y se "ajusta" a los formatos de un libro de excel, pero...
al salir lo guardas como libro de excel ?... (o descartas los cambios y sigue como *.CSV ?)

y... cual es la celda/columna donde tienes el codigo del producto ? (y/o donde esta el comentario ?)
el comentario al que haces referencia es un comentario de celda ? (menu: insertar / comentario)
o es una celda adyacente con algun texto comentando cualquier detalle relacionado ???

> Si el codigo del producto del archivo CSV coincide con el comentario de la celda del libro de hoja de pedido
> ... asignarle a la celda del libro de pedido el contenido de la columna G del archivo CSV que son las unidades.
> De esta manera se llenaria la hoja de pedido alimentandose de la lectura del CSV.

en cual otra celda habra de asignarse el contenido de la columna G del *.CSV ?

podrias exponer algunos detalles mas concretos ?
(de forma que se pueda re/construir el modelo a resolver ?)

saludos,
hector.


colm...@gmail.com

unread,
Aug 27, 2008, 10:42:18 AM8/27/08
to
On 26 ago, 17:25, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

Hola Héctor Miguel.. de antemano Gracias por el apoyo :)

En relación a los detalles a continuación te los indico:

1.- Al salir descarto los cambios y queda como CSV, pero si es
necesario grabarlo como libro Excel no hay problema.

2.- El comentario es un comentario de celda (menú->insertar-
>comentario). Estos comentarios están a lo largo de todo el libro, por
ejemplo desde la B21 hasta la N167. Cada celda representa un producto.

3.- El contenido de la columna G del CSV sólo se asigna en la celda
del libro de pedido cuyo comentario coincida con el código del
producto que esta en la columna C del CSV.

Espero haber aclarado el panorama. Gracias.

Saludos,

Flor.

Héctor Miguel

unread,
Aug 27, 2008, 12:59:34 PM8/27/08
to
hola, Flor !

> 1.- Al salir descarto los cambios y queda como CSV, pero si es necesario grabarlo como libro Excel no hay problema.

no lo creo, segun parece, se requerira del uso de macros ;)

> 2.- El comentario es un comentario de celda (menu->insertar->comentario).
> Estos comentarios estan a lo largo de todo el libro, por ejemplo desde la B21 hasta la N167.


> Cada celda representa un producto.
>

> 3.- El contenido de la columna G del CSV solo se asigna en la celda del libro de pedido
> cuyo comentario coincida con el codigo del producto que esta en la columna C del CSV.

algun ejemplo del contenido de algunas celdas y sus comentarios en el libro de pedidos ?
y como determinar si "el comentario"... coincide con... (que se busca ???) en el *.CSV ?
y "donde" se pone... "que dato" (o sea, de donde a donde) ?

saludos,
hector.

__ OP __

colm...@gmail.com

unread,
Aug 27, 2008, 3:52:34 PM8/27/08
to
On 27 ago, 12:59, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:
> > (de forma que se pueda re/construir el modelo a resolver ?)- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Hola Héctor Miguel.

Requiero comparar con un macro que corra en el Libro de Pedidos algo
así (esto sería dentro de un For):

Si Worksheets(Hoja).Range(celda).Comment.Text = Archivo CSV.ColumnaC
Entonces
Worksheets(Hoja).Range(celda) = Archivo CSV.ColumnaG

Es decir, traerse los datos del CSV al Libro de Pedidos.

Espero sea posible hacer algo así con una macro...

Gracias.

Saludos,

Flor.

Héctor Miguel

unread,
Aug 27, 2008, 7:49:15 PM8/27/08
to
hola, Flor !

partiendo de lo siguiente conocido:


>> 2.- El comentario es un comentario de celda (menu->insertar->comentario).

>> Estos comentarios estan a lo largo de todo el libro, por ejemplo desde la B21 hasta la N167...


>> 3.- El contenido de la columna G del CSV solo se asigna en la celda del libro de pedido
>> cuyo comentario coincida con el codigo del producto que esta en la columna C del CSV.

y de tu argumentacion en este mensaje:
> Requiero comparar con un macro que corra en el Libro de Pedidos algo asi (esto sería dentro de un For):


> Si Worksheets(Hoja).Range(celda).Comment.Text = Archivo CSV.ColumnaC Entonces
Worksheets(Hoja).Range(celda) = Archivo CSV.ColumnaG
> Es decir, traerse los datos del CSV al Libro de Pedidos.

lo que pides seria algo +/- como lo siguiente:
se asume que el archivo *.csv ya esta abierto y permanece como el libro activo <= OJO

dim celda as range, comentario as string
for each celda in workbooks("libro de pedidos").worksheets("hoja de pedidos").range("b21:n167")
comentario = celda.comment.text
with application
if .countif(range("c:c"), comentario) then
celda = .index(range("g:g"), match(comentario, range("c:c"), 0))
end if
end with
next

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.


colm...@gmail.com

unread,
Aug 29, 2008, 10:55:21 AM8/29/08
to
On 27 ago, 19:49, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

Hola Héctor...

No me reconoce la función match la cambié por coincidir pero tampoco
la toma.

¿Qué se debe hacer en este caso? Gracias.

Saludos,

Flor.

Héctor Miguel

unread,
Aug 29, 2008, 5:41:58 PM8/29/08
to
hola, Flor !

> No me reconoce la funcion match la cambié por coincidir pero tampoco la toma.
> Qu3 se debe hacer en este caso? Gracias.

perdon, hay un ligero error "tipografico" en la propuesta
cambia esta parte del codigo:
de: -> celda = .index(range("g:g"), match(comentario, range("c:c"), 0))
a: -> celda = .index(range("g:g"), .match(comentario, range("c:c"), 0))

me he "comido" un punto ANTES de llamar a la funcion :-((

saludos,
hector.

__ OP __

colm...@gmail.com

unread,
Sep 1, 2008, 10:56:06 AM9/1/08
to
On 29 ago, 17:41, "Héctor Miguel" <NOhemiordiS...@PLShotmail.com>
wrote:

> hola, Flor !
>
> > No me reconoce la funcion match la cambié por coincidir pero tampoco la toma.
> > Qu3 se debe hacer en este caso? Gracias.
>
> perdon, hay un ligero error "tipografico" en la propuesta
> cambia esta parte del codigo:
> de: -> celda = .index(range("g:g"), match(comentario, range("c:c"), 0))
>   a: -> celda = .index(range("g:g"), .match(comentario, range("c:c"), 0))
>
> me he "comido" un punto ANTES de llamar a la funcion    :-((
>
> saludos,
> hector.
>
> __ OP __
>
>
>
> > partiendo de lo siguiente conocido:
>
> >>> 2.- El comentario es un comentario de celda (menu->insertar->comentario).
> >>> Estos comentarios estan a lo largo de todo el libro, por ejemplo desde la B21 hasta la N167...
> >>> 3.- El contenido de la columna G delCSVsolo se asigna en la celda del libro de pedido

> >>> cuyo comentario coincida con el codigo del producto que esta en la columna C delCSV.
>
> > y de tu argumentacion en este mensaje:
> >>> Requiero comparar con un macro que corra en el Libro de Pedidos algo asi (esto sería dentro de un For):
> >>> Si Worksheets(Hoja).Range(celda).Comment.Text = ArchivoCSV.ColumnaC Entonces
> >>> Worksheets(Hoja).Range(celda) = ArchivoCSV.ColumnaG
> >>> Es decir, traerse los datos delCSVal Libro de Pedidos.

>
> > lo que pides seria algo +/- como lo siguiente:
> > se asume que el archivo *.csvya esta abierto y permanece como el libro activo <= OJO

>
> > dim celda as range, comentario as string
> > for each celda in workbooks("libro de pedidos").worksheets("hoja de pedidos").range("b21:n167")
> > comentario = celda.comment.text
> > with application
> > if .countif(range("c:c"), comentario) then
> > celda = .index(range("g:g"), match(comentario, range("c:c"), 0))
> > end if
> > end with
> > next- Ocultar texto de la cita -

>
> - Mostrar texto de la cita -

Hola Héctor...

Coloqué el punto como me indicaste, pero ahora cuando llega a la línea
comentario = celda.comment.text me da un mensaje de error: "Se ha
producido el error 91 en tiempo de ejecución: Variable de objeto o
bloque With no establecido".

¿que le falta? :((

Gracias Héctor.

Saludos,

Flor.

0 new messages