Erstellen einer neuen Archivdatei Wenn Len(Dir(ZipFile)) 0 >, löscht Kill ZipFile' das Archiv, wenn es bereits vorhanden ist Öffnen Sie FileZip für die Ausgabe als #1 Drucken #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0) Schließen #1
'Verschiebt die zu archivierende Datei in das Archiv Set ApplicationArchiving = CreateObject("Shell.Application") ApplicationArchive.Namespace(ZipFile). MoveHere-DateiAArchiver
Ihnen fehlt der Verweis "Microsoft Shell Controls And Automation". ? Aber es ist schwierig, Ihr Problem zu diagnostizieren, ohne Ihre Variablen zu deklarieren oder ohne den Fehlercode....
Ich habe diesen Code (cleveres Excel) ausprobiert, der perfekt funktioniert (auch mit MoveHere anstelle von CopyHere):
Sub ArchiverUnFichier()
'par Excel-Malin.com ( https://excel-malin.com )
'---------------------------------------------------------
'gestion des erreurs
On Error GoTo ErreurCompression
'définition des variables
Dim ApplicationArchivage As Object
Dim FichierAArchiver, FichierZip
'informations sur les fichiers (chemins & noms)
FichierAArchiver = "C:\Test\MonFichierWord.docx"
FichierZip = "C:\Test\Archives\MonArchive_1.zip"
'créer un nouveau archive
If Len(Dir(FichierZip)) > 0 Then Kill FichierZip 'supprime l'archive s'il existe déjà
Open FichierZip For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
'copier le fichier à archiver dans l'archive
Set ApplicationArchivage = CreateObject("Shell.Application")
ApplicationArchivage.Namespace(FichierZip).CopyHere FichierAArchiver
'Message final
MsgBox "L'archivage a été lancé..."
Exit Sub
ErreurCompression:
MsgBox "Une erreur s'est produite..."
End Sub
Wäre es nicht Ihre Variable ZipFile, die ein unangemessenes Zeichen für einen Pfad hat? Versuchen Sie es zum Beispiel mit C:\Temp\Essai.zip.
Ob Erweiterungen angezeigt werden oder nicht, sollte keinen Einfluss auf den Pfad einer Datei haben. Das kommt mir seltsam vor.
Wenn dies aus irgendeinem unerfindlichen Grund wirklich der Fall ist, müssen Sie prüfen, ob es möglich ist, den Anzeigezustand der Erweiterungen aus dem Skript zu testen, und wenn er ausgeblendet ist, schalten Sie ihn für die Zeit, in der er ausgeführt wird, auf sichtbar.
Ich habe den Ursprung des Problems gefunden. Das VBA ist im Vergleich zu Winzip zu schnell. Die Dateien haben keine Zeit, fertig gezippt zu werden, bevor eine neue eintrifft.
Also habe ich eine Messagebox mit ja/nein platziert, damit der Benutzer den Start für die nächste Datei angibt.
Ich könnte auch eine Verifizierungsbedingung stellen.
Andernfalls machen Sie eine einzelne Befehlszeile mit mehreren Dateien, aber ich weiß nicht, wie ich es machen soll ( FileAArchiverSTEP = die Datei . Kläranlage )
Ich habe für jede Datei eine weitere Variable FileAArchiverDWG, FileAArchiverDXF erstellt und jede Zeile sendet sie an das ZIP
Vielen Dank für Ihren Link. In diesem Beispiel wird der Ordner mit einer ZIP-Datei versehen. Wenn ich den Anfang meines Programms ändere, um einen Ordner mit dem DXF, DXG und STEP zu erstellen , kann es funktionieren:)
Sub testing()
Dim ZipFile As String
Dim FolderToAdd As String
Dim objShell As Object
Dim varZipFile As Variant
ZipFile = "C:\ZipFile_Images\images.zip"
FolderToAdd = "C:\Images"
Set objShell = CreateObject("Shell.Application")
varZipFile = ZipFile
If Right$(FolderToAdd, 1) <> "\" Then
FolderToAdd = FolderToAdd & "\"
End If
objShell.NameSpace(varZipFile).CopyHere (FolderToAdd)
End Sub