Eu descobri uma maneira de contornar isso. Em vez de usar um código VBA para converter um intervalo selecionado em HTML, eu usei uma rota alternativa usando fórmulas e um único código VBA.
A primeira coisa que fiz foi criar um Sheet5
, depois peguei os dados brutos em HTML da tabela que eu estava tentando replicar (mapeando as linhas Desc!1:16
para as colunas Sheet5!A:K
) e os dividi, colocando as quebras na código era eu iria inserir as novas informações. Peguei cada pedaço e colei em A2:K2
. Em seguida, peguei as informações que alterei manualmente e as vinculei ao meu livro em A4:K4
. (Estes estão usando links para células na minha página de registro que mudam com cada listagem que eu faço.)
Na célula L2
, eu coloquei a fórmula
=CONCATENATE(A2,A4,B2,B4,C2," ",C4,D2," ",D4,E2," ",E4,F2," ",F4,
G2," ",G4,H2," ",H4,I2," ",I4,J2," ",J4,K2)
(a quebra de linha é apenas para apresentação).
Isso levou cada pedaço de HTML bruto e as informações do meu log e combinou-o mostrando um código HTML completo. Na célula C11
da minha planilha de registro, eu coloquei =Sheet5!$L$2
para mostrar os dados HTML na minha página principal para copiar e colar o valor.
Depois disso, notei que o Excel adicionaria aspas duplas a tudo o que já estava cotado e aspas simples para outras áreas. Depois de fazer algumas pesquisas, encontrei um código que copiava os valores de uma célula selecionada para que eu pudesse colar o código HTML sem aspas. Aqui está a macro que usei para isso:
Sub CopyCellContents()
Range("C11").Select
'create a reference in the VBE to Microsft Forms 2.0 Lib
Dim objData As New DataObject
Dim strTemp As String
strTemp = ActiveCell.Value
objData.SetText (strTemp)
objData.PutInClipboard
End Sub
Eu usei a Pearson Software Consulting (ou seja, Chip Pearson) Usando o site Área de Transferência do Windows no VBA para a macro.
Encontrei um problema com os dados definidos pelo usuário.
Para resolver isso, eu tive que sair do depurador de código,
reabra o módulo com a macro, vá para “Ferramentas” → “Referências”,
e, em seguida, navegue e digite FM20.DLL
em “Nome do arquivo:”.
Caso contrário, não consegui encontrar o “Microsoft Forms 2.0 Object Library”
nas referências disponíveis.
Eu atribuí isso a um botão ao lado da célula C11
, e agora, quando eu clico nele, o código é copiado para minha área de transferência sem aspas. Isso não funciona exatamente do jeito que eu estava planejando originalmente, mas o resultado é exatamente o que eu queria.
Espero que isso ajude alguns outros.
Veja algumas capturas de tela do que realizei:
Aqui é onde eu precisava do código para cada listagem.
Sheet5
são os dados brutos divididos em células.
Aquiestáoprodutoacabadocriadoporessasfórmulas.Eháminhapáginaderegistrocomobotão.Quandoclicado,copiaocódigonacaixaàdireitasemaspas.