Excel VBA質問箱 IV

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

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


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

【77686】lzhを解凍する際、入っていたフォルダーの名前を付ける ペンネーム船長 15/11/29(日) 19:23 質問[未読]
【77687】Re:lzhを解凍する際、入っていたフォル... γ 15/11/29(日) 20:11 発言[未読]
【77688】Re:lzhを解凍する際、入っていたフォル... γ 15/11/29(日) 20:43 発言[未読]
【77689】Re:lzhを解凍する際、入っていたフォル... ペンネーム船長 15/11/29(日) 22:05 回答[未読]
【77692】Re:lzhを解凍する際、入っていたフォル... γ 15/11/30(月) 7:16 発言[未読]

【77686】lzhを解凍する際、入っていたフォルダ...
質問  ペンネーム船長  - 15/11/29(日) 19:23 -

引用なし
パスワード
   Aフォルダーの中にア・フォルダー、イ・フォルダ−、ウ・フォルダー等多数があります。
ア・フォルダ-の中には、圧縮ファイル「※.lzh」があります。イやウのフォルダーも同じ名前の「.lzh」が入っています。
「.lzh」は○○.csv、□□.xls、△△.pdfを圧縮したものです。
「.lzh」はBフォルダーに解凍します。
解凍にはUNLHA32.DLLを使います。
教えて欲しい内容:
ア、イ、ウ・・・フォルダーの中にある「.lzh」を解凍した際、csv、xls、pdf名の頭にフォルダー名(ア、イ、ウ・・・)を付けてBフォルダーに置くコードを教えて下さい。
Bフォルダーにはア○○.csv、ア□□.xls、ア△△.pdf、イ○○.csv、イ□□.xls、イ△△.pdf、ウ○○.csv、ウ□□.xls、ウ△△.pdf・・・が置かれるようにしたいのです。
宜しくお願いします。

【77687】Re:lzhを解凍する際、入っていたフォ...
発言  γ  - 15/11/29(日) 20:11 -

引用なし
パスワード
   すみませんが、今できているところまで示してもらえますか?

ファイルの更新年月日は古いままでしょうから、
基本的なアイデアとしては、
・解凍先のフォルダのファイル名を予め保持しておいて、
・解凍後に増えたファイルを対象として、名前を書き換える
ことを実行すればいいんじゃないでしょうか。

【77688】Re:lzhを解凍する際、入っていたフォ...
発言  γ  - 15/11/29(日) 20:43 -

引用なし
パスワード
   後半部分は単なる思いつきです。
別の方からAPIを利用したもっと良い案が出ると思いますので、
いったんペンディングにしておいて下さい。

【77689】Re:lzhを解凍する際、入っていたフォ...
回答  ペンネーム船長  - 15/11/29(日) 22:05 -

引用なし
パスワード
   ▼γ さん:
>後半部分は単なる思いつきです。
>別の方からAPIを利用したもっと良い案が出ると思いますので、
>いったんペンディングにしておいて下さい。

lzhがAフォルダーの中にあるときの解凍方法は調べて試してみたのですが、
これは私のやりたいことには未だ遠く及びません。

'DLLを使う事を宣言する
Private Declare Function Unlha Lib "UNLHA32.DLL" (ByVal Callhwnd As Long, ByVal LHACommand As String, ByVal RetBuff As String, ByVal RetBuffSize As Long) As Long
  
Private Sub CommandButton1_Click()

'********* UnLHA32.DLLを使ってLZHファイルを解凍する *********
Dim Ret As String * 255       'UnLHAからの結果を入れるバッファ(長さ255バイト)
Dim SendStr As String        'コマンド゙文字列
Dim sourceFile As String       '解凍する圧縮ファイル
Dim targetDir As String       '解凍先ディレクトリ
Dim Result As Long          '戻り値
Dim Msg1 As String
Dim oFolder As Object
          
targetDir = "C:\Temp\B" & "\"      '初期値は 同じディレクトリに解凍。
sourceFile = "C:\Temp\A" & "\" & "*.lzh" 'もうこの辺からお手上げ
SendStr = "e " & sourceFile & " " & targetDir
         '(スペースで区切っていることに注意)
                
Result = Unlha(0, SendStr, Ret, 255)      'UnLHA実行!
       
End Sub

【77692】Re:lzhを解凍する際、入っていたフォ...
発言  γ  - 15/11/30(月) 7:16 -

引用なし
パスワード
   UnlhaFindFirst や UnlhaFindNext というAPIを用いて
ファイル名を取得することができるかもしれませんね。
宣言方法などは、
ht tp://keep-on.com/excelyou/2001lng4/200101/01010096.txt
を参照してみてはいかがでしょうか。

# コメントしても無視する輩がいて気分が悪い。

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