以下代码段在Excel / Office 2007中运行:
If Dir(Filenamepath) <> "" Then 'don't overwrite the packing list if it exists
Else
PackList.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=Filenamepath, _
OpenAfterPublish:=False 'True
End If
这循环多次,例如10,为了创建twn装箱单。每当循环的ExportAsFixedFormat部分运行时,之后的所有代码都会慢慢运行。
我运行了一个实验,我只删除了许多现有PDF文件中的一个(在Filenamepath中)(这样代码只会输入一次“导出为PDF”循环)。代码在创建一个PDF之前快速运行,然后慢慢地运行。如果我不删除任何PDF文件,那么当代码运行时,永远不会输入循环“导出为PDF”,代码永远不会减慢。
我试过了:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
在我的代码开头,但我的实验结果保持不变,所以这似乎不是问题。
为什么ExportAsFixedFormat导致代码如此急剧减速,以及可以采取哪些措施呢?
2017年12月28日更新:仍然没有解决方案,但似乎从搜索与导致Excel崩溃的ExportAsFixedFormat相关的其他问题(如35857728)这是一个常见问题。最近,Excel在尝试生成PDF时崩溃(但有时只是崩溃),之前它只会运行缓慢。我尝试更改我的默认打印机,卸载其他VBA宏,卸载Windows更新(其他用途的所有建议,以解决ExportAsFixedFormat问题)。似乎没有任何帮助。
似乎有效的唯一解决方案是,如果我将导出的文件类型从PDF更改为XPS(其他ExportAsFixedFormat选项)。对于我的情况,我可以使用XPS文件类型,我总是可以将文件转换为PDF文件。我还没有确认这会加速宏(我原来的问题),但至少它似乎有助于崩溃)。