Excel VBA質問箱 IV

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

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


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

【10088】アーカイブ化したExcelファイルを開く方法・・・ モラボ 04/1/6(火) 23:41 質問
【10089】Re:アーカイブ化したExcelファイルを開く方... Kein 04/1/7(水) 1:42 回答
【10112】Re:アーカイブ化したExcelファイルを開く方... モラボ 04/1/8(木) 0:05 お礼
【10113】Re:アーカイブ化したExcelファイルを開く方... Kein 04/1/8(木) 1:10 発言
【10191】Re:アーカイブ化したExcelファイルを開く方... モラボ 04/1/10(土) 1:52 お礼

【10088】アーカイブ化したExcelファイルを開く方...
質問  モラボ  - 04/1/6(火) 23:41 -

引用なし
パスワード
   こんばんは、初めて投稿します。よろしくお願いします。
今、test.xlsを圧縮(LHUT32を使用)して、test.lzhというファイルがあります。
これを、test.lzh→test.xlsに解凍して新規にExcelで開くにはどうしたらよいのでしょうか?
下のような方法で、任意のExcelファイルを開くようにしていたのですが、アーカイブファイル対応にしたいです。

Dim FILE As String

'FILEは変数です
workbooks.open filename:=FILE

LHUT32を起動して、Sendkeysを使って、強引に開くやり方をやってみたのですが…
すっきりと開く方法ありましたら、よろしくお願いします。

【10089】Re:アーカイブ化したExcelファイルを開く...
回答  Kein  - 04/1/7(水) 1:42 -

引用なし
パスワード
   解凍には専用のDLLが必要です。UNLHA32 というファイルなんですが、Miccoさん
という方が作られたものです。MiccoさんのHP↓からダウンロードさせてもらって
下さい。
http://www2.nsknet.or.jp/~micco/micindex.html
VBAで解凍するためのコードは↓のようにになります。
Unlhaに渡す2番目の引数には頭に "e" が付いてますが、これはスイッチです。
UNLHA32.DLLの解説テキストに、詳しい説明が出ています。もちろんこれを使って
圧縮することも可能なので、是非説明を読んでみて下さい。

Declare Function Unlha Lib "UNLHA32.DLL" (ByVal Callhwnd As Long, _
ByVal LHACommand As String, ByVal RetBuff As String, _
ByVal RetBuffSize As Long) As Long

Sub Test解凍()
  Dim SendStr As String, MyS As String * 255
  Dim Result As Long

  SendStr = "e C:\Temp\test.lzh C:\Temp\"
  Result = Unlha(0, SendStr, MyS, 255)
  If Result <> 0 Then MsgBox "解凍は失敗しました", 48
End Sub

【10112】Re:アーカイブ化したExcelファイルを開く...
お礼  モラボ  - 04/1/8(木) 0:05 -

引用なし
パスワード
   早速ご返答ありがとうございます。
VBAってこんなことも出来るんですね^^;;

教えていただいたコード実行してみたのですが、、、
まだ制限というか条件があって、、
書き込みの権利の無いユーザーが、サーバー上のファイル(test.lzh)を、
試験実行?して、ただ開いて内容を閲覧する。閲覧後、LHUT32も閉じて、終了。
という処理を行いたいです。
(書き込み権利が無いので、同じディレクトリに解凍出来ません。
他の場所で解凍しても、閲覧後ファイルを削除する処理が必要となるので、
どちらがよいものかと。)
解説テキストを読んでみたのですが、日本語との格闘になって・・・
テンパってしまい、、
また、強引なやり方で…

Apl = Shell("LHUT32.EXE", 1)
AppActivate Apl

SendKeys "%FO", True
SendKeys ファイル名, True     'ファイル名はサーバー上のtest.lzh
SendKeys "%O", True
SendKeys "%RI", True
SendKeys "%{F4}", True
後は、メッセージの処理をだらだらと・・・
こんな感じで、深みにはまってしまいましたtt

説明もままならななく、申し訳ないですが、よろしくお願いします。

【10113】Re:アーカイブ化したExcelファイルを開く...
発言  Kein  - 04/1/8(木) 1:10 -

引用なし
パスワード
   >ただ開いて内容を閲覧する
それなら Miccoさんの作られたソフト "LHMELT" をダウンロードさせてもらったら
どうでしょーか ? このソフトを入れると、圧縮ファイルのままダブルクリックして、
内容を見ることが出来ますが。

【10191】Re:アーカイブ化したExcelファイルを開く...
お礼  モラボ  - 04/1/10(土) 1:52 -

引用なし
パスワード
   返事が遅くなりました。
自分なりに考えた結果以下のようにしました。

Sub Test解凍()
  Dim SendStr As String, MyS As String * 255
  Dim Result As Long

  SendStr = "e C:\Temp\test.lzh C:\Temp\"
  Result = Unlha(0, SendStr, MyS, 255)
  If Result <> 0 Then MsgBox "解凍は失敗しました", 48
End Sub

上記実行後、"C:\Temp"内のファイルを削除する処理(以下)を行うことで、解決しました。

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(Fname)
f.Delete

ご助言ありがとうございました。
また、機会がありましたらよろしくお願いします。

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