- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
15#
發表於 2013-7-4 09:51
| 只看該作者
回復 14# kulisung
試試看- Option Explicit
- Sub Ex()
- Dim Txt As String, Fs As Object, d, A(), Tile As String, S As String, Stile As String, i, ii As Integer
- Txt = "d:\logfile.log" '文字檔目錄
- Set Fs = CreateObject("Scripting.FileSystemObject").OpenTextFile(Txt, 1)
- 'OpenTextFile 方法 開啟一個指定的檔案並傳回一個 TextStream 物件,該物件可用於對檔案進行讀取或附加。
- d = Split(Fs.readall, Chr(10))
- Fs.Close '關閉文字檔
- For i = 0 To UBound(d)
- If InStr(d(i), "---") Then
- If S <> "" Then
- If Len(Stile) > Len(Tile) Then Tile = Stile '確定欗位標頭
- ReDim Preserve A(0 To ii)
- A(ii) = S
- ii = ii + 1
- End If
- Stile = "" '清除記錄欗位的標頭
- S = "" '清除記錄
- ElseIf InStr(d(i), ":") Then
- Stile = Stile & IIf(Stile <> "", "##", "") & Split(d(i), ":")(0) '記錄欗位的標頭
- S = S & IIf(S <> "", "##", "") & Trim(Replace(d(i), Mid(d(i), 1, InStr(d(i), ":")), ""))
- ElseIf InStr(d(i), ":") = 0 Then
- S = S & IIf(InStr(d(i - 1), ":"), "", Chr(10)) & Trim(d(i))
- End If
- Next
- ReDim Preserve A(0 To ii)
- A(ii) = S '最後一筆資料
- If Len(Stile) > Len(Tile) Then Tile = Stile '確定欗位標頭
- With ActiveSheet
- .Cells.Clear
- .[A1].Resize(1, UBound(Split(Tile, "##")) + 1) = Split(Tile, "##") '匯入欗位標頭
- For Each i In A
- .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(1, UBound(Split(i, "##")) + 1) = Split(i, "##")
- '匯入紀錄資料
- Next
- .Columns.EntireColumn.AutoFit '調整欄寬
- End With
- End Sub
複製代碼 |
|