Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem mit "ActiveSheet.QueryTables.Add

Problem mit "ActiveSheet.QueryTables.Add
30.04.2020 17:21:02
Fred
Hallo zusammen,
ich bastel zur Zeit an einem Code, der die Textdaten einer prn-Datei in eine Excel-Tabelle einfügt. Mit dem Befehl "ActiveSheet.QueryTables.Add" werden die Daten aus der prn-Datei eingelesen. Mein Problem ist gerade, dass ich die Datei aus "Datei öffnen" auswählen möchte und den Dateipfad dann in den Befehl "ActiveSheet.QueryTabeles.Add" als Variable einfügen möchte. Das Auswählen der Datei funktioniert, ich bekomme allerdings mit der Variablen dann Probleme. Hier mein Code:
Sub TextImport()
Dim Target As ListObject
Dim f As Office.FileDialog
Set f = Application.FileDialog(msoFileDialogFilePicker)
With f
.Title = "Textdatei auswählen" 'Fenstertitel
.AllowMultiSelect = False 'Nur eine Datei auswählbar
.ButtonName = "Auswählen" 'Button Beschriftung
.Filters.Clear 'erst alle Filter löschen
.Filters.Add "Text-Dateien", "*.prn" 'dann eigene anlegen
.Filters.Add "Word-Dateien", "*.do*"
.Filters.Add "Access-Dateien", "*.mdb; *.accdb"
.FilterIndex = 1 'einen Filter vorselektieren
.InitialFileName = "C:\Users\XY\Desktop" 'Startverzeichnis
.Show
End With
If f.SelectedItems.Count > 0 Then
Dateiname = f.SelectedItems(1)
End If<br><br>
Bis hierher funktioniert alles. Der komplette Pfad inkl. Dateiname ist unter der Variablen "Dateiname" gespeichert. Aber weiter funktioniert es dann nicht, wenn ich diese Variable auch im nachfolgenden Code eingebe:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;Dateiname", Destination:=Range("$A$1"))
Hier passiert dann leider gar nichts mehr. Hat jemand eine Idee, woran das liegen könnte? Ich habe schon einiges ausprobiert und diverse Foren abgesucht, habe aber noch keine Lösung gefunden.
Viele Grüße, Fred
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit "ActiveSheet.QueryTables.Add
30.04.2020 21:23:29
fcs
Hallo Fred,
du must die Variable im Text einbauen durch verketten mit dem Text der sich nicht ändert.
    With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Dateiname, Destination:=Range("$A$1"))
LG
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Verwendung von ActiveSheet.QueryTables.Add in VBA


Schritt-für-Schritt-Anleitung

Um die ActiveSheet.QueryTables.Add Methode in Excel VBA korrekt zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub TextImport()
       Dim Target As ListObject
       Dim f As Office.FileDialog
       Dim Dateiname As String
    
       Set f = Application.FileDialog(msoFileDialogFilePicker)
       With f
           .Title = "Textdatei auswählen"
           .AllowMultiSelect = False
           .ButtonName = "Auswählen"
           .Filters.Clear
           .Filters.Add "Text-Dateien", "*.prn"
           .InitialFileName = "C:\Users\XY\Desktop"
           .Show
       End With
    
       If f.SelectedItems.Count > 0 Then
           Dateiname = f.SelectedItems(1)
       End If
    
       ' Hier ist die korrekte Verwendung von ActiveSheet.QueryTables.Add
       With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Dateiname, Destination:=Range("$A$1"))
           .TextFileConsecutiveDelimiter = False
           .TextFileTabDelimiter = True
           .Refresh
       End With
    End Sub
  4. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle TextImport aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Keine Daten importiert

    • Lösung: Stelle sicher, dass die Verknüpfung zur Datei korrekt ist. Verwende die Verketten-Funktion, um den Dateipfad korrekt zu integrieren, wie im obigen Beispiel gezeigt.
  • Fehler: Zugriff auf den Dateipfad verweigert

    • Lösung: Prüfe die Berechtigungen für den Ordner, in dem sich die Datei befindet. Stelle sicher, dass du Lesezugriff hast.

Alternative Methoden

Eine alternative Methode, Daten in Excel zu importieren, ist die Verwendung von Power Query. Gehe dazu wie folgt vor:

  1. Klicke auf Daten im Excel-Menü.
  2. Wähle Daten abrufen.
  3. Wähle Aus Datei > Aus Text/CSV.
  4. Suche die .prn Datei und klicke auf Importieren.

Diese Methode benötigt keine VBA-Kenntnisse und ist benutzerfreundlicher.


Praktische Beispiele

Hier ist ein einfaches Beispiel für die Anwendung von QueryTables.Add:

Sub BeispielQueryTable()
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Users\XY\Desktop\Beispiel.prn", Destination:=Range("$A$1"))
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .Refresh
    End With
End Sub

In diesem Beispiel wird eine .prn Datei direkt importiert. Achte darauf, den Pfad zu deiner Datei anzupassen.


Tipps für Profis

  • Nutze die .Refresh-Methode, um die Datenquelle regelmäßig zu aktualisieren.
  • Experimentiere mit den verschiedenen Optionen von QueryTables, um das Importverhalten anzupassen, wie z.B. .TextFileConsecutiveDelimiter.
  • Dokumentiere deinen Code mit Kommentaren, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen QueryTables und ListObjects?
QueryTables werden verwendet, um Daten aus externen Quellen zu importieren, während ListObjects für die Verwaltung von Tabellen innerhalb von Excel verwendet werden.

2. Kann ich auch andere Dateiformate mit QueryTables.Add importieren?
Ja, QueryTables unterstützt verschiedene Formate, darunter CSV, TXT und PRN. Stelle sicher, dass du den entsprechenden Verbindungstyp angibst.

3. Was mache ich, wenn der Import nicht funktioniert?
Überprüfe den Dateipfad, stelle sicher, dass die Datei existiert und prüfe die Datenformatierung. Verwende Debugging, um den Fehler genauer zu lokalisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige