Piotr Żydowicz

Piotr Żydowicz technolog, Bohamet

Temat: edycja makra, importowanie wiersz po wierszu

Witam, mam makro które importuje mi pliki z danymi csv, teraz gdy wczytuje plik po pliku dane wczytuje mi kolumny obok poprzednich danych a chciałbym aby wczytywało to jedno pod drugim.

oto kod :
Sub Elipsa1_Kliknięcie()

Dim R As Long, fstr As String
R = 1
fstr = Dir("*.csv")

With Application.FileDialog(msoFileDialogFilePicker)
.Show

If .SelectedItems.Count = 0 Then
MsgBox "Blad"
End If
'fstr is the file path and name of the file you selected.
fstr = .SelectedItems(1)

ImportCsvFile fstr.ActiveSheet(1, 1)

R = ActiveSheet.UsedRange.Columns.Count + 1
End With

End Sub

Sub ImportCsvFile(fstr As Variant, position As Range)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fstr, Destination:=position)

'With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Filename _
, Destination:=position)

.Name = Replace(fstr, ".csv", "")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMacintosh
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ";"
TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False

End With

End Sub
Sebastian Król

Sebastian Król Process Developer

Temat: edycja makra, importowanie wiersz po wierszu

Nie jestem specem od VBA, ale tutaj masz wybrany sposób, który Ci nie odpowiada.

R = ActiveSheet.UsedRange.Columns.Count + 1

Spróbuj: R = ActiveSheet.UsedRange.Rows.Count + 1
Artur D.

Artur D. Solution Architect,
Atos IT Services Sp.
z o.o.

Temat: edycja makra, importowanie wiersz po wierszu

@up to nie jest nawet wykorzystywane w kodzie

A gdzie pętla która przejdzie po zaznaczonych plikach? Sztywna deklaracja w
ImportCsvFile fstr.ActiveSheet(1, 1)

powoduje przesuwanie w prawo zaimportowanych danychTen post został edytowany przez Autora dnia 14.10.15 o godzinie 10:38
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: edycja makra, importowanie wiersz po wierszu

Ja bym połączył metodę "Open File For" z tablicą, a dopiero import do pliku. Miałbyś przez to również kontrole nad tym co jest importowane, jak i możliwość modulowania tych danych zanim zostaną zapisane w arkuszu.
Oraz jak pisze Artur w przypadku większej ilości plików pętla niezbędna.,

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: edycja makra, importowanie wiersz po wierszu

@Wojtek. SQL daje wiele możliwości. Pytanie tylko jak je realizować jeśli ilość danych do modyfikacji będzie dość duża. Ograniczanie jasne Where, ale zamiana lub wykonanie arytmetycznych poprawek to już podselekt, a niekiedy bez tymczasowych tabel się nie obejdzie.
Nie prościej stworzyć kilkadziesiąt warunków Select Case w VBA.
Oczywiście mowa tutaj o prostym liniowym imporcie, który nie jest aż tak wymagający.

Może @Piotr pomyśl jak scalić pliki razem, aby potem zaimportować je jednym importem.
Kiedyś też miałem to na myśli i powstało coś takiego http://vbatools.pl/laczenie-plikow-tekstowych/ ale to taka propozycja innego spojrzenia na problem.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

Następna dyskusja:

Problem - wyszukaj 2 kolumn...




Wyślij zaproszenie do