返回列表 上一主題 發帖

[發問] VBA TXT 依照段落開啟需求

[發問] VBA TXT 依照段落開啟需求

原TXT開啟後只能依照檔案內TXT檔一次開啟,如第3列所產生的結果
目前需求:&、%、$ 為各一個段落,段落格數為固定的,檔案開啟後依照個段落的特別符號去分類,如第4列所產生的結果


請各位高手幫忙,拜託

VBA TXT 依照段落開啟需求.rar (19.33 KB)

回復 16# 准提部林


    會錯意了,呵呵
     謝,版大

TOP

回復 15# Jason80Lo


Sub TEST()
Dim xPath$, xF$, xS As Worksheet, xEnd As Range, xR As Range, TT, T, N$, C%
xPath = ThisWorkbook.Path & "\" '"C:\Users\j\Desktop\VBA TXT 依照段落開啟需求\"
Set xS = ThisWorkbook.Sheets("工作表1")
Do
 If xF = "" Then xF = Dir(xPath & "\*.txt") Else xF = Dir
 If xF = "" Then Exit Do
 If Not xS.[A:A].Find(xF, LookAT:=xlWhole) Is Nothing Then GoTo 101
 Set xEnd = xS.Cells(Rows.Count, 1).End(xlUp)(2)
 If xEnd.Row < 3 Then Set xEnd = xS.[A3]
 xEnd = xF
 
 N = "" 
 Open xPath & xF For Input Access Read As #1
 Do Until EOF(1)
   Line Input #1, T
   If T = "&" Then Set xR = xEnd(1, "B"): C = 0
   If T = "$" Then Set xR = xEnd(1, "BG"): C = 0
   If (T = "#" Or T = "%") And N = "" Then Set xR = xEnd(1, "FZ"): C = 0: N = "Y"
   If T = "@" Then Set xR = xEnd(1, "DX"): C = 0
   For Each TT In Split(T, " ")
     C = C + 1:   xR(1, C) = TT
   Next
 Loop
 Close #1
101: Loop
End Sub

TOP

回復 14# 准提部林


    准大 我將你的方法套入
    If (T = "#" Or T = "%") And N = "Open xPath & xF For Input Access Read As #1" Then Set xR = xEnd(1, "N"): C = 0: N = "Y"
但是顯示出來的排列"#" 沒有依照我要的從N欄位開始依序排列,而是直接依序欄位排列下來,請問是小弟哪裡打錯@@

TOP

回復 12# Jason80Lo


N = "" '在這裡加入
Open xPath & xF For Input Access Read As #1


因第一個文字檔執行後 N = "Y",
所以每次都要將 N 設回空值,才不會被錯誤引用!

TOP

回復 11# 准提部林

20151115.rar (19.34 KB)
    如附檔文字檔

TOP

回復 11# 准提部林
If (T = "#" Or T = "%") And N = "" Then Set xR = xEnd(1, "FZ"): C = 0: N = "Y"
不好意思准大,我的TXT檔規則都是與第一個一樣,目前的問題是開啟第一個TXT檔排列都OK,
但第一個以後的遇到#、%的排序就無法從FZ儲存格填入。

TOP

回復 10# Jason80Lo


If (T = "#" Or T = "$") And N = "" Then Set xR = xEnd(1, "M"): C = 0: N = "Y"
_當遇"#"或"$",即以最後列的M欄為填入資料的起始格,
 因"#"與"$"個數不一定,且時有時無,又位置沒有既定順序,
 所以,只要遇到第一個"#"或"$",即以N="Y"表示已取得起始格,其後的就算是累計個數~~
 
資料要有固定規則(依提供的是三段式),否則程式無法寫的!

TOP

本帖最後由 Jason80Lo 於 2015-11-8 18:30 編輯

回復 8# 准提部林


  If (T = "#" Or T = "$") And N = "" Then Set xR = xEnd(1, "M"): C = 0: N = "Y"
准大請問這行的意思,xEnd(1, "M")裡面的1什麼意思?
小弟試另三個TXT檔,同時開啟後只有第一個能夠順利依照儲存格編排(如下圖)
If (T = "#" Or T = "%") And N = "" Then Set xR = xEnd(1, "FZ"): C = 0: N = "Y"

123.png

TOP

回復 8# 准提部林


    謝謝 准大 小弟 研究研究

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題