Board logo

標題: [發問] 一次批改大量檔案名稱的語法。 [打印本頁]

作者: ziv976688    時間: 2019-11-1 16:24     標題: 一次批改大量檔案名稱的語法。

本帖最後由 ziv976688 於 2019-11-1 16:26 編輯

測試檔案︰[attach]31368[/attach]        PS︰測試檔案內有附上測試用的csv檔案

說明備註︰
A名稱檔案= ####-####-(基準日:yyyy-mm-dd).csv  
B名稱檔案= ####-####-( yyyy-mm-dd).xis  
C名稱檔案= 539_####-####-( yyyy-mm-dd).xis

附件中的程式主檔已有將A名稱的.csv檔案批次改為B名稱的.xis檔案的程式碼。
EX︰八卦排序-機數總覽-(基準日:2019-09-20).csv  => 八卦排序-機數總覽-(2019-09-20).xls

新增需求︰
將B名稱檔案再批次改為C名稱檔案~
EX︰八卦排序-機數總覽-(2019-09-20)  => 539_八卦排序-機數總覽-(2019-09-20)
EX︰五行排序-空數總覽-(2019-08-19)  => 539_五行排序-空數總覽-(2019-08-19)

請問︰新增需求的VBA語法?
謝謝!
作者: n7822123    時間: 2019-11-8 23:56

回復 1# ziv976688


如果原程式是你自己寫的,那這個對你來說應該不難吧!?

    Sub Ex()
        Dim Path As String, A As String, Oldname As String, Newname As String
        Path = ThisWorkbook.Path  '路徑
        A = Dir(Path & "\*.CSV")
        Do While A <> ""
            Oldname = Path & "\" & A
            A = Replace(A, "基準日:", "")
            A = "539_" & A '新增需求:再將檔案名稱前批改增加 "539_"
            A = Replace(A, ".csv", ".xls")
            Newname = Path & "\" & A
            'Name Oldname As Newname   '改名稱
             With Workbooks.Open(Oldname)
                 .SaveAs Filename:=Newname, FileFormat:=xlNormal   '改副檔案名
                 .Close True
             End With
            Kill Oldname
            A = Dir
        Loop
    End Sub


[attach]31397[/attach]
作者: ziv976688    時間: 2019-11-9 07:42

回復 2# n7822123
不好意思,原程式碼式下載GBKEE大大解答論壇其他網友的程式碼^^"
測試OK了!不勝感激!
作者: ziv976688    時間: 2019-11-13 01:50

本帖最後由 ziv976688 於 2019-11-13 02:02 編輯

回復 2# n7822123
[attach]31408[/attach]        [attach]31409[/attach]
不好意思,因為解答程式碼的流程關係,導致工作表的名稱有BUG(EX : 539_八卦排序-機數總覽-(2019-09-20)_目前)。
請見 : 左邊圖片的工作表名稱。

我以手動的流程步驟作說明︰
1_直接點檔案=>重新命名=>將檔案名稱的"基準日:"移除,並在檔案名稱前增加"539_"
2_開啟檔案=>點上方的"檔案(F)"=>選"另存新檔(A)"=>"檔案類型(T)"選"Microsoft Office Excel 活頁簿"(即xls)=>"儲存(S)"。
3_關閉檔案
EX : 539_八卦排序-機數總覽-(2019-09-20)_需求
請見 : 右邊圖片的工作表名稱。
4_移除.csv檔案


請問︰目前程式碼的流程步驟應該如何修正?
謝謝您^^

測試檔 : [attach]31410[/attach]
作者: n7822123    時間: 2019-11-14 00:38

本帖最後由 n7822123 於 2019-11-14 00:41 編輯

回復 4# ziv976688


因為你原本的CSV檔,工作表名稱有冒號,違反了工作表名稱的命名方式
所以存檔後再開就會變成這樣了,只要把工作表名稱也改掉就行了,如下


    Option Explicit
    Sub Ex()
        Dim oPath As String, A As String, Oldname As String, Newname As String
        Application.ScreenUpdating = False
        oPath = ThisWorkbook.Path  '路徑
        A = Dir(oPath & "\*.CSV")
        Do While A <> ""
            Oldname = oPath & "\" & A
            A = Replace(A, "基準日:", "")
            A = "539_" & A '新增需求:再將檔案名稱前批改增加 "539_"
            A = Replace(A, ".csv", ".xls")
            Newname = oPath & "\" & A
             With Workbooks.Open(Oldname)
                .Sheets(1).Name = Replace(A, ".xls", "")
                .SaveAs Filename:=Newname, FileFormat:=xlNormal   '改副檔案名
                .Close True
             End With
            Kill Oldname
            A = Dir
        Loop
    End Sub


[attach]31411[/attach]
作者: ziv976688    時間: 2019-11-15 18:11

回復 5# n7822123
n大 :
OK了!感恩




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)