OpenText en el libro de trabajo actual

OpenText en el libro de trabajo actual

ElWorkbooks.OpenTextdocumentación del método (Excel)dice:

expresión.Texto abierto(Nombre de archivo, Origen, Fila inicial, Tipo de datos, Calificador de texto, Delimitador consecutivo, Tabulador, Punto y coma, Coma, Espacio, Otro, Otro carácter, Información de campo, Diseño visual de texto, Separador decimal, Separador de miles, Números menos finales, Local)

expresiónUna variable que representa unaLibros de trabajoobjeto.

En mi proyecto uso

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

Esto crea un libro de trabajo adicional. Quiero que el código cree una nueva hoja de cálculo en el libro existente. He probado este código

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

Esto muestra un error de tiempo de ejecución 438.Este temadice:

Cuando intenta utilizar un método/propiedad que no pertenece al objeto. Por ejemplo, si tiene un objeto Libro de trabajo e intenta acceder a la propiedad Rango, le dará el error 438 ya que la propiedad Rango pertenece al objeto Hojas.

De hecho, estoy usando Excel 2020, pero no tengo idea de qué está causando el error.

¿Alguien puede corregirme, por favor?

Respuesta1

Cuando abre un archivo de texto, se abrirá como un libro nuevo, no podrá agregarlo inmediatamente a un libro existente.

Pruebe algo como esto:

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

Respuesta2

Para abrir un archivo de texto en el mismo libro de trabajo, puede utilizar el AddQueryTablesmétodo paraImportarel archivo, o puede usar PowerQuery

Este es un código que fue generado por la grabadora de macros.

    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

información relacionada