2020年5月22日

以儲存格內容為檔名的EXCEL VBA

問題
某個實驗中,產生數十個excel檔案,希望每個excel檔案的檔名都能改成該檔案的A1儲存格的內容為檔名


解法
將以下巨集貼在「個人巨集活頁簿」中執行即可

個人巨集活頁簿其實在每次開啟EXCEL時,都會自動被開啟,但平常都看不到,因為被預設隱藏了。如果想要看到它,可以點選「檢視/取消隱藏視窗」,即可見到一個名為「PERSONAL.XLSB」的檔案

把巨集放在這個檔案裡,可以方便巨集跨檔案使用。

錄製巨集時,也可以直接指定將巨集儲存在個人巨集活頁簿。


這個檔案在win 10 的預設儲存位置是
C:\Users\user name\AppData\Local\Microsoft\Excel\XLStart 

巨集





Sub renameFileWithCellValue()

    For Each w In Application.Workbooks
        If w.Name <> "PERSONAL.XLSB" Then
            w.SaveAs Filename:=w.Path & "/" & w.Worksheets(1).Range("A1").Value
        End If
    Next w

End Sub


在儲存有巨集的檔案時,excel會以不同副檔名儲存。我已將巨集存在PERSONAL.XLSB,而這個檔案不需要另存新檔,所以必須在巨集裡偵測:「非PERSONAL.XLSB的,才會進行另存新檔」