20. Apr 2024, 13:37
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0414
  E03: mehr als 256 Spalten importieren
 Von zfwez
 Am 24. Oktober 2008 um 17:31:18
 Frage Hallo,
ich importiere eine/mehrere csv- Dateien, die jeweils mehr als 256 Spalten haben. Mein Wunsch ist es, wenn mehr als 256 Spalten importiert werden, dass eine zweite Tab erstellt wird. Im Moment werden die restlichen Daten nicht in die neue Tab geladen, siehe Code.
Sub GetOpenFilename_MultiSelect()
Dim varRetVal As Variant
Dim wksNeu As Worksheet
Dim wbkNeu As Workbook
Dim qtbNeu As QueryTable
Dim lngN As Long
Dim wbkMeineMappe As Workbook
Dim strPathAndFileName As String
Dim strNeuerSheetName As String
Dim lngRow As Long
Dim strValues(65536, 1) As String
Dim ResultStr As String
Dim Blatt As Worksheet

' Zielmappe muß schon geöffnet sein WICHTIG
Set wbkMeineMappe = Workbooks("Auswertung_2_2.xls")

varRetVal = Application.GetOpenFilename( _
FileFilter:="Microsoft Excel-Dateien (*.csv), *.csv", _
Title:="Dateien auswählen", _
MultiSelect:=True)

If IsArray(varRetVal) Then
'On Error Resume Next 'besser auskommentiert lassen
For lngN = LBound(varRetVal) To UBound(varRetVal)
strPathAndFileName = varRetVal(lngN)
strNeuerSheetName = Replace(Dir(strPathAndFileName, 63), ".csv", "", 1, -1, 1)
Set wksNeu = ThisWorkbook.Worksheets.Add
wksNeu.Name = strNeuerSheetName
Set qtbNeu = wksNeu.QueryTables.Add(Connection:="TEXT;" & strPathAndFileName, _
Destination:=wksNeu.Cells(1, 1))
qtbNeu.RefreshStyle = xlInsertDeleteCells
qtbNeu.TextFilePlatform = xlWindows
qtbNeu.TextFileParseType = xlDelimited
qtbNeu.TextFileTabDelimiter = False
qtbNeu.TextFileSemicolonDelimiter = False
qtbNeu.TextFileCommaDelimiter = True
qtbNeu.TextFileSpaceDelimiter = False
qtbNeu.TextFileDecimalSeparator = "."
qtbNeu.TextFileThousandsSeparator = ","
qtbNeu.Refresh BackgroundQuery:=False
qtbNeu.Delete

Next
'bis hier ist alles o.k.
'wenn die importierte Datei mehr als 256 Zeilen hat
' wird eine zweites Tab- Blatt erstellt.
If Left(ResultStr, 1) = "=" Then
strValues(lngRow, 1) = "'" & ResultStr
Else
strValues(lngRow, 1) = ResultStr
End If
If lngRow < 65536 Then
lngRow = lngRow + 1
Else
End If
Activesheet.Range("A1:A65536") = strValues
ActiveWorkbook.Worksheets.Add after:=Worksheets(Worksheets.Count)
lngRow = 1
'wksNeu = strNeuerSheetName + 1
wksNeu.Name = strNeuerSheetName + 1 '?????
'eine neue Tab. wird zwar erstellt, jedoch ohne die Daten !
'als zweites soll die Tab den Namen der geöffneten Datei haben
'mit "_2" .
'****************
On Error GoTo 0
End If
End Sub
Danke für die Mithilfe und eine schönes WO
Gruß
zfwez
[ VB-/VBA-Forum | Archiv 0414 | Archiv-Übersicht ]
 Antworten
E03: mehr als 256 Spalten importieren - zfwez 24. Oktober 2008 um 17:31:18
Re: mehr als 256 Spalten importieren - r.mueller@sz-online.de 26. Oktober 2008 um 07:28:10

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum