簡體   English   中英

如何將 xlsm 保存為 xlsx?

[英]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
  1. 此代碼添加到任何模塊:
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
  1. 然后你可以像這樣使用它:
Private Sub CommandButton1_Click()
Call XLSMtoXLSX(Date)
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM