返回列表 上一主題 發帖

文字檔讀取問題

文字檔讀取問題

請教大大,針對文字檔做資料讀取,想要將包含特定字串內容的某一列資料讀取匯入excel該如何做?謝謝~

回復 1# herhsiu
已有許多發文 ,你可爬文暸解一下,如真不解,也需將題目說清楚.  包含特定字串內容的某一列資料讀取匯入excel 如此太含糊,要舉例才明白

TOP

對不起說的不夠清楚,因為需要在多個文字檔內查詢資料,希望能夠透過vba在文字檔案搜尋某一字串,再將包含此字串的整列data mport至excel工作表,請大大指點一二,謝謝~

TOP

回復 3# herhsiu
  1. Sub 匯入文字檔()
  2.     Dim i As Integer, ii As Integer, Mystr As String
  3.     With Application.FileDialog(msoFileDialogFilePicker)  '[檔案選擇器]
  4.         .AllowMultiSelect = True                '可多重選擇檔案
  5.         .Title = "文字檔 匯入excel"             '[檔案選擇器] 的標題
  6.         .Filters.Clear                          '清除 [檔案選擇器] 對話方塊的檔案篩選
  7.         .Filters.Add "文字檔", "*.txt", 1       '新增 [檔案選擇器] 對話方塊的檔案篩選
  8.                                                 '篩選清單中新控制項所在位置的數值  1
  9.         .Filters.Add "*.*", "*.*", 2            '新增 [檔案選擇器] 對話方塊的檔案篩選
  10.                                                 '篩選清單中新控制項所在位置的數值 2
  11.         .FilterIndex = 1                        '當檔案對話方塊首次開啟時,預設篩選判定所顯示的檔案類型。
  12.         If .Show = 0 Then Exit Sub              '沒選擇檔案時離開檔案
  13.             For i = 1 To .SelectedItems.Count   '依序在選擇檔案數目的迴圈
  14.                 Open .SelectedItems(i) For Input As #1   '開啟文字檔
  15.                 Do While Not EOF(1)                      '不是檔案底部時 執行迴圈
  16.                     Input #1, Mystr                      '從已開啟的循序讀取資料,並將資料指定給變數。->mystr
  17.                     If Mystr Like "*test*" Then          '請修改"test" 為->要你搜尋某一字串
  18.                         Cells(ii + 1, "a") = Mystr       '整列匯入工作表
  19.                         ii = ii + 1                      '下一列
  20.                     End If
  21.                 Loop
  22.                 Close #1                                 '關閉文字檔
  23.            Next
  24.     End With
  25. End Sub
複製代碼

TOP

感謝大大詳盡的答覆......

TOP

不好意思,在試的時候發現一個問題:
如果該列有包含逗號該列就會被截斷,該怎麼處理這個狀況呢?謝謝~

TOP

回復 6# herhsiu
  1. Sub 匯入文字檔A()
  2.     Dim i As Integer, ii As Integer, Str As Variant, F As Object
  3.     With Application.FileDialog(msoFileDialogFilePicker)  '[檔案選擇器]
  4.         .AllowMultiSelect = True                '可多重選擇檔案
  5.         .Title = "文字檔 匯入excel"             '[檔案選擇器] 的標題
  6.         .Filters.Clear                          '清除 [檔案選擇器] 對話方塊的檔案篩選
  7.         .Filters.Add "文字檔", "*.txt", 1       '新增 [檔案選擇器] 對話方塊的檔案篩選
  8.                                                 '篩選清單中新控制項所在位置的數值  1
  9.         .Filters.Add "*.*", "*.*", 2            '新增 [檔案選擇器] 對話方塊的檔案篩選
  10.                                                 '篩選清單中新控制項所在位置的數值 2
  11.         .FilterIndex = 1                        '當檔案對話方塊首次開啟時,預設篩選判定所顯示的檔案類型。
  12.         If .Show = 0 Then Exit Sub              '沒選擇檔案時離開檔案
  13.         For i = 1 To .SelectedItems.Count   '依序在選擇檔案數目的迴圈
  14.             Set F = CreateObject("Scripting.FileSystemObject").OpenTextFile(.SelectedItems(i), 1, -1)
  15.             'F.READALL 讀取檔案的文字, Split(字串, 分隔字串)->傳回一維陣列
  16.             For Each Str In Split(F.READALL, Chr(10))  '傳回一維陣列 的迴圈
  17.                 If Str Like "*TEST*" Then
  18.                     Cells(ii + 1, "a") = Str            '整列匯入工作表
  19.                     ii = ii + 1                         '下一列
  20.                 End If
  21.             Next
  22.             F.Close                                     '關閉文字檔
  23.         Next
  24.     End With
  25. End Sub
複製代碼

TOP

回復 7# GBKEE

多謝大大的幫忙,但是我又碰到另一個問題是有些data 匯入後欄位需要向左shift一欄或兩欄(根據A欄值決定需不需要shift),這又該如何做?謝謝~

   
SHIFT.zip (7.29 KB)

TOP

回復 8# herhsiu
你的附檔中沒有程式碼如何幫你修正.
文字檔也要附上看看 程序是要依需求來寫的.

TOP

ㄜ....大大不好意思,因為檔案是在公司礙於PIP限制無法上傳,我在家中上傳的檔案是示意圖,我想做的事情是:查詢到檔案裡面內容如果符合下面兩列格式的data 需要匯入(部分內容為固定已可由GBKEE大大所提供程式達成),現在碰到的問題是第二列格式,其中有一欄位[parentNo]後面的數字為shift的欄位數,該列data需依此數目往左shift,另外如果我希望這些欄位能夠資料剖析成最後兩列的格式該如何做?因為TextToColumns只有一個自訂的符號,要做到好像有困難.不好意思問題有點多


"00:01:46  資料 = RAW values ( 'Z9.01','FG','90','SZ001.1','GL01',SYSDATE,'N','0.1','0.1' , '-0.0129','0.006','-0.0119','0.0305','-0.0047','-0.0066','-0.0158','0.0007', '-0.0233','-0.0057','-0.0124','0.0057','-0.0113','0.0174','0.0005','-0.0122', '-0.0136','-0.0074','-0.016','0.0003','0.0025','-0.0143','0.0031','0.0121', '0.0161','-0.0222','0.0013','-0.0118','0.0004','-0.0116','-0.0055','0.0155', '-0.0076','0.0391','0.0001','0.0117','-0.012','0.0159','-0.0137','0.0085')

"00:01:47 EQS send GLData_V5 to DS. [RvMsg]: [primPrcdId]Z9.01 [lotId]SZ001.1 [GLAutoRecipeId]V90_20 [GLEqpId]GL01 [stage]FG [parentNo]0 [intraTranslationX]-0.001 [intraTranslationY]0.000 [intraMagnification]-0.038 [intraRotation]0.035 [interRotation]0.042 [interOrthogonality]-0.020 [interExpansionX]-0.130 [interExpansionY]-0.256 [interTranslationX]-0.009 [interTranslationY]0.004 [asymrotation]-0.760 [asymmagnification]-0.134 [FlagSet]-00068+00036+00000+01000
/////////////////////////////////////////////

想要將檔案import轉換成下列格式"00:01:46        0.1        0.1        -0.0129        0.006        -0.0119        0.0305        -0.0047        -0.0066        -0.0158        0.0007        -0.0233        -0.0057        -0.0124        0.0057        -0.0113        0.0174        0.0005        -0.0122        -0.0136        -0.0074        -0.016        0.0003        0.0025        -0.0143        0.0031        0.0121        0.0161        -0.0222        0.0013        -0.0118        0.0004        -0.0116        -0.0055        0.0155        -0.0076        0.0391        0.0001        0.0117        -0.012        0.0159        -0.0137        0.0085                                                                                               
"00:01:47        -0.001        0        -0.038        0.035        0.042        -0.02        -0.13        -0.256        -0.009        0.004        -0.76        -0.134        968

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題