Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3335 / 13644 ツリー ←次へ | 前へ→

【62820】バッチファイル じーた 09/9/6(日) 20:17 質問[未読]
【62821】Re:バッチファイル yoshi 09/9/7(月) 13:42 発言[未読]
【62824】Re:バッチファイル じーた 09/9/7(月) 18:35 質問[未読]
【62840】Re:バッチファイル yoshi 09/9/8(火) 14:32 発言[未読]
【62859】Re:バッチファイル じーた 09/9/9(水) 18:23 質問[未読]
【62869】Re:バッチファイル yoshi 09/9/10(木) 0:37 回答[未読]
【62871】Re:バッチファイル じーた 09/9/10(木) 10:40 お礼[未読]

【62820】バッチファイル
質問  じーた  - 09/9/6(日) 20:17 -

引用なし
パスワード
   shel関数を使い、
バッチファイルを起動して、
圧縮されたファイルを結合しようとしています。

・結合元ファイル1・・・・・TEST01.lzh
 TEST01.lzhの中身は、001.THA、002.THA、003.THA
・結合元ファイル2・・・・・TEST02.lzh
 TEST02.lzhの中身は、004.THA、005.THA、006.THA

これを、
 COPY /B c:\TEST01.lzh+c:\TEST02.lzh d:\test.lzh 
のバッチファイルを起動し結合すると
結果はtest.lzhができるのですが
中身はTEST01のまま、001.THA、002.THA、003.THA です。
バッチファイルを以下に変更すると
 COPY /B c:\TEST02.lzh+c:\TEST01.lzh d:\test.lzh
今度はTEST02の中身だけになります。
どのように改善すればよろしいでしょうか?
VBAではないので申し訳ございませんが
どうかよろしくお願いします。

【62821】Re:バッチファイル
発言  yoshi  - 09/9/7(月) 13:42 -

引用なし
パスワード
   >どのように改善すればよろしいでしょうか?

dosのcopyコマンドは単にファイルを連結するだけなので、
テキストファイルなら良いでしょうが、lzh等のデータファイルとしての結合は出来ようがありません。
改善では無理なので、別の方法(unlha32.dllを使う)になるでしょう。
web検索すればたくさん出て来ます。

【62824】Re:バッチファイル
質問  じーた  - 09/9/7(月) 18:35 -

引用なし
パスワード
   yoshi 様

ご丁寧な回答ありがとうございます。
実は職場での使用と開発が前提でして
有料ツールの持込や使用は勿論だめですし
web上のフリーツールのダウンロードなども一切出来ない環境でして
自前でVBAやバッチファイルを作らないといけません。
その上まだまだ初心者ですので
unlha32.dllをどのように使うのかもさっぱり理解できません。

このようにすれば良いなど
何かアドバイスあれば嬉しく思います。

【62840】Re:バッチファイル
発言  yoshi  - 09/9/8(火) 14:32 -

引用なし
パスワード
   >unlha32.dllをどのように使うのかもさっぱり理解できません。
>このようにすれば良いなど
>何かアドバイスあれば嬉しく思います。

まず、unlha32.dllの入手と各ユーザーへの配布はできるのでしょうか?
その前提で、
web検索でunlha32.dllを使う方法を理解されたらどうでしょう。
その上で分からない点を具体的に質問されては...
圧縮ファイルの結合など1行の命令で出来ます。

【62859】Re:バッチファイル
質問  じーた  - 09/9/9(水) 18:23 -

引用なし
パスワード
   yoshi 様

職場のPCにはすべて unlha32.dllが入っていました。
一晩色々自分で検索してみたのですがこれというものに出会えていません・・・。

行いたい作業は始めの質問への補足ですが
『TEST01.lzh』という圧縮ファイルの中の
各圧縮ファイル『001.THA』、『002.THA』、『003.THA』は解凍せず
『TEST02.lzh』の『004.THA』、『005.THA』、『006.THA』と合わせて
6個の圧縮ファイル001〜006THAファイルが入った『TEST.lzh』という圧縮ファイルにしたいのです。

1行の命令で可能とのことですがどうか宜しくお願い致します。

【62869】Re:バッチファイル
回答  yoshi  - 09/9/10(木) 0:37 -

引用なし
パスワード
   >『TEST01.lzh』という圧縮ファイルの中の
>各圧縮ファイル『001.THA』、『002.THA』、『003.THA』は解凍せず
>『TEST02.lzh』の『004.THA』、『005.THA』、『006.THA』と合わせて
>6個の圧縮ファイル001〜006THAファイルが入った『TEST.lzh』という圧縮ファイルにしたいのです。

以下のようなコードになりますが、適宜パスやスイッチ等は設定して下さい。
色々応用したければUNLHA32.DLLのドキュメント類を読んで下さい。

Private Declare Function Unlha Lib "unlha32" _
 (ByVal hWnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Long
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" _
 (ByVal lpPathName As String) As Long

Sub test1()
 Dim rt&
 SetCurrentDirectory ThisWorkbook.Path
 rt = Unlha(0, "j test.lzh test01.lzh test02.lzh", 0, 0)
 Debug.Print IIf(rt, "失敗", "成功")
End Sub

【62871】Re:バッチファイル
お礼  じーた  - 09/9/10(木) 10:40 -

引用なし
パスワード
   yoshi 様

とてもよい感じに使えそうです。
あまりの感動に1人で興奮しております^^;
大切に活用させていただきます。
本当にありがとうございました。

1つ宜しいでしょうか?
 Debug.Print IIf(rt, "失敗", "成功")
はどのように活用すればよろしいのでしょうか?

3335 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free