Ir para conteúdo
Fórum Script Brasil

Leonardo Renner

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Leonardo Renner

Leonardo Renner's Achievements

0

Reputação

  1. 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
×
×
  • Criar Novo...