最近在學習VBA续语,因為工作中有很多重復的操作太過于消耗時間,過年假期基本沒太出門痢艺,研究了一個星期的VBA算是入了門铅歼,能做點簡單的東西,這兩周一直在研究VBA怎么操作Outlook扇单,也有了眉目商模,進而使用VBA實現(xiàn)當前工作的自動化。
今天分享一個VBA循環(huán)Excel文件并另存為.xlsx文件的代碼蜘澜。工作場景主要是公司后臺下載的表格無法直接導入本地數(shù)據(jù)庫并且無法被Power Query加載施流,由于源文件有十幾個,手工操作工作量又大鄙信,之前在網(wǎng)上找了一個代碼瞪醋,這次我自己重新寫了一個。
使用方法:
- 在需要循環(huán)的文件中装诡,新建一個Excel文件银受,然后粘貼代碼運行践盼。
- 代碼運行完會自動刪除原來的.xls文件
Sub 遍歷文件并另存為()
Dim filename As String, mypath As String, k As Integer, fullna As String
mypath = ThisWorkbook.Path '返回代碼所在文件的路徑
filename = Dir(mypath & "\*.xls") '實際返回的只是文件名
Do
fullna = mypath & "\" & filename '加上路徑用\連接文件名才是完整的文件路徑,這句得寫在循環(huán)里面根據(jù)循環(huán)變化宾巍,然后使用Kill刪除文件
If filename Like "*.xls" And filename <> ThisWorkbook.FullName Then '條件是文件類型是.xls咕幻,并且循環(huán)的路徑不等于代碼所在的文件
Workbooks.Open (fullna) '打開循環(huán)文件,打開的依然是.xls格式的文件
cc = Replace(fullna, ".xls", ".xlsx") '將路徑中文件的.xls替換為.xlsx作為另存為的文件名稱及路徑
ActiveWorkbook.SaveAs filename:=cc, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False '通過錄制宏獲得
ActiveWorkbook.Close False '關(guān)閉文件顶霞,不保存Colse后面 True是保存
Kill fullna '刪除原來的.xls文件
End If
filename = Dir '再次載入路徑用以循環(huán)使用
Loop Until filename = "" '循環(huán)停止條件
MsgBox "另存為并刪除完畢"
End Sub
代碼中已做了注釋肄程,不懂的可以留言。