我目前正在處理一項任務,這只是通過 VBA 將文本檔案匯入到 excel 中。
問題是我想寫一個 VBA 代碼,它只將變數“數字”轉換為文本格式,在匯入文本檔案時其他變數沒有變化,因此,匯入后第一個數字“0”將保留進excel。
下面是示例,但文本檔案實際上包含 100 多個變數,錄制宏似乎不適用于這么多變數。
文本檔案:
資料日期|模型|狀態|狀態時間戳|編號|xxx
2021-02-02|投資者|批準|2020-09-25 15:54:58|0312475|asdfasfsdf
2021-02-02|投資者|批準|2020-04-23 23:01:30|0312475|asdfasfsdf
2021-02-02|中|已批準|2020-09-28 16:49:48|0312475|asdfasfsdf
請看一看并提出建議。非常感謝。
因為我想要匯入具有 100 多個變數的文本檔案但僅將變數“數字”轉換為文本的代碼。謝謝。
Workbooks.OpenText Filename:=fdata & intxt1, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, _
Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 2), Array(6, 1)),
TrailingMinusNumbers:=True, _
Local:=True
uj5u.com熱心網友回復:
如果您只需要以文本形式打開特定列,那么創建一個直到該特定列的陣列就足夠了,例如FieldInfo. 如果該特定列是 100 列,那么撰寫這樣的陣列陣列應該會更加困難。在這種情況下,您可以使用下一個代碼,自動構建必要的陣列:
Sub importTextFormatOneCol()
Dim fileToOpen As String, arr(), i As Long, colsNo As Long, colString As Long
colsNo = 100: colString = 5
ReDim arr(colsNo - 1)
For i = 0 To UBound(arr)
Select Case i
Case colString - 1 'here it can be an enumeration of cases (-1 because of base zero array)
'Case 4, 10, 21 ' in such a chase, the columns 5, 11, 22 will be formatted As Text
arr(i) = Array(i 1, 2)
Case Else
arr(i) = Array(i 1, 1)
End Select
Next i
Workbooks.OpenText fileName:=fdata & intxt1, _
origin:=932, startRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="|", FieldInfo:=arr()
End Sub
可以改進代碼以自動確定要打開的文本檔案中的實際列數。不復雜,但不構成問題的物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329195.html
上一篇:使用visualbasic讀取excel媒體檔案夾中的影像
下一篇:如何強制重繪導航控制元件?
