24.08.2013

ZIP - mit 7Zip bestimmte Dateien eines Ordners mit Passwort packen - Update...

Frage: Die Dateien sollen nicht über einen temporären Ordner gepackt werden, sondern direkt. Noch einmal zur Erinnerung: Eine Installation von 7Zip ist nicht notwendig.
Man kann mit dem Kommandozeilentool arbeiten. Was mit dem Kommandozeilentool "7za.exe" erreicht werden kann, klappt auch auf eine andere Weise: Entweder installieren Sie 7Zip auf einer virtuellen Maschine, oder Sie nutzen den Windows Installer zum Auspacken der MSI-Datei. Nehmen wir an die Datei "7z922.msi" befindet sich in "C:\Temp\7z". Dort ist noch ein Unterordner mit Namen "7". Mit folgendem Befehl auf der Dos-Ebene entpacken Sie den Inhalt der MSI-Datei: "msiexec /a 7z922.msi /qb targetdir=C:\Temp\7z\7".
Suchen Sie dann nach den beiden Dateien "7z.exe und 7z.dll". Diese beiden können Sie nun auch als Kommandozeilentool nutzen. Dies gilt dann auch analog für Windows 64 Bit mit der Datei "7z922-x64.msi".

The files should not be packed on a temporary folder, but directly. Just to remind: An installation of 7Zip is not necessary.
You can use the command line tool. What can be achieved with the command line tool "7za.exe" works well in a different way: either install 7zip on a virtual machine, or use the Windows Installer to unpack the MSI file. Suppose the file "7z922.msi" is located in "C: \ Temp \ 7z". There is still a subfolder named "7". With the following command at the DOS level, you extract the contents of the MSI file: "msiexec /a 7z922.msi /qb targetdir=C:\Temp\7z\7".
Try searching for the two files "7z.exe and 7z.dll". These two you can now use it as a command line tool. This applies analogously also for Windows 64 bit with the file "7z922-x64.msi".

Hier noch eine Beispieldatei / Here's a sample file:
ZIP - mit 7Zip bestimmte Dateien eines Ordners mit Passwort packen - Update...[ZIP 4 MB]

Link:
7Zip...
7Zip - Download...
Command-Line Options - Msiexec.exe

Option Explicit
' Konstante für die KONSOLENANWENDUNG 7Zip
' Keine Installation erforderlich
' Pfad ANPASSEN!!!!!!!!
Const strZip As String = "C:\Temp\Zip\7za.exe"
'--------------------------------------------------------------------------
' Module    : Modul1
' Author    : Case (Ralf Stolzenburg)
' Date      : 24.08.2013
' Purpose   : 7-Zip alle Dateien eines Ordners packen als 7z...
'--------------------------------------------------------------------------
Public Sub Main()
    Dim lngLastRow As Long
    Dim strPathQ As String
    Dim strPathZ As String
    Dim strTMP As String
    Dim strArg As String
    On Error GoTo Fin
    ' Der Code bezieht sich auf ein bestimmtes Objekt
    ' Hier Tabelle1 = der CodeName der Tabelle
    ' Im VBA-Editor der Name VOR der Klammer - Tabelle1 (Tabelle1)
    ' im englischen Excel in der Regel Sheet1
    ' Alles was sich auf dieses "With" bezieht
    ' MUSS mit einem Punkt beginnen
    With Tabelle1
        ' Letzte Zeile in Spalte B
        lngLastRow = IIf(IsEmpty(.Cells(.Rows.Count, 2)), _
            .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)
        ' Pfad in dem die zu packenden Dateien sind
        strPathQ = .Range("A1").Text
        ' Backslash anhängen, wenn nicht vorhanden
        strPathQ = IIf(Right(strPathQ, 1) <> "\", strPathQ & "\", strPathQ)
        ' Pfad in den die gepackte 7z-Datei kommt
        strPathZ = .Range("C1").Text
        ' Backslash anhängen, wenn nicht vorhanden
        strPathZ = IIf(Right(strPathZ, 1) <> "\", strPathZ & "\", strPathZ)
        ' Schleife über alle Einträge in Spalte B
        For lngLastRow = 1 To lngLastRow
            ' Sammeln der Dateinamen inklusive Pfad und Leereichen am Schluss
            strTMP = strTMP & strPathQ & .Cells(lngLastRow, 2).Text & " "
        Next lngLastRow
        ' Letztes Leerzeichen entfernen
        strTMP = Left(strTMP, Len(strTMP) - 1)
        ' Packt die Dateien der Variablen "strTMP" als 7z-Datei
        ' Zielordner "strPathZ" mit Passwort "passwort"
        strArg = strZip & " a -ppasswort " & strPathZ & "Zip.7z " & strTMP
        ShellAndWait strArg
    End With
Fin:
    ' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
    ' und die Fehlerbeschreibung aus
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Modul1
' Procedure : ShellAndWait
' Author    : Case (Ralf Stolzenburg)
' Date      : 24.08.2013
' Purpose   : ShellAndWait mit ausgeblendetem Dosfenster...
'--------------------------------------------------------------------------
Private Sub ShellAndWait(ByVal strPathName As String)
    Dim WshShell As Object
    On Error GoTo Fin
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run strPathName, 0, True
Fin:
    Set WshShell = Nothing
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub

22.08.2013

ZIP - mit 7Zip bestimmte Dateien eines Ordners mit Passwort packen...

Frage: Bestimmte Dateien eines Ordners mit 7-zip (inklusive Passwort) packen. Die Dateien sind in Spalte B gelistet (mal mehr, mal weniger). Der Quellordner ist in A1 gelistet und der Zielordner für die gezippte Datei in C1. Wie geht das?

Certain files in a folder with 7-zip pack (including password). The files are listed in column B (sometimes more, sometimes less). The source folder is listed in A1 and the destination folder for the zipped file in C1. How does it work?

Hier noch eine Beispieldatei / Here's a sample file:
ZIP - mit 7Zip bestimmte Dateien eines Ordners mit Passwort packen...[ZIP 4 MB]

Link:
7Zip...
7Zip - Download...

Option Explicit
' API Funktion um einen Ordner anzulegen
#If Win64 Then
    Private Declare PtrSafe Function MakeSureDirectoryPathExists _
        Lib "imagehlp.dll" (ByVal strPath As String) As Long
#Else
    Private Declare Function MakeSureDirectoryPathExists _
        Lib "imagehlp.dll" (ByVal strPath As String) As Long
#End If
' Konstante für die KONSOLENANWENDUNG 7Zip
' Keine Installation erforderlich
' Pfad ANPASSEN!!!!!!!!
Const strZip As String = "C:\Temp\Zip\7za.exe"
'--------------------------------------------------------------------------
' Module    : Modul1
' Author    : Case (Ralf Stolzenburg)
' Date      : 23.08.2013
' Purpose   : 7-Zip alle Dateien eines Ordners packen als 7z...
'--------------------------------------------------------------------------
Public Sub Main()
    Dim objFileFolder As Object
    Dim strTMPFolder As String
    Dim lngLastRow As Long
    Dim strPathQ As String
    Dim strPathZ As String
    Dim strArg As String
    Dim objFSO As Object
    On Error GoTo Fin
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strTMPFolder = Environ$("TEMP") & _
        Application.PathSeparator & "7zFiles" & _
        Application.PathSeparator
    ' Temporärer Ordner im Tempordner anlegen
    MakeSureDirectoryPathExists strTMPFolder
    ' Der Code bezieht sich auf ein bestimmtes Objekt
    ' Hier Tabelle1 = der CodeName der Tabelle
    ' Im VBA-Editor der Name VOR der Klammer - Tabelle1 (Tabelle1)
    ' im englischen Excel in der Regel Sheet1
    ' Alles was sich auf dieses "With" bezieht
    ' MUSS mit einem Punkt beginnen
    With Tabelle1
        ' Letzte Zeile in Spalte B
        lngLastRow = IIf(IsEmpty(.Cells(.Rows.Count, 2)), _
            .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)
        ' Pfad in dem die zu packenden Dateien sind
        strPathQ = .Range("A1").Text
        ' Backslash anhängen, wenn nicht vorhanden
        strPathQ = IIf(Right(strPathQ, 1) <> "\", strPathQ & "\", strPathQ)
        ' Pfad in den die gepackte 7z-Datei kommt
        strPathZ = .Range("C1").Text
        ' Backslash anhängen, wenn nicht vorhanden
        strPathZ = IIf(Right(strPathZ, 1) <> "\", strPathZ & "\", strPathZ)
        ' Schleife über alle Einträge in Spalte B
        For lngLastRow = 1 To lngLastRow
            FileCopy strPathQ & .Cells(lngLastRow, 2).Text, _
                strTMPFolder & .Cells(lngLastRow, 2).Text
        Next lngLastRow
        ' Packt den Ordner strTMPFolder als 7z-Datei im Zielordner "strPathZ"
        ' Mit Passwort "passwort"
        strArg = strZip & " a -ppasswort " & strPathZ & "Zip.7z " & strTMPFolder
        ShellAndWait strArg
    End With
    ' Und den temporären Ordner wieder löschen
    Set objFileFolder = objFSO.GetFolder(strTMPFolder)
    objFileFolder.Delete
Fin:
    ' Objektvariablen zurücksetzen
    Set objFileFolder = Nothing
    Set objFSO = Nothing
    ' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
    ' und die Fehlerbeschreibung aus
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Modul1
' Procedure : ShellAndWait
' Author    : Case (Ralf Stolzenburg)
' Date      : 23.08.2013
' Purpose   : ShellAndWait mit ausgeblendetem Dosfenster...
'--------------------------------------------------------------------------
Private Sub ShellAndWait(ByVal strPathName As String)
    Dim WshShell As Object
    On Error GoTo Fin
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run strPathName, 0, True
Fin:
    Set WshShell = Nothing
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub

14.08.2013

ZIP - mit 7Zip alle Dateien "7-Zip und Zip" eines Ordners entpacken...

Frage: Wie kann ich alle Dateien "7-Zip und Zip" eines Ordners mit dem Programm 7Zip entpacken?
Wir nutzen das Kommandozeilentool des Programmes 7Zip. Eine Installation ist nicht erforderlich.
Um mein Beispiel zu nutzen MÜSSEN Sie die Pfade anpassen! Im Modul2 ist ein Beispiel, wie eine Passwortgeschützte Datei entpackt wird. Siehe zweiten Download.

INFO: Bitte denken Sie daran, dass Sie im zweiten Download nur den Code in Modul 2 testen. Wenn Sie den Code aus Modul1 starten bleibt "7za.exe" im Hintergrund offen, da er auf die Eingabe des Passwortes wartet. Das Fenster ist aber ausgeblendet. :-)

Please remember that you only test the code in module 2 in the second download. When you start the code in Module1 remains open "7za.exe" in the background, as he waits for the input of the password. But the window is hidden. :-)

How can I extract all files "7-Zip and Zip" in a folder with the 7Zip program?
We use the command line tool of the program 7Zip. No installation is required.
To use my example you MUST adjust the paths! In Modul2 is an example of how a Password-protected file is extracted. See second download.

Hier noch eine Beispieldatei / Here's a sample file:
ZIP - mit 7Zip alle Dateien "7-Zip und Zip" eines Ordners entpacken...[ZIP 4 MB]

Hier noch eine Beispieldatei mit Passwort / Here is a sample file with a password:
ZIP - mit 7Zip eine Datei "7-Zip" mit Passwort entpacken...[ZIP 5 MB]

Link:
7Zip...
7Zip - Download...

Option Explicit
' Konstante für die KONSOLENANWENDUNG 7Zip
' Keine Installation erforderlich
' Pfade ANPASSEN!!!!!!!!
Const strZip As String = "C:\Temp\Zip\7za.exe"
' Pfad in dem die 7z-Dateien UND Zip-Dateien sind
Const strPathQ As String = "C:\Temp\Zip\"
' Pfad in den die 7z-Dateien UND Zip-Dateien
' gegebenenfalls entpackt werden sollen
Const strPathZ As String = "C:\Temp\Zip\Neu\"
'--------------------------------------------------------------------------
' Module    : Modul1
' Author    : Case (Ralf Stolzenburg)
' Date      : 14.08.2013
' Purpose   : 7-Zip alle Dateien (7z und Zip) eines Ordners entpacken...
'--------------------------------------------------------------------------
Public Sub Main()
    Dim strFileName As String
    Dim strArg As String
    On Error GoTo Fin
    strFileName = Dir$(strPathQ & "*.*z*")
    ' Schleife über alle 7z- UND Zip-Dateien
    Do While strFileName <> ""
        ' Entpackt alle 7z-Dateien UND Zip-Dateien in den angegebenen Ordner
        strArg = strZip & " x " & strPathQ & strFileName & " -y -o" & strPathZ
        ' Entpackt alle 7z-Dateien UND Zip-Dateien in den aktuellen Ordner
        'strArg = strZip & " e " & strPathQ & strFileName & " -y"
        ' Entpackt alle 7z-Dateien UND Zip-Dateien in den aktuellen Ordner -
        ' jede 7z-Datei in einen Ordner. Entspricht 7-Zip - Entpacken nach "*\"
        ' Der aktuelle Ordner (CurDir) kann auch vorher noch eingestellt werden
        ' -y bedeutet KEINE Nachfrage, wenn Dateien schon vorhanden sind
        'strArg = strZip & " x " & strPathQ & strFileName & " -y -o*"
        ' Warten bis entpacken erledigt ist
        ShellAndWait strArg
        ' Nächster Dateiname
        strFileName = Dir$()
    Loop
Fin:
    ' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
    ' und die Fehlerbeschreibung aus
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Modul1
' Procedure : ShellAndWait
' Author    : Case (Ralf Stolzenburg)
' Date      : 14.08.2013
' Purpose   : ShellAndWait mit ausgeblendetem Dosfenster...
'--------------------------------------------------------------------------
Private Sub ShellAndWait(ByVal strPathName As String)
    Dim WshShell As Object
    On Error GoTo Fin
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run strPathName, 0, True
Fin:
    Set WshShell = Nothing
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub

Option Explicit
' Konstante für die KONSOLENANWENDUNG 7Zip
' Keine Installation erforderlich
' Pfade ANPASSEN!!!!!!!!
Const strZip As String = "C:\Temp\Zip\7za.exe"
' Pfad in den die 7z-Dateien UND Zip-Dateien
' gegebenenfalls entpackt werden sollen
Const strPathZ As String = "C:\Temp\Zip\Neu\"
'--------------------------------------------------------------------------
' Module    : Modul1
' Author    : Case (Ralf Stolzenburg)
' Date      : 14.08.2013
' Purpose   : 7-Zip alle Dateien (7z und Zip) eines Ordners entpacken...
'--------------------------------------------------------------------------
Public Sub Main_1()
    Dim strFileName As String
    Dim strArg As String
    On Error GoTo Fin
    ' Pfad- und Dateiname gegebenenfalls anpassen!!!!!
    strFileName = "C:\Temp\Zip\Kira7_Password_is_HIDE.7z"
    ' Eine PASSSWORTgeschützte 7Zip-Datei entpacken. Passwort ist HIDE
    strArg = strZip & " e -pHIDE " & strFileName & " -y -o" & strPathZ
    ShellAndWait strArg
Fin:
    ' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
    ' und die Fehlerbeschreibung aus
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Modul2
' Procedure : ShellAndWait
' Author    : Case (Ralf Stolzenburg)
' Date      : 14.08.2013
' Purpose   : ShellAndWait mit ausgeblendetem Dosfenster...
'--------------------------------------------------------------------------
Private Sub ShellAndWait(ByVal strPathName As String)
    Dim WshShell As Object
    On Error GoTo Fin
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run strPathName, 0, True
Fin:
    Set WshShell = Nothing
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub

Formeln auf einer UserForm in einer TextBox darstellen...

Formeln auf einer UserForm in einer TextBox anzeigen. Z. B. "Formula", "FormulaLocal"... und wie muss die Formel in VBA ...