MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Referência a biblioteca Área de Transferência do Windows

    avatar
    jamesresplandes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 25/07/2010

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty [Resolvido]Referência a biblioteca Área de Transferência do Windows

    Mensagem  jamesresplandes em 14/3/2019, 19:27

    Gostaria de saber qual a referência que devo usar para transferir um texto para Área de Transferência do Windows?
    Achei esse código na net para copiar o texto, ocorre que precisa fazer referência a uma biblioteca e eu não estou achando.
    Estou usando o Access 2013.

    Sub Colocar1()
       
       Dim dtobj As MSForms.DataObject
       Set dtobj = New MSForms.DataObject
       
       Dim s As String
       s = "Benzadeus!"
       dtobj.SetText s
       dtobj.PutInClipboard

    End Sub
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 498
    Registrado : 22/11/2016

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty Re: [Resolvido]Referência a biblioteca Área de Transferência do Windows

    Mensagem  IvanJr. em 14/3/2019, 21:52

    bem simples
    Código:
    Me!Texto0.SetFocus 'movendo o foco para o campo que contém o texto
        Me!Texto0.SelStart = 0 'colocando o ponteiro no início do texto
        Me!Texto0.SelLength = Len(Me!Texto0.Value) 'mandando selecionar a quantidade de caracteres que o texto tem, ou seja, o texto todo
        DoCmd.RunCommand acCmdCopy 'dando o famosão Ctrl + C, deixando o texto na área de transferência


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    avatar
    jamesresplandes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 25/07/2010

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty Re: [Resolvido]Referência a biblioteca Área de Transferência do Windows

    Mensagem  jamesresplandes em 14/3/2019, 23:40

    Muito obrigado por responder tão rapidamente,

    mas o meu propósito é copiar o conteúdo de uma variável tipo string (mas pode ser qualquer tipo) para a área de transferência. Tem como fazer isso?
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 498
    Registrado : 22/11/2016

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty Re: [Resolvido]Referência a biblioteca Área de Transferência do Windows

    Mensagem  IvanJr. em 15/3/2019, 01:06

    Crie um novo módulo global e coloque um nome apropriado e cole o código abaixo nele
    Código:
    Option Compare Database
    Option Explicit

    Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
    Private Declare Function CloseClipboard Lib "user32.dll" () As Long
    Private Declare Function SetClipboardData Lib "user32.dll" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long
    Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long

    Public Sub SetClipboard(sUniText As String)
        Dim iStrPtr As Long
        Dim iLen As Long
        Dim iLock As Long
        Const GMEM_MOVEABLE As Long = &H2
        Const GMEM_ZEROINIT As Long = &H40
        Const CF_UNICODETEXT As Long = &HD
        OpenClipboard 0&
        EmptyClipboard
        iLen = LenB(sUniText) + 2&
        iStrPtr = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, iLen)
        iLock = GlobalLock(iStrPtr)
        lstrcpy iLock, StrPtr(sUniText)
        GlobalUnlock iStrPtr
        SetClipboardData CF_UNICODETEXT, iStrPtr
        CloseClipboard
    End Sub

    Aí então é só chamar o procedimento que o texto irá para área de transferência
    Código:
    Call SetClipboard("Um texto qualquer")

    ou
    Código:
    Call SetClipboard(NomeDeUmaVariável)


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    avatar
    jamesresplandes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 25/07/2010

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty Resolvido

    Mensagem  jamesresplandes em 20/3/2019, 19:58

    Obrigado IvanJr,

    Fiz o teste com esse código, deu muito certo... valeu pela atenção!
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 498
    Registrado : 22/11/2016

    [Resolvido]Referência a biblioteca Área de Transferência do Windows Empty Re: [Resolvido]Referência a biblioteca Área de Transferência do Windows

    Mensagem  IvanJr. em 20/3/2019, 22:18

    Sucesso. Obrigado pelo retorno. O fórum agradece.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.

      Data/hora atual: 24/4/2019, 07:32