私は VBscript を使用する初心者であり、エラー コード -2147467259 ("-2147467259: このファイルは別のアプリケーションまたは別のユーザーによって使用されています") が常に表示される理由がわかりません (エラー メッセージがはドイツ語です)。VBscript を使用して MS Word 2007 のシリアル レターから PDF ファイルを生成しようとしています。.docx ファイルから生成する PDF ファイルは 28.000 以上あります。たぶん、この大きな数がスクリプトが失敗する理由かもしれませんが、そうは思いません;)。
私が使用している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」の後に実行するスリープ メソッドを実装しました。最初は効果があるように見えましたが、3 回実行した後は、決定するのにわずかな改善しかありません...
アイデアはありますか?
(私の英語が理解できないほど悪くなかったといいのですが...)