[英]How to save xlsm as xlsx?
我有一個 xslm 文件。 我想將文件另存為 xlsx 和電子郵件。
我可以將它另存為 xls 文件。 如果我嘗試將它保存為 xlsx,它確實會被保存,但是當我打開它時,它會出錯。
ActiveWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path & "\MyFileName - " & Format(Date, "mm-dd-yyyy") & ".xlsx"
Excel 無法打開文件“...path\\MyFileName.xlsx”,因為文件格式或文件擴展名無效。 驗證文件未損壞且文件擴展名與文件格式匹配
SaveCopyAs
不會更改文件類型。
您根本無法通過SaveCopyAs
將 .xlsm 保存為 .xlsx 。
編輯
一種解決方法是保存一個副本,然后更改類型,而舊副本將被刪除,例如:
Dim wb As Workbook, pstr As String
pstr = ActiveWorkbook.Path & "\MyFileName - " & Format(Date, "mm-dd-yyyy") & ".xlsm"
ActiveWorkbook.SaveCopyAs Filename:=y
Set wb = Workbooks.Open(pstr)
wb.SaveAs Left(pstr, Len(pstr) - 1) & "x", 52
wb.Close False
Kill pstr
試試這個:
Sub SaveAsXLSX()
ThisWorkbook.Save 'Optional
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ActiveWorkbook.Path & "\MyFileName - " & Format(Date, "mm-dd-yyyy"), 51 '51 = xlsx
Application.DisplayAlerts = True
ThisWorkbook.Close 'Optional
End Sub
您需要做的就是SaveAs
並將文件格式更改為51
( xlsx
)
如果您想“保存副本” - SaveAs
幾乎可以做同樣的事情 - 不同之處在於您當前打開的文件成為保存的文件,但如果您願意,您可以簡單地重新打開舊文件,並且沒有任何變化。
您真正想要做的是SaveAs
一種不同的文件類型,因此請使用SaveAs
。
I 這更具可讀性。 測試。
Sub SaveXlsmAsXlsx()
Dim wb As Workbook, Filenamepath As String, Filenameext As String, Filenameonly As String, Filepathonly As String
Application.DisplayAlerts = False
Filenamepath = ActiveWorkbook.FullName
Filenameext = ActiveWorkbook.Name
Filenameonly = Replace(Filenameext, ".xlsm", "")
Filepathonly = Replace(Filenamepath, ".xlsm", "")
Set wb = Workbooks.Open(Filenamepath)
'51 = xlsx
wb.SaveAs Filename:=Filepathonly & "_" & Format(Date, "mm-dd-yyyy"), FileFormat:=51
wb.Close True
'Kill- Best not to kill anyone, you might be sorry
ThisWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
- 此代碼添加到任何模塊:
Public Sub XLSMtoXLSX(FaylAdi As String)
Dim FullPath As String
Dim wb As Workbook
MsgBox "YOU WILL GET A WARNING AFTER COMPLETED, PLEASE WAIT"
ThisWorkbook.Save
On Error GoTo XETA
'You can change the name of the folder path below
FullPath = "C:\kohne sistem\Excel\VBA\Anbar\temp\" & FaylAdi & ".xlsm"
ThisWorkbook.SaveCopyAs FullPath
Application.DisplayAlerts = False
Set wb = Workbooks.Open(FullPath)
wb.SaveAs Left(FullPath, Len(FullPath) - 1) & "x", 51
wb.Close False
Kill FullPath
Application.DisplayAlerts = True
MsgBox "COMPLETED CORRECTLY"
Exit Sub
XETA: MsgBox "THERE WAS A FAULT SOMEWHERE"
End Sub
- 然后你可以像這樣使用它:
Private Sub CommandButton1_Click()
Call XLSMtoXLSX(Date)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.