** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Objeto Clipboard en VBA
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoObjeto Clipboard en VBA

 Responder Responder
Autor
Mensaje
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11317
Enlace directo a este mensaje Tema: Objeto Clipboard en VBA
    Enviado: 09/Agosto/2013 a las 20:48

En VBA de Access no existe el objeto Clipboard. A veces nos encontramos con la necesidad de copiar el contenido de un campo o de una expresión en el porta-papeles de Windows, para volcarlo posteriormente en cualquier otro sitio.

El tema es relativamente sencillo de hacer, cuando nos movemos en una misma aplicación. Me explico. Si yo quiero conservar el valor de un campo para utilizarle en otro campo de cualquier otro formulario, bastará con declarar en un módulo Bas de nuestra aplicación, una variable Public que almacene dicho valor. Por ejemplo:

Dim MiClipboard As String

Si en Frm1 deseo «copiar» el contenido de Micampo1, bastaría, simplemente:

MiClipboard=Me.Micampo1

Y posteriormente, si deseo volcar ese valor en Micampo2 de otro formulario, simplemente poner:

Me.Micampo2 = MiClipboard

Al fin y al cabo, hemos simulado un copy-paste y en muchas ocasiones puede servir y bastar. Pero hay más técnicas para esto.

RunCommand

Me.Campo1.SetFocus

RunCommand acCmdCopy

y luego

Me.Campo2.SetFocus

RunCommand acCmdPaste


Actuar directamente sobre el objeto Portapapeles de Windows.

En VBA hay que refenciar previamente Proyecto > Componentes > "Microsoft Forms 2.0 Object Library", Es decir, la fm20.dll
Y luego, en efecto, instanacirla:


Dim ObjetoClipboard As MSForms.DataObject

Set ObjetoClipboard = New MSForms.DataObject

ObjetoClipboard.Clear  'esto borra el portapapeles

ObjetoClipboard.SetText "Esto va al portapapeles", 1

ObjetoClipboard.PutInClipboard

MsgBox "En el portapapeles actualmente hay: " & ObjetoClipboard.GetText

Si aplico esto al caso anterior....

Dim ObjetoClipboard As MSForms.DataObject

Set ObjetoClipboard = New MSForms.DataObject

ObjetoClipboard.Clear  'esto borra el portapapeles

ObjetoClipboard.SetText Me.Campo1, 1

Me.Campo2 = ObjetoClipboard.GetText


Vaciar el portapeles mediante API

Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long

 

Private Declare Function EmptyClipboard Lib "user32" () As Long

 

Sub VaciaPortapapeles()

  OpenClipboard Me.hwnd

  'Vacia el portapapeles:

  EmptyClipboard

End Sub

Expulsado de la cárcel por robar los barrotes
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable