我是使用 VBscript 的新手,我不明白为什么我总是得到错误代码 -2147467259(“-2147467259:此文件正在被另一个应用程序或另一个用户使用”)(这是我自己的翻译,因为错误消息是德语)。我正在尝试通过 VBscript 从 MS Word 2007 中的序列号生成 PDF 文件。.docx 文件可生成超过 28.000 个 PDF 文件。也许这个巨大的数字可能是脚本失败的原因,但我不希望如此;)。
这是我正在使用的 VB 代码:
Sub PDFErstellung()
Dim sBrief As String
Dim sVertreterVerzeichnis As String
Dim sAusgabepfad As String
Dim iAnzahl As Integer
Dim sKundenName As String
Dim sError As String
Dim iModulo As Integer
Application.Visible = False
sAusgabepfad = "C:\temp\"
On Error GoTo Fehler
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = wdLastRecord
iAnzahl = .DataSource.ActiveRecord
.DataSource.ActiveRecord = wdFirstRecord
Do
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
sVertreterVerzeichnis = sAusgabepfad & .DataFields("VertreterNr").Value
If Not IsDiskFolder(sVertreterVerzeichnis) Then
MkDir sVertreterVerzeichnis
End If
sKundenName = CleanFilename(Left(.DataFields("KundenName").Value, 20), "")
sBrief = sVertreterVerzeichnis & "\" & .DataFields("VertreterNr").Value & "_" & _
.DataFields("KundenNr").Value & "_" & sKundenName & ".pdf"
End With
.Execute Pause:=False
ActiveDocument.ExportAsFixedFormat OutputFileName:=sBrief _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If InStr(1, ActiveWindow.Caption, "Serien") = 1 Then
ActiveWindow.Close False
End If
If .DataSource.ActiveRecord < iAnzahl Then
.DataSource.ActiveRecord = wdNextRecord
Else
Exit Do
End If
Loop
End With
Application.Quit savechanges:=wdDoNotSaveChanges
End Sub
我无法理解的是,脚本在不同时间中止,创建的 PDF 文件数量不同。有时它在 ~800 个文件后停止,有时在 ~7.000 个文件后停止,依此类推。感觉一次都没有用过!请注意,我正在尝试生成 28.000 个文件。
此外,我不得不说 Word 正在使用从数据库导出的 .csv 文件 (7 MB)。
有什么我可以做的吗?
我注意到,如果我关闭“ActiveWindow”,我可以创建比不关闭此窗口更多的 PDF 文件。如果不关闭,生成的 PDF 文件数量有限(我必须再次测试它,因为我不记得这个数字 - 大约 2.000?!)。
在最后一次尝试中,我实现了一个在“ActiveWindow.Close False”之后执行的睡眠方法。第一次似乎有帮助,但经过三遍后,确定只有一点点改善......
有人有想法吗?
(我希望我的英语不要太差,因为那个人听不懂……)