返回列表 上一主題 發帖

[發問] VBA程式 開啟一個相同檔名不同檔案

[發問] VBA程式 開啟一個相同檔名不同檔案

本帖最後由 癡肥羔羊 於 2022-4-13 14:12 編輯

抱歉想詢問各位:
如何可以先開啟一個相同檔名不同檔案,將資料處理後另存一個新檔案,之後進行輪迴。
目前已有成功開啟,但他會按照資料夾裡面的片數全數開啟

以下是我的vba程式:
   Sub A開啟檔案()

    Dim lrow As Long
    Dim mFile As String
    Dim Filename As String
   
    mFile = Dir(ThisWorkbook.Path & "\csv檔\" & "*.csv")
    Do While mFile <> ""
    Workbooks.Open Filename:=ThisWorkbook.Path & "\csv檔\" & mFile
    mFile = Dir()
   
    mFile = Dir(ThisWorkbook.Path & "\TXT檔\" & "*.txt")
    Do While mFile <> ""
    Workbooks.Open Filename:=ThisWorkbook.Path & "\TXT檔\" & mFile
    mFile = Dir()
    Loop
    Loop

End Sub
再麻煩幫我確認及修改...謝謝~~

1.jpg (34.97 KB)

檔案入徑

1.jpg

2.jpg (13.43 KB)

2.jpg

3.png (13.6 KB)

3.png

4.jpg (103.99 KB)

4.jpg

回復 2# samwang


不好意思說明的不清楚,目前是想開兩個相同檔案但不同副檔名CSV與TXT,然後再將TXT裡面的資料複製在CSV檔,然後另存檔案在進行輪迴。
目前資料處理到另存檔案已處理好,但卡在第一關開啟檔案的部分,原因是當資料夾裡有第二個excel檔以上時會同時一起開下去

以下是所有的程式碼:
Sub A開啟SPI_TXT()

    Dim lrow As Long
    Dim mFile As String
    Dim Filename As String
   
    If Len(Dir(ThisWorkbook.Path & "\TEST", vbDirectory)) = 0 Then
    MkDir ThisWorkbook.Path & "\TEST"
    End If
   
    mFile = Dir(ThisWorkbook.Path & "\csv檔\" & "*.csv")
    Do While mFile <> ""
    Workbooks.Open Filename:=ThisWorkbook.Path & "\csv檔\" & mFile
    mFile = Dir()
   
    mFile = Dir(ThisWorkbook.Path & "\TXT檔\" & "*.txt")
    Do While mFile <> ""
    Workbooks.Open Filename:=ThisWorkbook.Path & "\TXT檔\" & mFile
    mFile = Dir()
   
    Loop
    Loop
   
    Run "TXT複製至CSV"
   
End Sub

Sub TXT複製至CSV()

    Workbooks(2).Activate
    Workbooks(2).Worksheets.Add Before:=Sheets(Sheets.Count)
    '活頁2(CSV)新增工作表
   
    For i = 1 To Sheets.Count
    Sheets(i).Name = "Sheet" & i
    Next
   
    Workbooks(3).Activate
    Columns("A:A").Select
    Selection.Copy
    Workbooks(2).Activate
    Sheets("Sheet1").Select
    ActiveSheet.Paste
    '將活頁3(TXT)資料複製至活頁2(CSV)
   
    Application.CutCopyMode = False
    Workbooks(3).Close
   
    Run "另存TEST檔"
   
End Sub
Sub 另存TEST檔()

    Filename = ActiveWorkbook.Name
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\TEST\" & Filename, _
    FileFormat:=xlCSV, CreateBackup:=False
    Application.DisplayAlerts = True
    Application.WindowState = xlNormal
    '另存TEST
   
    ActiveWindow.Close SaveChanges:=False
   
End Sub

附件檔案可以試跑,再麻煩幫我看看....謝謝

Desktop.zip (20.45 KB)

試跑巨集

TOP

回復 3# 癡肥羔羊

或是說當開啟相同名稱時,使他中斷迴圈進行下一個Run的巨集,不知是否可行??

TOP

回復 5# samwang


非常抱歉...我不能下載附件,權限不足:'( :'(
可copy文字給我看嗎??謝謝妳~

TOP

回復 7# samwang

會跳出此問題~檔案已有按照圖片1都放在file裡面。

1.png (27.77 KB)

1.png

2.png (23.97 KB)

next issue

2.png

TOP

回復 9# samwang


因原始檔案是蠻長的,再幫我確認看看,謝謝

圖片1.jpg (23.23 KB)

圖片1.jpg

圖片2.jpg (44.67 KB)

圖片2.jpg

219U30400100306.zip (32.22 KB)

CSV

219U30400100306_TXT.zip (32.27 KB)

TXT

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題