Macro para traer datos desde un CVS a un libro Excel

26/08/2008 - 21:56 por colmenaf | Informe spam
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.

Preguntas similare

Leer las respuestas

#6 colmenaf
29/08/2008 - 16:55 | Informe spam
On 27 ago, 19:49, "Héctor Miguel"
wrote:
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.



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.
Respuesta Responder a este mensaje
#7 Héctor Miguel
29/08/2008 - 23:41 | Informe spam
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 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
Respuesta Responder a este mensaje
#8 colmenaf
01/09/2008 - 16:56 | Informe spam
On 29 ago, 17:41, "Héctor Miguel"
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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida