[[20200304161732]] 『VBA でLhaplusを用いてフォルダをパスワード付きax(ZION) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA でLhaplusを用いてフォルダをパスワード付きで圧縮する方法について』(ZION)

Windows10、64ビットの環境で、Lhaplusでパスワード付きでドキュメント内のtest1というフォルダを圧縮するマクロを作っています。
下記のコードを実行すると、「Runメソッドは失敗しました IWshshell3 オブジェクト」というエラーになってしまいます。
test1には0kbではないエクセルファイルが入っており、パス名も間違ってはいないのですが、うまくいきません。
どのようにしたら圧縮できるようになりますでしょうか?
どなたかご教示ください。よろしくお願いいたします。

 Dim WSH As Object

    Dim Cmd(0) As String
    Dim targetPath As String
    targetPath = "C:\Users\ユーザー名\Documents\test1"
    Dim zipPath As String
    zipPath = "C:\Users\ユーザー名\Documents"

    Const Lpath As String = "C:\Program Files(x86)\Lhaplus\Lhaplus.exe"

    Cmd(0) = """" & Lpath & """"

    Cmd(0) = Cmd(0) & "/c:zip" & "/o:C:\" & """" & zipPath & """" & "/p:123" & """" & targetPath & """"

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")

    WSH.Run "%ComSpec%/c" & Cmd(0), 7, True

< 使用 Excel:Excel2019、使用 OS:Windows10 >


Lhaplusは脆弱性が上がって以来、全然使っていないので試せませんが、ぱっと見、パラメータの区切りにスペースを入れておらず、正しいパラメータと解釈されていないのではないかと思いますよ。 Cmd(0)の中身の文字列を確認してみてください。(なんで1つしかない配列にしているのか意味不明…)
(???) 2020/03/04(水) 16:43

あー、パスの指定も変ですね。 C:\ の後ろにダブルクォート付けちゃってます。 "C:\パス名" のような結果にしないとです。

Runに指定している文字列もスペース全然無いし、Lhaplus のヘルプにパラメータの説明があると思うので、よく見比べてみてください。
(???) 2020/03/04(水) 16:52


教えていただいた通り、パラメータの区切りにスペースを入れ、C:\の後のパス名を修正し、Runの指定文字列にスペースを足したところ、無事にパスワード付きで圧縮することができました!
自分1人ではどうにもできなかったので、大変助かりました。ご教示いただき本当にありがとうございました!
(ZION) 2020/03/04(水) 17:53

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.