Excel/VBAでWindows標準のWinzipでファイルを圧縮する方法

質問させて下さい。
①Excelでファイルを別BOOKとして保存
②別BOOKとして保存を、同一フォルダ内にZipファイルとして圧縮。
③そのあと、別BOOKを削除
上記①と③はできましたが、2.の圧縮についてが、理解できずにおります。
ご存知の方がいましたら、ご教授いただければ幸いです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/05/30 22:00:03
id:myonlinebookmark

自力で検索してみた、サンプルソースを作ってみたが、

質問させてください。

①なぜか”オブジェクトが必要です”でエラーが発生した

Wscript.sleep 100のあたり。

②圧縮後のファイルにパスワードをかけたいのですが、可能でしょうか。

Private Sub CommandButton1_Click()

Dim files(0)

files(0) = "D:\foo\zipsample"

' Call MakeZip("圧縮後のファイル名を絶対パスで記述",files)

zipfilea = "D:\foo\zipsample\tar123.zip"

Call MakeZip(zipfilea, files)

End Sub

Sub MakeZip(ByVal ZipPath, ByRef FileArray)

Dim sfo, app, file, num, zipFolder

Set sfo = CreateObject("Scripting.FileSystemObject")

Set app = CreateObject("Shell.Application")

If sfo.FileExists(ZipPath) = True Then

sfo.DeleteFile ZipPath

End If

With sfo.CreateTextFile(ZipPath, True)

.Write "PK" & Chr(5) & Chr(6) & String(18, 0)

.Close

End With

num = 0

Set zipFolder = app.Namespace(sfo.GetAbsolutePathName(ZipPath))

For Each file In FileArray

If CStr(file) <> "" Then

file = sfo.GetAbsolutePathName(file)

zipFolder.CopyHere (file)

num = num + 1

End If

Next

Do Until zipFolder.Items().Count = num

Wscript.sleep 100

Loop

Set sfo = Nothing

Set app = Nothing

End Sub

回答0件)

回答はまだありません

  • id:ken3memo
    >>
    ①なぜか”オブジェクトが必要です”でエラーが発生した
    Wscript.sleep 100のあたり。
    <<

    Wscript.sleep

    http://www.atmarkit.co.jp/ait/articles/0707/26/news128_2.html
    vbsなどスクリプト言語で使用している例だと思うので、

    vba で sleep 使う
    で検索すると、
    http://officetanaka.net/excel/vba/tips/tips116.htm
    https://www.moug.net/tech/acvba/0130003.html
    などサンプルがいろいろと見つかります。

    一番上などに
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    定義して
    sleep 100
    とWscript.をとって使ってみては?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません