Access y VBA
Blog de Access y VBA del Buho


Inicio


Acerca de
Suscríbete al blog

Categorías
General [3] Sindicar categoría
Access con Codigo VBA [15] Sindicar categoría

Archivos
Septiembre 2005 [11]
Agosto 2005 [5]
Junio 2005 [2]

Sindicación (RSS)
Artículos
Comentarios

 


Objeto ClipBoard en Access

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

Por ErBuho - 5 de Septiembre, 2005, 1:24, Categoría: Access con Codigo VBA
Enlace Permanente | Referencias (0)




<<   Septiembre 2005    
LMMiJVSD
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   

Enlaces
eGrupos
ZoomBlog

 

Blog alojado en ZoomBlog.com