Board logo

標題: [發問] 多檔案取代格式vba [打印本頁]

作者: paddyliu    時間: 2013-10-8 23:09     標題: 多檔案取代格式vba

因工作需要多張工作表一次取代,故求解以下vba寫法,但置換其中一欄為06-2013,置換成07-2013,但轉換則一直跑到日期格式:2013/7/1,
實際以取代功能作業則不會,能否請教以下vba寫法需加入什麼參數,才能讓格式不會跑掉。

Sub Macro1()

    Dim nowworkbook As String   '設定的檔案名稱
    Dim s As String  '被取代的字串
    Dim d As String  '取代過的字串
    Dim strFileName As String   '讀取的檔案名稱
   
    nowworkbook = Excel.ActiveWorkbook.Name

    n = 2
   
    strFileName = Cells(n, 1)
    While strFileName <> ""
        Workbooks.Open Filename:=Excel.ActiveWorkbook.Path & "\" & strFileName
        
        
        For j = 1 To Sheets.Count
        
            Sheets(j).Select
            
            i = 2
        
            
            While Windows(nowworkbook).ActiveSheet.Cells(i, 2) <> ""
                s = Windows(nowworkbook).ActiveSheet.Cells(i, 2)
                d = Windows(nowworkbook).ActiveSheet.Cells(i, 3)
                    
                Cells.Replace What:=s, Replacement:=d
                i = i + 1
            Wend
            Cells(1, 1).Select
        Next
        
        n = n + 1
        
        strFileName = Sheet1.Cells(n, 1)
    Wend
    End Sub
作者: luhpro    時間: 2013-10-13 21:32

本帖最後由 luhpro 於 2013-10-13 21:39 編輯

回復 1# paddyliu
如果確定欲取代的字串都是在儲存格的開頭的話,
可考慮改成底下這樣試試 : (在最前面加個 ' 強制轉成文字模式)

Cells.Replace What:="06-2013", Replacement:="'07-2013"

當然, 若是字串可能出現在中間或尾端那就不適用了.
作者: genes    時間: 2013-10-17 13:05

回復 1# paddyliu
加下
Format(2013/7/1, "mm-yyyy")




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