返回列表 上一主題 發帖

[發問] 一次批改大量檔案名稱的語法。

[發問] 一次批改大量檔案名稱的語法。

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

測試檔案︰ TEST-1.rar (21.31 KB)         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語法?
謝謝!

回復 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


一次批改大量檔案名稱(程式主檔).rar (9.5 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 2# n7822123
不好意思,原程式碼式下載GBKEE大大解答論壇其他網友的程式碼^^"
測試OK了!不勝感激!

TOP

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

回復 2# n7822123
目前.png
2019-11-13 01:42
        

需求

需求.png
2019-11-13 01:44

不好意思,因為解答程式碼的流程關係,導致工作表的名稱有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檔案


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

測試檔 : TEST(1113).rar (30.32 KB)

TOP

本帖最後由 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


一次批改大量檔案名稱(程式主檔)_n大.rar (9.82 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

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

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題