MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

2 participantes

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    avatar
    Fernando Lucas
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/09/2017

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    Mensagem  Fernando Lucas 27/11/2020, 13:01

    Num formulário tenho uma Caixa de listagem (Listbox) que mostra o resultado de uma pesquisa/busca.
    Os usuários querem Copiar (Copy) todo o conteúdo mostrado na Caixa de listagem (Listbox)  e Colar no Excel através ( Ctrl + V ).
    Como copiar o conteúdo do Listbox e cabeçalho com 4 colunas para a Área de Transferência (Clipboard) ?
    Obrigado.
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 383
    Registrado : 28/10/2010

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty Re: [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    Mensagem  zcarloslopes 30/11/2020, 09:05

    Bom dia Fernando Lucas,

    Tinha esta função nos meus arquivos que um vez encontrei na net (créditos para o autor), mas nunca testei.

    aqui vai:
    Código:
    'Purpose   :    Copies the selected items in a listview to the clipboard
    'Inputs    :    lvCopy              The listview to copy the selected items from
    '               [bIncludeHeaders]   If True the listview headers are also copied
    '               [lFirstCol]         The first column to copy to the clipboard,
    '                                   if not specified copies all columns
    '               [lLastCol]          The last column to copy to the clipboard,
    '                                   if not specified copies all columns
    '               [bCopyAll]          If True will copy all the listview items.
    'Outputs   :    Returns the number of items copied on success, else returns -1
    'Notes     :
    'Revisions :

    Function LvCopyToClipboard(lvCopy As ListView, Optional bIncludeHeaders As Boolean, Optional lFirstCol As Long = 1, Optional lLastCol As Long = -1, Optional bCopyAll As Boolean = False) As Long
        Dim lThisRow As Long, lThisCol As Long, lNumCols As Long
        Dim sRow As String, sClipboard As String
        
        On Error GoTo ErrFailed
        With lvCopy.ListItems
            'Loop over the items in the listview
            lNumCols = lvCopy.ColumnHeaders.count
            If lLastCol = -1 Then
                lLastCol = lNumCols
            End If
            If bIncludeHeaders Then
                sRow = ""
                For lThisCol = lFirstCol To lLastCol
                    sRow = sRow & (lvCopy.ColumnHeaders.Item(lThisCol).Text & vbTab)
                Next
                sClipboard = sClipboard & (sRow & vbNewLine)
            End If
            
            For lThisRow = 1 To .count
                If .Item(lThisRow).selected Or bCopyAll = True Then
                    'Copy the selected item
                    sRow = ""
                    sRow = .Item(lThisRow).Text
                    For lThisCol = lFirstCol To lLastCol - 1
                        sRow = sRow & (vbTab & .Item(lThisRow).SubItems(lThisCol))
                    Next
                    sClipboard = sClipboard & (sRow & vbNewLine)
                    LvCopyToClipboard = LvCopyToClipboard + 1
                End If
            Next
        End With
        
        Clipboard.Clear
        DoEvents
        Clipboard.SetText sClipboard, vbCFText
        
        Exit Function

    ErrFailed:
        Debug.Print "Error copying to clipboard " & err.description
        Debug.Assert False
        LvCopyToClipboard = -1
    End Function
    Diga se funcionou

    Fernando Lucas gosta desta mensagem

    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 383
    Registrado : 28/10/2010

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty Re: [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    Mensagem  zcarloslopes 30/11/2020, 11:15

    Neste exemplo que elaborei para uma dúvida de outro utilizador, adicionei um botão que copia todos os items seleccionados da listbox (incluido títulos das colunas) para o clipboard, podendo depois colar no excel, por exemplo.
    Anexos
    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) AttachmentNumEtiquetas_v7.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (55 Kb) Baixado 22 vez(es)

    Fernando Lucas gosta desta mensagem

    avatar
    Fernando Lucas
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/09/2017

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty Resolvido

    Mensagem  Fernando Lucas 1/12/2020, 01:32

    Obrigado zcarloslopes,   -   Resolvido
    Sua  solução funciona para múltiplos itens selecionados no listbox. No meu caso só pode haver um item selecionável, pq no duplo clique sobre o item remete-se a outro Form.
    Estudando casos semelhantes inclusive a sua colaboração,  elaborei outra solução que resolveu a transferência de todos os valores do listbox para a area de transferência (Clipboard) sem a necessidade de seleção.
    Solução:
    No Form adicionar um botão para o comando Copiar, e  adicionar um Textbox, reduzi-lo ao menor tamanho possível para não ser visualizado pelo usuário.

    Private Sub btCopyListboxClipboard_Click()
    'Copy all listbox content to clipboard
    'Add a Textbox in the Form to receveid the Listbox content
    'Copia todo o conteudo da caixa de listagem para a Área de Transferência
    'by Fernando Lucas - 2020/11
    ' MsAccess, Access, VBA

      On Error Resume Next
      Dim i, TotRow As Long
      Me.txtClipboard = "Número" & Chr(9) & "Responsável" & Chr(9) & "Data Entrada" & Chr(9) & _
                      & "Obs Entrada" & Chr(13) + Chr(10)     '  Chr(9) = Tab
      TotRow = listPesq.ListCount - 1

      For i = 1 To TotRow
         Me.txtClipboard = Me.txtClipboard & Me.listPesq.Column(1, i) & Chr(9) & Me.listPesq.Column(2, i) & Chr(9) & _
         Me.listPesq.Column(3, i) & Chr(9) & Me.listPesq.Column(4, i)  & Chr(13) + Chr(10)
      Next i
      Me.txtClipboard.SetFocus  
      DoCmd.RunCommand acCmdCopy    'Copy to Clipboard
      Me.txtClipboard = ""
      Me.btCopyListboxClipboard.SetFocus
    End Sub


    Última edição por Fernando Lucas em 2/12/2020, 13:55, editado 1 vez(es)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 383
    Registrado : 28/10/2010

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty Re: [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    Mensagem  zcarloslopes 2/12/2020, 08:26

    Não esqueça de dar o tópico como resolvido!
    avatar
    Fernando Lucas
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/09/2017

    [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard) Empty Re: [Resolvido]Copiar Caixa de listagem (Listbox) para Área de Transferência (Clipboard)

    Mensagem  Fernando Lucas 6/12/2020, 04:13

    Solução:
    No Form adicionar um botão para o comando Copiar, e adicionar um Textbox, reduzi-lo ao menor tamanho possível para não ser visualizado pelo usuário.

    Private Sub btCopyListboxClipboard_Click()
    'Copy all listbox content to clipboard
    'Add a Textbox in the Form to receveid the Listbox content
    'Copia todo o conteudo da caixa de listagem para a Área de Transferência
    'by Fernando Lucas - 2020/11
    ' MsAccess, Access, VBA

    On Error Resume Next
    Dim i, TotRow As Long
    Me.txtClipboard = "Número" & Chr(9) & "Responsável" & Chr(9) & "Data Entrada" & Chr(9) & _
    & "Obs Entrada" & Chr(13) + Chr(10) ' Chr(9) = Tab
    TotRow = listPesq.ListCount - 1

    For i = 1 To TotRow
    Me.txtClipboard = Me.txtClipboard & Me.listPesq.Column(1, i) & Chr(9) & Me.listPesq.Column(2, i) & Chr(9) & _
    Me.listPesq.Column(3, i) & Chr(9) & Me.listPesq.Column(4, i) & Chr(13) + Chr(10)
    Next i
    Me.txtClipboard.SetFocus
    DoCmd.RunCommand acCmdCopy 'Copy to Clipboard
    Me.txtClipboard = ""
    Me.btCopyListboxClipboard.SetFocus
    End Sub

      Data/hora atual: 26/9/2021, 10:42