這Workbooks.OpenText
方法 (Excel) 文檔說:
表達。開放文字(檔案名稱、原點、起始行、資料類型、文字限定符、連續分隔符號、製表符、分號、逗號、空格、其他、OtherChar、FieldInfo、TextVisualLayout、DecimalSeparator、ThousandsSeparator、TrailingMinusNumbers、Local)
表達一個變數代表一個作業簿目的。
在我的專案中我使用
fPath = "C:\CSV Files\" & FName
Workbooks.OpenText Filename:=fPath, Local:=True
這將建立一個額外的工作簿。我希望程式碼在現有工作簿中建立一個新的電子表格。我已經嘗試過這段程式碼
fPath = "C:\CSV Files\" & FName
ActiveWorkbook.OpenText Filename:=fPath, Local:=True
這會彈出運行時錯誤 438。這個話題說:
當您嘗試使用不屬於該物件的方法/屬性時。例如,如果您有 Workbook 物件並嘗試存取 Range 屬性,則會出現 438 錯誤,因為 Range 屬性屬於 Sheets 物件。
我實際上使用的是 Excel 2020,但我不知道是什麼導致了錯誤。
誰能幫我糾正一下嗎?
答案1
當您開啟文字檔案時,它將作為新工作簿打開,您無法立即將其新增至現有工作簿。
試試這樣的事情:
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
答案2
要在同一工作簿中開啟文字文件,可以使用AddQueryTables
以下方法進口文件,或者您可以使用 PowerQuery
這是由巨集記錄器產生的一些程式碼
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