こんばんは。
他の方の質問ですが
http://oshiete1.goo.ne.jp/qa2405614.html
を参考にVBAでエクセルファイルの圧縮に挑戦しています。
しかしうまくいきません。
なのでご教授お願いします。
エクセルの標準モジュールに
下記のコードを載せました。
////////////////////////////////////////////////////////////////////////
'Option Explicit
Private Declare Function Zip Lib "Zip32j" (ByVal hWnd As Integer, ByVal szCmdLine As String, ByVal szOutPut As String, ByVal dwsize As Integer) As Integer
Private Declare Function FindWindow Lib "USER32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub testZip()
'Zip32 による圧縮
Dim Filename As String
Dim strArchiveName As String
Dim strCommand As String
Dim RC As Long
Dim hWnd As Long
Dim strOutPut As String * 512
Dim lngSize As Long
'ハンドル取得
hWnd = FindWindow("XLMANI", Application.Caption)
'ファイル名取得
Filename = myDeskTopPath & "\Book1.xls"
If Filename = "False" Then Exit Sub
Filename = Mid$(Filename, InStrRev(Filename, "\") + 1)
strArchiveName = Mid$(Filename, InStrRev(Filename, "\") + 1, InStrRev(Filename, ".") - InStrRev(Filename, "\") - 1) & ".zip"
strCommand = "-u " & strArchiveName & " " & Filename
lngSize = Len(strOutPut)
RC = Zip(hWnd, strCommand, strOutPut, lngSize)
'Debug.Print strOutPut
End Sub
Function myDeskTopPath()
' 実行時の デスクトップパス取得
Dim MyWSH As Object
Set MyWSH = CreateObject("WScript.Shell")
myDeskTopPath = MyWSH.SpecialFolders("Desktop")
Set MyWSH = Nothing
End Function
////////////////////////////////////////////////////////////////////////
そして「Zip32j 」がないので
http://www.vector.co.jp/soft/win95/util/se062163 …
からダウンロードしました。
しかし、
「 RC = Zip(hWnd, strCommand, strOutPut, lngSize)」
の部分で、
「ファイルが見つかりません。 (Error 53)」
になります。
ダウンロードした「zip3j037」はフォルダごとデスクトップに置いています。
ただこれをダウンロードしただけではダメなのでしょうか?
エラーの原因がわかりません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんばんは。
そのコードの作者です。すでに、もうご指摘がありますが、
>ダウンロードした「zip3j037」はフォルダごとデスクトップに置いています。
まず、以下に二つのファイルがなくてはなりません。
C:\WINDOWS\system32\ZIP32J.DLL <--- 今回、ダウンロードしたファイル
C:\WINDOWS\system32\zip32.dll <---- Zip解凍用の本体
ここをお読みください。
http://www.csdinc.co.jp/archiver/lib/zip32j.html
Common Archiver Library: ZIP32J.DLL
'-------------------------------------------
'ファイル名取得
Filename = myDeskTopPath & "\Book1.xls"
別に決まった内容なら、特に、問題はありませんが、
Filename = Application.GetOpenFilename("テキストファイル*.txt(*.txt),*.txt")
If Filename = "False" Then Exit Sub
この二行でセットになります。
後は、問題はないはずです。
Wendy02さん!ありがとうございます!!
早速zip32.dlもダウンロードして、C:\Windows\System32へ入れました。
そし同じように
Filename = Application.GetOpenFilename("テキストファイル*.txt(*.txt),*.txt")
If Filename = "False" Then Exit Sub
でやってみたらエラーにならずに終了しました!!
確認したらちゃんと圧縮されています!
エクセルファイルで試してみても成功です!
Wendy02さん、mitarashiさん
本当にありがとうございます!
No.2
- 回答日時:
#1です。
Zip32jのマニュアルをみると、【インストール】
このZIP32J.DLLをWINDOWSのSYSTEMフォルダ(C:\WINDOWS\SYSTEMなど)にコピーしてください。
必要に応じて次のファイルもWINDOWSのSYSTEMフォルダにコピーしてください。
1.ZIP32.DLL(Ver2.3以降) - 絶対に必要
(後略)とあります。
乗りかかった船で、ZIA32.DLLと、ZIP32J.DLLを、今使っているPCはWindows2000なので、System32フォルダーにコピーして実行してみると、何も起こらず終了するので、
Debug.Print strOutPut
のコメントアウトを外してみると、
zip warning: name not matched: Book1.xls
zip warning: Book1.zip not found or empty
が表示されました。
ハンドル取得が、XLMANIになっているのに気付き、"XLMAIN"に直してみると、(これは、http://oshiete1.goo.ne.jp/qa2405614.htmlからそうなっています)
RC = Zip(hWnd, strCommand, strOutPut, lngSize)
のところでオーバーフローのエラーが発生しました。
元の質問への回答に、ショートファイルネーム云々の記述があったので、"C:\Book1.xls"で試験してみましたが、同様でした。
あとは、元の質問への回答者である、Wendy02さんのご出馬をお待ち下さい。
再度ありがとうございます!!!
私も同じ様にやってみたら、私も同様にオーバーフローしました。
しかしDebug.Print strOutPutを見てみると、何も表示されません。
ローカルウインドウで見ても同じなので、「strOutPut」の部分にカーソルを当ててみると、"・・・・・・・・・・・・・・・・・・・・・・"となっています。
うーん、難しいですね~
Wendy02さん、来てくれないかな~(わくわく)
No.1
- 回答日時:
Zip32jを使った事は無いので、一般論ですが、
1.Declare <中略> Lib "Zip32j"のところで、デスクトップの絶対パスを指定するか、
Lib "C:\Documents and Settings\?????\デスクトップ\?????.dll"
2.DLLをシステムフォルダーに放り込むか、
3.環境変数PATHを設定してやる
必要があると思います。
早速のご回答ありがとうございます。
1のやり方で
Declare Function Zip Lib "Zip32j"を
Declare Function Zip Lib "C:\Users\ユーザーアカウント名\Desktop\zip3j037\Zip32j"にしても質問時と同じエラーでしたが
Private Declare Function Zip Lib "C:\Users\ユーザーアカウント名\Desktop\zip3j037\Zip32j\ZIP32J.DLL"
にしたら、
「can't load ZIP32.DLL」
というエラーになりました。
2については
システムフォルダーとはどこのフォルダに入れればいいのでしょうか?
(無知ですいません)
3は、もっと難しそうです、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【お題】マッチョ習字
【大喜利】 「精神を鍛えるため」にと、ジムから書初めの宿題を出されたマッチョたちが半紙に書いてきたこと
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
「黒歴史」教えて下さい
若気のいたりでやってしまったけれど、いまとなっては封印したい… そんなあなたの黒歴史を教えて下さい。
-
ファイルをvbaで圧縮したいのですが
Excel(エクセル)
-
PowerPointのVBAで、図形を縮小後、画質を落とさずに出力する方法
PowerPoint(パワーポイント)
-
エクセルマクロで図の圧縮を行うには
PowerPoint(パワーポイント)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ZIPファイルがwordになります
-
cubase、UR22Cを使用するにあた...
-
Thunderbird 添付ファイル名表...
-
windows7でZIPファイルを開いて...
-
ダウンロードしたファイルが開...
-
ドライバINFファイルがあるのに...
-
Googleドライブにインターネッ...
-
勝手にショートカットのリンク...
-
ショートカットファイルが開け...
-
Thunderbirdのプロファイルが読...
-
DVD-Rなのに再書き込みや削除が...
-
jw cadの名前をつけて保存・・...
-
VBAでFormat がうまく使えない
-
シェルスクリプトでFTPの実行結...
-
フォルダを間違って削除しない...
-
VBAでPDFの中のプロパティを見...
-
C:\\Users\\All Users がエク...
-
ショートカットアイコンのリン...
-
ファイル名の始めに“.”をつけて...
-
Web.Config 構成ファイルのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ZIPファイルがwordになります
-
表示はZIPファイルなのに「アー...
-
Windows用に移植されたFM-TOWNS...
-
ダウンロードしたファイルが開...
-
ドライバINFファイルがあるのに...
-
zipファイルを自動解凍させない...
-
急いでいます。XDWファイルの開...
-
acerのディスプレイ「G225HQL」...
-
ドライブドライバの自己解凍形...
-
WinHlp32.exeのインストールに...
-
cubase、UR22Cを使用するにあた...
-
VBAを使ってファイルを圧縮したい
-
Windows Media Playerで再生で...
-
拡張子ppm!!
-
Windowsについてです iPadでWin...
-
spoolsv.exe
-
windows7でZIPファイルを開いて...
-
拡張子{cab} の開き方
-
osはwindows7です。 cliborと...
-
usbscan.sys
おすすめ情報