文件在宏尝试将其保存为 .dif 后被破坏

File gets ruined after macro attempt to save it as .dif

我坚持这个程序:

Today = Format(Date, "dd-mm-yyyy")
Application.DisplayAlerts = False
Set DestinationWb = Workbooks.Add
ThisWorkbook.Sheets("MySheet").Copy Before:=DestinationWb.Sheets(1)
DestinationWb.Sheets("Foglio1").Delete
Application.DisplayAlerts = True
DestinationWb.SaveAs Application.GetSaveAsFilename(InitialFileName:=LCase(Environ("Path")) & "\" & Today & "_MyName.dif", FileFilter:="Formato interscambio dati (*.dif), *.dif", Title:="My Data Export")
DestinationWb.Close

它工作正常,它创建了一个扩展名为 .dif 的文件,但由于某些原因,目标文件内容被加密,我无法读取或重新使用它。

有没有人经历过类似的事情?如何解决?

文件没有损坏 - 它只是没有以您期望的文件格式存储。您没有告诉 Excel 以特定格式存储它(在您的情况下可能是 数据交换格式 )。仅通过提供文件扩展名并不建议另存为更改格式,因此 Excel 会将文件存储为常规 Excel 文件。

您可以通过将保存的文件重命名为 .xlsx 并尝试使用 Excel 打开它来检查它 - 它应该可以工作。

您需要使用 FileFormat 参数告诉 SaveAs 您想要的格式。此处描述了文件格式和命名常量:https://docs.microsoft.com/en-us/office/vba/api/excel.xlfileformat。在你的情况下,你可能需要 xlDIF.

Dim fileName
fileName = Application.GetSaveAsFilename(InitialFileName:=LCase(Environ("Path")) & "\" & Today & "_MyName.dif", FileFilter:="Formato interscambio dati (*.dif), *.dif", Title:="My Data Export")
DestinationWb.SaveAs filename, FileFormat:=xlDIF