プロが教えるわが家の防犯対策術!

http://oshiete.goo.ne.jp/qa/5155002.html
を参考にしているのですが、リンク先の型と同じく「ファイルが見つかりません。 (Error 53)」になります。

当方の環境は、win764bit、エクセル2007です。

コードはリンク先のものをそのままエクセルにコピペしました。
'ファイル名取得
Filename = myDeskTopPath & "\test.xlsm"
だけ変更しました。

ZIP32J.DLL
zip32.dll 
が必要とのことなので、
http://www.vector.co.jp/soft/win95/util/se062163 …

http://www.csdinc.co.jp/archiver/lib/zip32j.html

zip232dN.zip(http://homepage3.nifty.com/csdinc/archiver/lib/z …
を落として、C:\WINDOWS\system32に入れました。

しかしエラーになります。

RC = Zip(hWnd, strCommand, strOutPut, lngSize)

のエラー時の値は、
hWnd→0
strCommand→-u test.zip test.xlsm(デスクトップにあります)
strOutPut→についてはイミディエイトウインドウで「?strOutPut」しても何も表示されません。
しかしstrOutPutにカーソルを充てると"・・・・・・・・"となっています。
lngSize→512
です。

OSが64bitだと無理なのでしょうか?
パソコンに詳しくないのですが、もしかしてC:\WINDOWS\system32ではないフォルダに
ZIP32J.DLL
zip32.dll
を入れるのでしょうか?

ご教授よろしくお願いします。

A 回答 (2件)

#当方 64bit の Excel を持っておりませんので、検証はしておりません。



【1】--------------------
>「ファイルが見つかりません。 (Error 53)」になります。
>もしかしてC:\WINDOWS\system32ではないフォルダに
>・・・入れるのでしょうか?

●ChainLP V0.40-16
http://no722.cocolog-nifty.com/blog/2012/11/chai …
に、
>64bit-OSの場合は、dllのコピー先はC:\System\System32ではなく、
>C:\System\SysWOW64になりますので、注意して下さい。
と出ていますので、恐らく、「C:\System\SysWOW64」の方にコピーしたらイケるのではないかと思われます。

 ただし、
●x64版で利用できる x64版アーカイバ DLL について
http://www.ponsoftware.com/archiver/help/X64DLL. …
には、
-- ここから引用 ---------------------------------
【注意(Windows 64bit版をお使いの方)】
64 ビット版 DLL を共有利用する場合の導入先は、\Windows\System32 です。
32 ビット版 DLL を共有利用する場合の導入先は、\Windows\SysWow64 です。
お間違えのない様、ご注意ください。
-- ここまで引用 ---------------------------------
と出ていて、前記と全く逆のことが書かれていますので、「共有利用」という意味が、私には解りませんが、何でしたら、「System32」と「SysWow64」の両方に入れてみられてはいかがでしょうか?


【2】--------------------
>当方の環境は、win764bit、エクセル2007です。
>OSが64bitだと無理なのでしょうか?

●unzip32.dllの利用について(64bit)
http://oshiete.goo.ne.jp/qa/7267931.html
に、
-- ここから引用 ---------------------------------
「64bit版のアプリケーションからDLLを使用する」場合には、64bit版のDLLが必要になります。
ですが、64bit OS でも「32bit版のアプリケーションから使う」場合に必要なのは32bit版のDLLです。
> Windows7(x64)では、動作している
ということは、質問者さんが作っているのは32bitアプリケーションということですね。それなら今間のままでも問題ありません。
-- ここまで引用 ---------------------------------
と出ていますので、OSではなくて、アプリケーション(Excel2007)の方の bit が問題のようです。

 したがって、sfdasdfagweさんがお使いの Excel2007 が 32bit なら、【1】をお試しください。
 Excel2007 が 32bit か 64bit かは、下記によりご確認ください。
1)[Alt] + [Ctrl] + [Delete] を押下して [Windows タスク マネージャ] を開きます。
2)[プロセス] タブ をクリックします。
3)[イメージ名] の列に表示されている「EXCEL.EXE」が「EXCEL.EXE」と表示されていれば 64bit、「EXCEL.EXE *32」と表示されていれば 32bit になります。

【3】--------------------
 前述のように「EXCEL.EXE *32」の場合は、dll のコピー先を移動(複写)するだけでイケるように思われますが、「EXCEL.EXE」、つまり 64bit だった場合は、
>「64bit版のアプリケーションからDLLを使用する」場合には、
>64bit版のDLLが必要になります。
とのことですので、「ZIP32J.DLL」・「zip32.dll」のそれぞれの 64bit版 が必要なのではないかと思われます。

 名前だけみると「ZIP64J.DLL」・「zip64.dll」かなと思われますが、ザクッとググってみると、「zip64.dll」はあるようですが、「ZIP64J.DLL」の方がないようです。

 ただ、
●「ZIP64J.DLLが見つかりません」というエラーが出た場合の対処法
https://mobile.twitter.com/tomoyapp/statuses/167 …
>.Pを押して圧縮ファイル名を入れるところでAlt-Zを押すと
>圧縮用DLL切り替えが可能.7z.dllが入ってるなら,それを選べばOK.
とのことで、「7z.dllが入ってるなら」イケるかも知れません。
http://www.google.co.jp/search?q=7z.dll+64bit


#繰り返しますが、
#当方 64bit の Excel を持っておりませんので、検証はしておりません。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2013/01/31 20:01

こんにちは。



私も、64bit PCでは試すことが出来ないし、細かい所は試していませんが、

http://oshiete.goo.ne.jp/qa/2405614.html
そもそも、元のログは、「ファイル名取得」を複雑に書いたので意味が伝わらず、それ読んだ利用者が割愛したから、ファイル名が見つからないという話になったのだと思います。

>strCommand→-u test.zip test.xlsm(デスクトップにあります)

test.xlsm で、デスクトップとは何でしょうか?

例えば、決め打ちで、「C:\Users\[User Name]\Desktop\test.xlsm」
とか、いうのではないでしょうか?

>hWnd→0
それと、そもそも、元のコードは、Excel 2003以下でも利用させるものですから、
hWnd = FindWindow("XLMANI", Application.Caption)の、FindWindowはいらないですよね。

hWnd = Application.Hwnd
で取れるはずです。FindWindowを使うかどうかは、どちらでも良い話ですが。

C:\WINDOWS\system32 に入れる・入れないはそんなに重要ではないと思います。
パスの通った所に、入れればよいだけの話です。ただ、反応が速いか遅いかの違いだと思います。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2013/01/31 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!