Como copiar texto contido no guia do Excel sem aspas?

0

Eu notei que uma célula que contém um aba é copiado com aspas incorporadas. Estou procurando copiar esse tipo de célula sem as aspas.


Exemplo ilustrativo

Tenho 5 células; A1, A2, A3, A4 e A5. As fórmulas para eles são:

enter image description here

É assim que eles seriam no Excel:

enter image description here

As fórmulas são definidas assim para que o resultado esperado ao copiar células para um editor de texto seja assim:

enter image description here

Infelizmente, isso é o que eu recebo:

enter image description here

O problema é com citações . O que eu preciso é copiar essas células sem as aspas.

Omar
fonte
Eu presumo que encontrar / substituir por "tab e 1" é uma solução inaceitável, dada a sua informação real? Ou isso é uma questão geral de aborrecimento e não específico para um arquivo específico?
Engineer Toast
Sim, esta não é uma questão específica de situação específica, é uma questão geral de aborrecimento. O que eu preciso é copiar as células sem as aspas duplas. Encontrar / substituir por "tab e 1" Não é uma solução porque a situação mencionada é apenas para fins ilustrativos, e eu preciso de uma solução incorporada no Excel para que eu pudesse terminar meus objetivos como poucos passos possíveis sem as aspas duplas aparecendo com o texto copiado.
Omar
Então o VBA que enviei configurado para um comando de teclado fará o truque.
Engineer Toast

Respostas:

2

Como sobre uma solução VBA? Isso irá copiar toda a seleção da célula selecionada no canto superior esquerdo para a célula selecionada no canto inferior direito. Se você selecionar células incongruentes, este código coletará tudo entre o canto superior esquerdo e o inferior direito de qualquer maneira. Você pode mudar isso, é claro. Foi mais fácil assim. Coloca guias entre as colunas e as quebras de linha entre as linhas.

Sub CopyText()

    Dim obj As Object
    Dim rng As Range
    Dim r As Long, c As Long
    Dim s As String
    Dim rTL, rBR, cTL, cBR

    rTL = Selection.Cells(1, 1).Row
    cTL = Selection.Cells(1, 1).Column

    For Each rng In Selection.Cells
        If rng.Row < rTL Then rTL = rng.Row
        If rng.Column < cTL Then cTL = rng.Column
        If rng.Row > rBR Then rBR = rng.Row
        If rng.Column > cBR Then cBR = rng.Column
    Next

    For r = rTL To rBR
        For c = cTL To cBR
            s = s & Cells(r, c).Value
            If c < cBR Then s = s & Chr(9)
        Next
        If r < rBR Then s = s & vbNewLine
    Next

    Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    obj.SetText s
    obj.PutInClipboard
    Set obj = Nothing

End Sub

Se você está se perguntando sobre esta parte:

Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

... é apenas a versão tardia do Set obj = New DataObject então você não precisa adicionar nenhuma referência no VBA.

Engineer Toast
fonte