(vba) Recorrer celdas copiadas en el clipboard

29/06/2009 - 21:13 por jose | Informe spam
Buenas,
Necesito una macro que recorra las celdas que copié anteriormente de manera
manual. Esto significa:

a) Escribo "hola" en A1 y "mundo" en A2.
b) Selecciono, manualmente (sin macros), A1 y A2, Edición y Copiar.

Ahora bien, tengo en el clipboard los valores de A1 y A2.

Quiero ejecutar ahora una macro que tome del clipboard el rango A1:A2, los
recorra para obtener del portapapeles los valores "Hola" y "Mundo".

Gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/06/2009 - 21:26 | Informe spam
hola, jose !

Necesito una macro que recorra las celdas que copie anteriormente de manera manual...:
a) Escribo "hola" en A1 y "mundo" en A2.
b) Selecciono, manualmente (sin macros), A1 y A2, Edicion y Copiar.
Ahora bien, tengo en el clipboard los valores de A1 y A2.
Quiero ejecutar ahora una macro que tome del clipboard el rango A1:A2
los recorra para obtener del portapapeles los valores "Hola" y "Mundo".



para trabajar con el portapapeles (de windows) desde vba, necesitaras mas de dos lineas de codigo
(dependiendo de lo que necesites hacer con los datos en/a dicho clipboard)

prueba consultando la informacion de la siguiente pagina:
Using The Clipboard In VBA
http://www.cpearson.com/Excel/clipboard.aspx

saludos,
hector.
Respuesta Responder a este mensaje
#2 jose
29/06/2009 - 21:57 | Informe spam
Lo ví anteriormente pero tiene dos temas:

1) Storing Multiple Items In The Clipboard no me funcionó, me dice que
almacena los valores pero luego me da "Format does not exist on clipboard."
(por B en false). Si intento Pegar común, excel me dice "microsoft office
excel cannot paste the data." (uso excel 2003)

2) Suponiendo que funcione el punto 1). En el ejemplo, se copia desde una
macro, y le setea nombre "FormatId". Yo necesito el copy común del usuario,
por lo que no se el nombre con el que Excel copia al portapapeles.

gracias.





"Héctor Miguel" wrote:

hola, jose !

> Necesito una macro que recorra las celdas que copie anteriormente de manera manual...:
> a) Escribo "hola" en A1 y "mundo" en A2.
> b) Selecciono, manualmente (sin macros), A1 y A2, Edicion y Copiar.
> Ahora bien, tengo en el clipboard los valores de A1 y A2.
> Quiero ejecutar ahora una macro que tome del clipboard el rango A1:A2
> los recorra para obtener del portapapeles los valores "Hola" y "Mundo".

para trabajar con el portapapeles (de windows) desde vba, necesitaras mas de dos lineas de codigo
(dependiendo de lo que necesites hacer con los datos en/a dicho clipboard)

prueba consultando la informacion de la siguiente pagina:
Using The Clipboard In VBA
http://www.cpearson.com/Excel/clipboard.aspx

saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
29/06/2009 - 22:21 | Informe spam
hola, jose !

Lo vi anteriormente pero tiene dos temas:
1) Storing Multiple Items In The Clipboard no me funciono
me dice que almacena los valores pero luego me da "Format does not exist on clipboard" (por B en false).
Si intento Pegar comun, excel me dice "microsoft office excel cannot paste the data." (uso excel 2003)
2) Suponiendo que funcione el punto 1). En el ejemplo, se copia desde una macro, y le setea nombre "FormatId".
Yo necesito el copy comun del usuario, por lo que no se el nombre con el que Excel copia al portapapeles...



1) de los primeros comentarios en la pagina sugerida, habras notado el siguiente:
"VBA does not support the data type required for other, non-text, values on the clipboard"

2) retomando el comentario del mensaje anterior...
"... necesitaras mas de dos lineas de codigo"
"(dependiendo de lo que necesites hacer con los datos en/a dicho clipboard)"

supongo que tendrias que buscar adaptar otro tipo de funciones (no nativas de VBA) como p.e.:
-> EnumClipboardFormats: Identify Clipboard Data Available
http://vbnet.mvps.org/code/system/c...ormats.htm

3) serviria tambien si comentas algo menos... "generico", p.e.:
-> cual es la necesidad de "consultar" al portpapeles si tienes disponibe "el origen" de los datos (?)
-> algun otro detalle que tu conoces pero que no se puede "adivinar" desde este lado (del mensaje) ?

saludos,
hector.
Respuesta Responder a este mensaje
#4 jose
29/06/2009 - 22:41 | Informe spam
Hola Héctor, mira, el "origen" no lo puedo saber en realidad, porque el Copy
puede ser de un excel que cerré. Pasos:

1) abro un libro.
2) Copio A1:A2
3) Cierro libro.

luego quiero pegar con una macro en otro libro A1:A2. El origen lo perdí
porque cerré el libro.

Mucho de lo que quiero hacer tiene relación con otro post que realicé:

"Pegar en celdas con merge". Tengo un origen de una planilla exportada a
excel de un sistema, en tabla plana, y necesito pegarla en una planilla con
celdas con merge. Pero se tiene que pasar a través de copy/paste, no se puede
utilizar fórmulas (antes ponía un =[Book2]Sheet1!A1 en las celdas con merge,
luego copy y paste con value, pero ya no sirve), ni copiar columna por
columna, etc.

por ahí con tener "Pegar en celdas con merge" me da una idea.

Seguiré investigando este tema, gracias.

"Héctor Miguel" wrote:

hola, jose !

> Lo vi anteriormente pero tiene dos temas:
> 1) Storing Multiple Items In The Clipboard no me funciono
> me dice que almacena los valores pero luego me da "Format does not exist on clipboard" (por B en false).
> Si intento Pegar comun, excel me dice "microsoft office excel cannot paste the data." (uso excel 2003)
> 2) Suponiendo que funcione el punto 1). En el ejemplo, se copia desde una macro, y le setea nombre "FormatId".
> Yo necesito el copy comun del usuario, por lo que no se el nombre con el que Excel copia al portapapeles...

1) de los primeros comentarios en la pagina sugerida, habras notado el siguiente:
"VBA does not support the data type required for other, non-text, values on the clipboard"

2) retomando el comentario del mensaje anterior...
"... necesitaras mas de dos lineas de codigo"
"(dependiendo de lo que necesites hacer con los datos en/a dicho clipboard)"

supongo que tendrias que buscar adaptar otro tipo de funciones (no nativas de VBA) como p.e.:
-> EnumClipboardFormats: Identify Clipboard Data Available
http://vbnet.mvps.org/code/system/c...ormats.htm

3) serviria tambien si comentas algo menos... "generico", p.e.:
-> cual es la necesidad de "consultar" al portpapeles si tienes disponibe "el origen" de los datos (?)
-> algun otro detalle que tu conoces pero que no se puede "adivinar" desde este lado (del mensaje) ?

saludos,
hector.






Our Peering Groups change
Visit : http://spacesst.com/peerin
Respuesta Responder a este mensaje
#5 Héctor Miguel
29/06/2009 - 22:56 | Informe spam
hola, jose !

... el "origen" no lo puedo saber en realidad, porque el Copy puede ser de un excel que cerre. Pasos:
1) abro un libro.
2) Copio A1:A2
3) Cierro libro.
luego quiero pegar con una macro en otro libro A1:A2. El origen lo perdi porque cerre el libro.



=> hasta aqui, puedes reproducir el siguiente ejemplo (con base exclusivamente en los detalles de esta consulta)

1) abres un libro
2) copias A1:A2
3) cierras el libro
4) obtienes los datos desde el clipboard (no importa si el libro "de origen" ya se ha cerrado) con una macro +/- asi:

Sub Pegar_cliboard()
Range("a1").Select
ActiveSheet.PasteSpecial
End Sub

Mucho de lo que quiero hacer tiene relacion con otro post que realice: "Pegar en celdas con merge".
Tengo un origen de una planilla exportada a excel de un sistema, en tabla plana, y necesito pegarla en una planilla con celdas con merge.
Pero se tiene que pasar a traves de copy/paste, no se puede utilizar formulas
(antes ponia un =[Book2]Sheet1!A1 en las celdas con merge, luego copy y paste con value, pero ya no sirve)
ni copiar columna por columna, etc.



=> con el tema de las celdas "combinadas"...
(prefiero no meterme hasta tener al detalle todo lo que se requiere hacer con ellas) :))

saludos,
hector.



Less Spam Better enjoyable experience
Visit : news://spacesst.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida