Ir para conteúdo
Fórum Script Brasil
  • 0

Como deixar minha macro mais rápida?


Leonardo Renner

Pergunta

Boa noite!

Tenho uma macro que carrega o conteúdo de um arquivo .CSV para uma planilha do Excel e arruma (remove todos espaços) todas as linhas da coluna A.

O problema é que quando o arquivo .CSV é muito grande, leva muito tempo para executar.

Parte do código que arruma as células e gera lentidão:

    ' Função arrumar
    Dim rng As Range
    For Each rng In Selection
    If Len(rng) > 0 Then
    rng = Trim$(rng)
    End If
    Next rng

Código completo:

Sub Carregar_Local_Picking()
    
    ' Habilita o tratamento de erros
    On Error GoTo Trata_Erro

    ' Setar configurações de tela para executar a rotina
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
 
    ' Desproteger planilha
    Sheets("LOCAL PICKING").Unprotect Password:="100*Aprovado"
    
    ' Mensagem ao usuário
    MsgBox "Selecione o arquivo de Locações de Picking do CD STD Parts mais recente (.CSV)!" & vbCrLf & vbCrLf & "Atenção: Este arquivo é o Relatório de Locações extraído do JDE no dia de hoje!"
    
    Dim fd As Office.FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
            .Filters.Clear
            .Title = "Selecione o arquivo de Locais SP"
            .Filters.Add "Relatório JDE", "*.csv", 1
            .AllowMultiSelect = False
            .InitialView = msoFileDialogViewDetails
            .InitialFileName = ThisWorkbook.Path & "\"
            
    ' Ações condicionadas à seleção de um arquivo
    If .Show <> 0 Then
    
    ' Carregar arquivo
    Dim sFile As String
    sFile = .SelectedItems(1)
    
    ' Limpar aba
    Sheets("LOCAL PICKING").UsedRange.ClearContents
    
    ' Trazer mensagem para usuário na barra de status
    Application.StatusBar = "Aguarde. O arquivo está sendo carregado. Isso pode levar algum tempo."

    With Worksheets("LOCAL PICKING").QueryTables.Add(Connection:="TEXT;" & sFile, _
    Destination:=Worksheets("LOCAL PICKING").Range("A1"))
            .RefreshStyle = xlOverwriteCells
            .TextFileStartRow = 4
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .Refresh BackgroundQuery:=False
    End With

    ' Ativar planilha corrente
    Windows(ThisWorkbook.Name).Activate

    ' Ativar aba "LOCAL PICKING" da planilha corrente
    Sheets("LOCAL PICKING").Activate
    
    ' Contar número de linhas
    numeroRegistros = Sheets("LOCAL PICKING").Cells(Rows.Count, 1).End(xlUp).Row
    
    ' Selecionar intervalo de células
    ActiveSheet.Range("A1:A" & numeroRegistros).Select
    
    ' Função arrumar
    Dim rng As Range
    For Each rng In Selection
    If Len(rng) > 0 Then
    rng = Trim$(rng)
    End If
    Next rng

    ' Ativar aba "LISTA DE ROMANEIO" da planilha corrente
    Sheets("INSTRUÇÕES").Activate
    
    ' Proteger planilha
    Sheets("LOCAL PICKING").Protect Password:="100*Aprovado"
 
    ' Ocultar planilha
    Sheets("LOCAL PICKING").Visible = False
    
    ' Ocultar mensagem na barra de status
    Application.StatusBar = False

    ' Informar carregamento
    MsgBox "Arquivo de Locais de Picking carregado com sucesso!"
    
    ' Ativar aba "LISTA DE ROMANEIO" da planilha corrente
    Sheets("INSTRUÇÕES").Activate

    ' Informar status
    Range("E11").Formula = "=NOW()"
    ActiveSheet.Range("E11").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    Else
    
    ' Informar não carregamento
    MsgBox "Não foi possível carregar o arquivo. Tente novamente!"

    End If

    End With

Exit Sub

' Início da rotina de tratamento de erros
Trata_Erro:

    MsgBox "Ocorreu um erro na execução do aplicativo. Por favor, tente novamente ou capture a tela e contate o programador."

End Sub

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...