註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» 如何以Excel VBA多重匯入文字檔並指定文字為儲存格?
返回列表
下一主題
上一主題
發帖
[發問]
如何以Excel VBA多重匯入文字檔並指定文字為儲存格?
stillfish00
發短消息
加為好友
stillfish00
當前離線
UID
9276
帖子
1018
主題
15
精華
0
積分
1058
金錢
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
在線時間
1141 小時
註冊時間
2012-5-9
最後登錄
2022-9-28
大學生
帖子
1018
主題
15
精華
0
積分
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
註冊時間
2012-5-9
最後登錄
2022-9-28
1
#
跳轉到
»
發表於 2014-11-13 14:22
|
顯示全部帖子
本帖最後由 stillfish00 於 2014-11-13 14:26 編輯
回復
1#
hellrack
Sub Test()
Dim vFiles, sFile
Dim oFSO As Object, sText As String
Dim oRegex As Object, oMatch As Object, ar
vFiles = Application.GetOpenFilename(Filefilter:="文字檔 (*.log),*.log", Title:="選擇檔案(可多選)", MultiSelect:=True)
If Not IsArray(vFiles) Then Exit Sub
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oRegex = CreateObject("Vbscript.Regexp")
oRegex.Pattern = "DIEID:[\S\s]*?([0-9a-f]{8}\s+[0-9a-f]{8}\s+[0-9a-f]{8})[\S\s]+?" & _
"Test info, tempature : ([\d]+)[\S\s]+?" & _
"phybist test finish result :.*?\[(\d+)\][\S\s]+?" & _
"Tester send msg:\s*""<<(.+)>>"""
With Sheets(1)
.UsedRange.ClearContents
.[A1].Resize(1, 4) = Array("名稱1", "名稱2", "名稱3", "名稱4")
For Each sFile In vFiles
sText = oFSO.OpenTextFile(sFile, 1).ReadAll
If Not oRegex.Test(sText) Then MsgBox "Format is not match:" & vbCr & sFile : Exit Sub
Set oMatch = oRegex.Execute(sText)
ar = Array(oMatch.Item(0).submatches(0), oMatch.Item(0).submatches(1), oMatch.Item(0).submatches(2), oMatch.Item(0).submatches(3))
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(1, UBound(ar) + 1) = ar
Next
.UsedRange.EntireColumn.AutoFit
End With
End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。
TOP
stillfish00
發短消息
加為好友
stillfish00
當前離線
UID
9276
帖子
1018
主題
15
精華
0
積分
1058
金錢
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
在線時間
1141 小時
註冊時間
2012-5-9
最後登錄
2022-9-28
大學生
帖子
1018
主題
15
精華
0
積分
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
註冊時間
2012-5-9
最後登錄
2022-9-28
2
#
發表於 2014-11-13 21:13
|
顯示全部帖子
回復
5#
hellrack
Sub Test()
Dim vFiles, sFile
Dim oFSO As Object, sText As String
Dim oRegex As Object, oMatch As Object, ar, i, j
vFiles = Application.GetOpenFilename(Filefilter:="文字檔 (*.log),*.log", Title:="選擇檔案(可多選)", MultiSelect:=True)
If Not IsArray(vFiles) Then Exit Sub
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oRegex = CreateObject("Vbscript.Regexp")
oRegex.Pattern = "DIEID:[\S\s]*?([0-9a-f]{8}\s+[0-9a-f]{8}\s+[0-9a-f]{8})[\S\s]+?" & _
"Test info, tempature : ([\d]+)[\S\s]+?" & _
"phybist test finish result :.*?\[(\d+)\][\S\s]+?" & _
"Tester send msg:\s*""<<(.+)>>"""
oRegex.Global = True
With Sheets(1)
.UsedRange.ClearContents
.[A1].Resize(1, 4) = Array("名稱1", "名稱2", "名稱3", "名稱4")
For Each sFile In vFiles
sText = oFSO.OpenTextFile(sFile, 1).ReadAll
If Not oRegex.Test(sText) Then MsgBox "Format is not match:" & vbCr & sFile: Exit Sub
Set oMatch = oRegex.Execute(sText)
ReDim ar(0 To oMatch.Count - 1, 0 To 3)
For i = 0 To oMatch.Count - 1
With oMatch.Item(i)
For j = 0 To .submatches.Count - 1
ar(i, j) = .submatches(j)
Next
End With
Next
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(ar) + 1, UBound(ar, 2) + 1) = ar
Next
.UsedRange.EntireColumn.AutoFit
End With
End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。
TOP
靜思自在 :
真正的愛心,是照顧好自己的這顆心。
返回列表
下一主題
上一主題
Excelㄧ般區
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 • 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲