我正在尝试使用以下VBA在Excel中保存活动工作表:
Application.CutCopyMode = False
FName = "C:\Users\Public\Documents\DTMForGIS\DTMtoGIS" & Format(Now, "yyyy-mm-dd hh_mm_ss") & ".xls"
ActiveWorkbook.SaveAs Filename:=FName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
Activeworkbook.close
但我在这里有两个问题:
1-当我想打开文件时遇到以下消息:
按“是”可以手动打开文件,但是我将使用GIS软件中的Excel文件,由于对格式的误解而导致问题。如你所见,它有.xls格式
2- Activeworkbook.close
无效,因为我必须在自己运行代码后关闭应用程序!
第一部分对我来说非常重要,要理解为什么会这样?能告诉我原因吗?
答案 0 :(得分:1)
您使用的文件格式错误。
对于.xls
,它是xlExcel8
。 xlOpenXMLWorkbookMacroEnabled
适用于.xlsm
使用此
FName = "C:\Users\Public\Documents\DTMForGIS\DTMtoGIS" & _
Format(Now, "yyyy-mm-dd hh_mm_ss") & ".xls"
ActiveWorkbook.SaveAs Filename:=FName, _
FileFormat:=xlExcel8
或使用此
FName = "C:\Users\Public\Documents\DTMForGIS\DTMtoGIS" & _
Format(Now, "yyyy-mm-dd hh_mm_ss") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=FName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
关于你的第二个问题。将您的代码更改为此
Application.DisplayAlerts = False
FName = "C:\Users\Public\Documents\DTMForGIS\DTMtoGIS" & _
Format(Now, "yyyy-mm-dd hh_mm_ss") & ".xls"
ActiveWorkbook.SaveAs Filename:=FName, FileFormat:=xlExcel8
With ActiveSheet.UsedRange
.Copy
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
Application.Quit