- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
回復 4# alexsas38
這樣檔案只能自己用Split剖析:- Sub TEST()
- Dim fd, f, fo
- Dim ar(), fnum As Integer, i, s
- Dim arData() As String, dataLine As String
-
- ReDim ar(0)
- ar(0) = Array("營業人統一編號", "負責人姓名", "營業人名稱", "營業(稅籍)登記地址", "資本額(元)", "組織種類", "設立日期", "登記營業項目")
-
- With Workbooks.Add
- '瀏覽選擇資料夾
- With Application.FileDialog(msoFileDialogFolderPicker)
- If .Show = -1 Then
- If .SelectedItems.Count > 0 Then fd = .SelectedItems(1) & "\"
- Else
- Exit Sub '取消
- End If
- End With
- '對所有該資料夾下的txt處理
- f = Dir(fd & "*.txt")
- Do While f <> ""
- '讀取檔案
- fnum = FreeFile
- Open fd & f For Input As #fnum
- '用Split剖析前八行資料
- ReDim arData(0 To 7)
- For i = 0 To 7
- If EOF(fnum) Then Exit For '若檔案未達八行則跳出
- Line Input #fnum, dataLine
- s = Split(dataLine, " ", 2) '限制最多傳回的子字串數為2個
- If UBound(s) = 1 Then arData(i) = s(1)
- Next
- ReDim Preserve ar(UBound(ar) + 1) '保留並增大陣列
- ar(UBound(ar)) = arData
- Close #fnum '記得關檔案
- f = Dir
- Loop
- With .Sheets(1)
- .Columns("A:A").NumberFormatLocal = "@" 'A欄格式設為文字
- .Range("A1").Resize(UBound(ar) + 1, 8).Value = Application.Transpose(Application.Transpose(ar)) '填入資料
- .Range("A1").Resize(UBound(ar) + 1, 8).EntireColumn.AutoFit '調整欄寬
- End With
- '存檔
- fo = Application.GetSaveAsFilename(InitialFileName:=fd & "final.xls", FileFilter:="Excel Files (*.xls),*.xls", Title:="儲存檔案")
- '除非按取消, 否則存檔
- If TypeName(fo) = "String" Then .SaveAs Filename:=fo, FileFormat:=xlExcel8
- End With
- End Sub
複製代碼 |
|