Hallo Ulrich,
Du hast freilich ganz recht, mit oZip.AddFile ActiveDocument.FullName wird der Pfad zum Dok "mitverpackt", wenn Du nur den Dateinamen möchtest, hier die Änderung (sorry, der ursprünglliche Code war nur ein grobes Muster)
Option Explicit
' Benötigt ZIPLIB.DLL (Klassen) sowie ZIP32.DLL und UNZIP32.DLL (freie Infozip-Libraries)
' Die DLLs müssen entweder im Programmverzeichnis oder im Windows-Systemverzeichnis liegen
' Verweis zu ZIPLIB.DLL muss gesetzt werden
Sub SaveActiveDocumentAsZip()
Dim oZip As ZipLib.ZipFiles, tpath As String
Set oZip = New ZipLib.ZipFiles
If Len(ActiveDocument.path) = 0 Then MsgBox "Dokument nicht gespeichert": Exit Sub
If Not CreateTempFolder(tpath) Then MsgBox "Fehler bei CreateTempFolder": Exit Sub
oZip.ZipFileName = tpath & "\" & ActiveDocument.name & ".zip" ' Archivname
oZip.AddFile ActiveDocument.name ' zu packende Datei
oZip.RootDirectory = ActiveDocument.path
If 0 = oZip.MakeZipFile Then
MsgBox "Activedocument in " & oZip.ZipFileName & " gepackt"
Else
MsgBox "Fehler: " & oZip.GetLastMessage
End If
Set oZip = Nothing
End Sub
Private Function CreateTempFolder(fname As String) As Boolean
Dim tp As String, tn As String
With CreateObject("Scripting.FileSystemObject")
fname = .GetSpecialfolder(2) & "\" & .GetTempName()
On Error Resume Next
.CreateFolder fname
CreateTempFolder = Err = 0
On Error GoTo 0
End With
End Function
Der Code ist ZipLib.Dll ist recht unfangreich und kritisch (hatte es nicht merh in Erinnerung), deshalb ist es doch nicht günstig, das ganze Zeug direkt in VBA zu programmieren.
Kann Dir erst heute Abend/morgen früh mehr schreiben, da ich die Quellen zu Hause habe.
Wie sieht denn den die genaue Konfiguration bei Deiner Kollegin aus, wo es nicht funktioniert? Benutzerrechte, Office-Version, kommt die Fehlermeldung schon bei Kompilieren odererst zur Laufzeit?
Grüße
Wolfram
geschrieben von
Wolfram
,
08.07.2003, 11:24 Uhr
, 36 mal gelesen