
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
を入れるのでしょうか?
ご教授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
#当方 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 を持っておりませんので、検証はしておりません。
No.2
- 回答日時:
こんにちは。
私も、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 に入れる・入れないはそんなに重要ではないと思います。
パスの通った所に、入れればよいだけの話です。ただ、反応が速いか遅いかの違いだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
POSTAL2が起動しない
-
python エラー
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
vb2010にてASPWEBシステムを作...
-
[c++] <pthread.h>がinclude で...
-
リンカのエラー
-
コールバック関数指定時のエラー
-
” OS ビルド ” の意味が分か...
-
visual C++ でビルドの中止がで...
-
デバッグとビルドは何が違うの...
-
gcc で シフトJISを通す方法を...
-
Visual Studio 2008(ASP.net) ...
-
エディタとコンパイラ 基礎
-
Linux(g++)とAIX(XL C++)の挙動...
-
DLLファイルの逆コンパイラにつ...
-
VC++6.0 で使用可能な、"Platfo...
-
適切な変換関数が存在しない???
-
外部依存関係について
-
fortranでプログラムを実行する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
指定された引数が有効範囲にな...
-
ASP.NETのDLL入れ替えについて
-
res://ieframe.dll/について
-
user32.dllがないためアプリが...
-
visual studioの不要なDll削除方法
-
C# DLL エントリ ポイントが...
-
VB6.0(SP6)にて開発を行なって...
-
VBAエディタのコード画面で、カ...
-
VC++2010でdllファイルの作成に...
-
vb6で作成した画面が処理に時間...
-
VBにてIMEの入力モードを変える...
-
*.exeと異なるフォルダのDLLを...
-
手書き文字認識のdll
-
VC++6.0 でのライブラリ参照方法
-
MFC7.0ランタイムライブラリ
-
ファイルをvbaで圧縮したいので...
-
VB2005ExpressEditionでのUnlha...
-
APIの呼び出しDLLファイルの場...
-
scrrun.dllの読み方を教えてく...
-
M365にアップデートしてからコ...
おすすめ情報