Office-Fragen.de

Normale Version: VBA - Importierte Daten aus .txt unten anhängen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,
ich schon wieder  Confused

ich habe per VBA eine Schaltfläche, über die ich kommagetrennte Textdateien importieren möchte. Dazu habe ich ein Makro aufgenommen.
Ansich funktioniert es auch.
Problem: Die Importdateien sollen, wenn schon Daten im Arbeitsblatt sind, immer unter die letzte vorhandene  Zeile eingefügt werden.
Und, wie kann ich eine andere, beliebige Textdatei anwählen (Dialogfenster). So verweist der immer auf die Gleiche.

Bastele jetzt seit Stunden rum, finde aber keine Lösung.

Code:
Sub TextImport()
   Dim wks As Worksheet
   Dim vFile As Variant

   Application.ScreenUpdating = False
   Set wks = ActiveSheet
   vFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
   If vFile = False Then Exit Sub
   Workbooks.OpenText Filename:=vFile, Tab:=False, semicolon:=False, _
      comma:=True, Space:=False, other:=False

   ActiveSheet.UsedRange.Copy wks.Range("A1")

   ActiveWorkbook.Close savechanges:=False
   Application.ScreenUpdating = True
End Sub

Würde mich über einen Tipp freuen
Grüße
Manu
ich nehme mal an da muss sowas verbastelt werden

Code:
Range("A1").SpecialCells(xlCellTypeLastCell).Select

Aber wie???

Das mit der Dialogbox klappt jetzt komischer Weise mit oben dem Code. Vielleicht hatte ich nicht gesaved.
Verhält sich das so:

mit OpenText wird die voher angewählte Textdatei als aktives sheet geöffnet (unter berücksichtigung der angegebenen Parameter, in meinem Fall Komma=True)
Dann wird mit ActiveSheet.UsedRange.Copy alles aus dem sheet kopiert und im Arbeitsbaltt wks an A1 eingefügt.

Wie kann ich denn dieses wks.Range("A1") so modifizeren, dass die neuen Daten unterhalb der vorhandenen Daten eingefügt werden.

Ich dachte mir so was zu machen, funzt aber nicht:

Code:
Sub TextImport()
  Dim wks As Worksheet
  Dim vFile As Variant
  Dim lngLast As Long
   
  Application.ScreenUpdating = False
  Set wks = ActiveSheet
  vFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
  If vFile = False Then Exit Sub
  Workbooks.OpenText Filename:=vFile, Tab:=False, semicolon:=False, _
      comma:=True, Space:=False, other:=False
 
  lngLast = Cells(Rows.Count, 1).End(xlUp).Row + 1
  ActiveSheet.UsedRange.Copy wks.Range("A" & lngLast)
 
  ActiveWorkbook.Close savechanges:=False
  Application.ScreenUpdating = True
 
  MsgBox "Erste freie Zelle in Spalte A ist in Zeile: " & lngLast

 
End Sub


Gruß
Manu
Ok, ich habs selbst rausgefunden.

Das
Code:
lngLast = Cells(Rows.Count, 1).End(xlUp).Row + 1

muss abgefragt werden, bevor der Open.Text Befehl kommt.

Sorry

Gruß
Manu