Je suis un débutant dans l'utilisation et VBscript Je ne comprends pas pourquoi je reçois toujours le code d'erreur -2147467259 (« -2147467259: Ce fichier est utilisé par une autre application ou un autre utilisateur ») (Ceci est ma propre traduction car le message d'erreur est en allemand). J'essaie de générer des fichiers PDF à partir d'une lettre de série dans MS Word 2007 via VBScript. Il y a plus de 28.000 fichiers PDF à générer à partir du fichier .docx. Peut-être que cela pourrait être que ce grand nombre pourrait être la raison pour laquelle le script échoue mais je ne l'espère pas;).Erreur d'exécution -2147467259 au cours PDF génération
Voici le code VB J'utilise:
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
La chose que je peux » comprendre est que le script avorte à des moments différents avec différents nombres de fichiers PDF créés. Parfois, il s'arrête après ~ 800 fichiers, parfois après ~ 7.000 et ainsi de suite. On ne sent pas que ça a marché une fois! Attention, j'essaie de générer 28.000 fichiers.
De plus, je dois dire que la Parole utilise un fichier .csv (7 Mo) exportée à partir d'une base de données.
Y at-il quelque chose que je peux faire?
J'ai remarqué que si je ferme la « ActiveWindow » Je suis capable de créer beaucoup plus fichier PDF que sans fermer cette fenêtre. Sans fermeture, il y a un nombre limité de fichiers PDF générés (je dois le tester à nouveau car je ne me souviens plus de ce nombre - quelque chose comme 2.000 ?!). Lors de la dernière tentative, j'ai implémenté une méthode de sommeil que j'ai exécutée après 'ActiveWindow.Fermez Faux'. A la première fois, il a semblé aider, mais au bout de trois fois il n'y a que peu d'amélioration pour déterminer ...
Demandez à quelqu'un une idée?
(J'espère que mon anglais était pas trop mal que que l'on ne peut pas le comprendre ...)
C'est aussi entre-temps ma pensée. Mais quelqu'un peut-il deviner quel peut être le problème? Est-ce juste Word qui ne peut pas gérer la macro (j'ai oublié de dire que ce script ci-dessus est une macro - je pense que ce n'est pas grave) avec cette masse de données? Cependant, je pense que Word devrait déjà être conçu pour traiter au moins 1000 à 2000 lettres. Même cela ne rend pas le programme même partiellement. J'ai donc pensé à un problème dans mon script ... – Patrick