OpenText im aktuellen Arbeitsbuch

OpenText im aktuellen Arbeitsbuch

DerWorkbooks.OpenTextMethodendokumentation (Excel)sagt:

Ausdruck.OpenText(Dateiname, Herkunft, Startzeile, Datentyp, Textqualifizierer, Fortlaufendes Trennzeichen, Tabulator, Semikolon, Komma, Leerzeichen, Sonstiges, AnderesZeichen, Feldinfo, Visuelles Textlayout, Dezimaltrennzeichen, Tausendertrennzeichen, Minuszeichen am Ende, Lokal)

AusdruckEine Variable, die eineArbeitsmappenObjekt.

In meinem Projekt verwende ich

fPath = "C:\CSV Files\" & FName
Workbooks.OpenText Filename:=fPath, Local:=True

Dadurch wird eine zusätzliche Arbeitsmappe erstellt. Ich möchte, dass der Code eine neue Tabelle in der vorhandenen Arbeitsmappe erstellt. Ich habe diesen Code ausprobiert

fPath = "C:\CSV Files\" & FName
ActiveWorkbook.OpenText Filename:=fPath, Local:=True

Dies führt zu einem Laufzeitfehler 438.Dieses Themasagt:

Wenn Sie versuchen, eine Methode/Eigenschaft zu verwenden, die nicht zum Objekt gehört. Wenn Sie beispielsweise ein Workbook-Objekt haben und versuchen, auf die Range-Eigenschaft zuzugreifen, wird der Fehler 438 angezeigt, da die Range-Eigenschaft zum Sheets-Objekt gehört.

Ich verwende tatsächlich Excel 2020, habe aber keine Ahnung, was den Fehler verursacht.

Kann mich bitte jemand aufklären?

Antwort1

Wenn Sie eine Textdatei öffnen, wird sie als neue Arbeitsmappe geöffnet. Sie können sie nicht sofort zu einer vorhandenen Arbeitsmappe hinzufügen.

Versuchen Sie etwas wie Folgendes:

set OriginalWB = ActiveWorkbook
fPath = "C:\CSV Files\" & FName
Workbooks.OpenText Filename:=fPath, Local:=True
set newWB = ActiveWorkbook
ActiveSheet.Copy after:= OriginalWB.worksheets(1)
newWB.Close

Antwort2

Um eine Textdatei in derselben Arbeitsmappe zu öffnen, können Sie die AddQueryTablesMethode verwenden, umImportierendie Datei, oder Sie können PowerQuery verwenden

Dies ist ein Code, der vom Makrorecorder generiert wurde

    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\xxxx\xxxx\tester.csv", Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "tester"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

verwandte Informationen