ElWorkbooks.OpenText
documentació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 AddQueryTables
mé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