none
Macro para inserir apóstrofe RRS feed

  • Pergunta

  • Olá,

    Preciso desenvolver uma macro que insira uma apóstrofe em todas as células da minha planilha que já está populada.

    É possível?

    Meu real problema é:

    Preciso fazer a leitura de uma planilha com aproximadamente 80 colunas e pouco mais de 17 mil registros com um script Java,

    os principais obstáculos que encontrei foram: os arquivos estão originalmente em formato .CSV, os arquivos não tem cabeçalho, algumas células estão no formato numérico (o que gera erro na leitura) as api's que encontrei que manipulam dados em .CSV não tem uma validação se a célula é do tipo String ou do tipo numérica.

    Realizando algumas pesquisas vi que caso tenha uma apóstrofe na frente de cada dado o script Java interpreta tudo com String, e acredito eu que isso resolveria me problema.

    quarta-feira, 22 de agosto de 2018 20:56

Todas as Respostas

  • Boa noite Tiago.

    Existem algumas abordagens possíveis para realizar isto. Uma delas seria percorrer a planilha e realizar a substituição célula a célula. Porém, para o tamanho da sua base com certeza será muito ineficiente e levará alguns (muitos) minutos para concluir. A forma mais recomendada é fazer matricialmente, em memória, como algo do tipo (pode ser melhor elaborado, mas a ideia básica não muda):

    Dim Dados() As Variant, Intervalo As String
    Dim i As Long, j As Long
    
    Intervalo = "A1:CB80000"
    
    Application.ScreenUpdating = False
    Dados = ActiveSheet.Range(Intervalo).Value2
    
    For i = LBound(Dados, 1) To UBound(Dados, 1)
        For j = LBound(Dados, 2) To UBound(Dados, 2)
            Dados(i, j) = "'" & Dados(i, j)
        Next
    Next
    
    ActiveSheet.Range(Intervalo).Value2 = Dados
    Application.ScreenUpdating = True

    Aqui no meu PC demorou menos de 15 segundos considerando todas as células preenchidas.

    Abraço.


    Filipe Magno

    sexta-feira, 24 de agosto de 2018 01:45