質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

1731閲覧

VBAによるpw付きzipファイルの作成

Hdjjnnn

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1グッド

0クリップ

投稿2023/08/16 04:33

編集2023/08/16 04:54

実現したいこと

ExcelVBAによるpw付きzipファイルの作成

前提

VBAでpw付きzipファイルの作成を作成しようと思っているのですが、実行後zipファイルが作成されません。
エラー等は出ておらず、zipファイルが作成されない原因が分かりません。

該当のソースコード

Public Sub PW付きzip作成() Const exe_Path = "C:\Program Files\7-Zip\7z.exe" Dim ws As Worksheet Dim wsh As Object Dim fso As Object Dim command As String Dim Target_Path As String Dim zipFile_Path As String Dim pw As String Set ws = ActiveWorkbook.Sheets("pw") 'シートを変数に格納 Set wsh = CreateObject("WScript.Shell") 'WScript.Shellを変数に格納 Set fso = CreateObject("Scripting.FileSystemObject") 'FileSystemObjectを変数に格納 Target_Path = ActiveWorkbook.Path & "\○○.xlsx" 'Zip化したいファイルの変数の取得 Debug.Print (Target_Path) If fso.FileExists(Target_Path) Then 'ファイルの場合 zipFile_Path = Left(Target_Path, Len(Target_Path) - Len(fso.GetExtensionName(Target_Path))) & "zip" Else 'フォルダの場合 zipFile_Path = Target_Path & ".zip" End If Debug.Print (zipFile_Path) pw = ws.Cells(1, 1) 'pwの格納 command = exe_Path & " a -tzip" If pw <> "" Then command = command & " -p" & pw End If Debug.Print (pw) command = command & Space(1) & zipFile_Path command = command & Space(1) & Target_Path wsh.Run "cmd /c " & command, vbHide, 1 Set wsh = Nothing Set fso = Nothing MsgBox "完了"

補足情報(FW/ツールのバージョンなど)

参考にさせてもらったサイト
(https://excel.kuuneruch.com/zip-compress/)

tatsu99👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/08/16 07:26

> エラー等は出ておらず、 は、どうやって確認したのでしょうか? wsh.Run "cmd /c " & command, vbHide, 1 で、表示されるウィンドウは一瞬で消えると思うので、動画撮影してコマ送り再生でも難しい気がします。 cmd /k だとウィンドウが残りますので、メッセージが出ていれば確認できます。
guest

回答1

0

Const exe_Path = "C:\Program Files\7-Zip\7z.exe"

Const exe_Path = """C:\Program Files\7-Zip\7z.exe"""
に変えてください。
Program Filesのフォルダ名に空白があるので、
プログラム名が正しく認識されません。
プログラム名が実行時に
"C:\Program Files\7-Zip\7z.exe"
となるようにします。

投稿2023/08/16 13:39

tatsu99

総合スコア5540

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2023/08/16 13:41

上記のように変えて、正常終了することを確認済みです。 但し、ファイルの圧縮のみで、フォルダの圧縮は確認していません。
Firestorm

2023/08/18 05:03

tatsu99さんの回答は正しいです。 `Target_Path = ActiveWorkbook.Path & "\○○.xlsx" 'Zip化したいファイルの変数の取得` 部分をフォルダーパスにしたら正常に動きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問