Planilhas extras em branco na importação em loop da pasta de arquivos csv

0

(Esta é uma revisão de uma pergunta semelhante)

Eu geralmente importo uma pasta de arquivos .csv para a pasta de trabalho ativa (a pasta de trabalho com a macro), portanto, quero automatizar isso com o VBA.

Eu reuni o seguinte script, mas ele insere uma planilha em branco após cada arquivo .csv importado.

Sub ImportCSV()

With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Select folder of .csv files."
    .Show
    strDir = .SelectedItems.Item(1)
End With

strFile = Dir(strDir & "\" & "*.csv")

Set wbSink = ThisWorkbook

Do While strFile <> ""

    Set wbSource = Workbooks.Open(strDir & "\" & strFile)
    wbSource.Sheets.Copy wbSink.Sheets.Add
    wbSource.Close False
    strFile = Dir()

Loop

End Sub

Ou seja, após a primeira planilha importada, ela adiciona "Planilha2" e, depois da próxima planilha importada, adiciona "Planilha3" e assim por diante. Qual é a correção?

    
por Richard Herron 13.09.2013 / 20:00

2 respostas

2

Altere a linha de cópia de folha da seguinte forma:

Do While strFile <> ""
    Set wbSource = Workbooks.Open(strDir & "\" & strFile)
    wbSource.Sheets.Copy wbSink.Sheets(Sheets.Count)
    wbSource.Close False
    strFile = Dir()
Loop
    
por 14.09.2013 / 06:34
1

Isso funcionaria, mas está usando copiar / colar

Sub ImportCSV()

    Dim strFile As String
    Dim strPath As String
    Dim wkb As Workbook

    Application.ScreenUpdating = False

    strPath = "C:\"
    strFile = Dir(strPath & "*.csv")

        Do While strFile <> ""

            Set wkb = Workbooks.Open(strPath & strFile)

            ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)

            wkb.Sheets(1).UsedRange.Copy

            ThisWorkbook.Sheets(Sheets.Count).Range("A1").Paste

            wkb.Close

            strFile = Dir
        Loop

    Application.ScreenUpdating = True

End Sub
    
por 14.09.2013 / 04:16