■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#447-2VB6での圧縮フォルダについてボスケテ2003-08-19(火) 20:33
     #463-2RE#447:VB6での圧縮フォルダについて藤代千尋2003-08-20(水) 11:47
     #465-2RE#463:VB6での圧縮フォルダについてボスケテ2003-08-20(水) 13:11
     #468-2RE#465:VB6での圧縮フォルダについて藤代千尋2003-08-20(水) 15:59
     #470-2RE#468:VB6での圧縮フォルダについてボスケテ2003-08-20(水) 16:51
     #471-2RE#465:VB6での圧縮フォルダについて魔界の仮面弁士2003-08-20(水) 16:54
     #473-1RE#471:VB6での圧縮フォルダについてボスケテ2003-08-20(水) 18:12
#447-2
VB6での圧縮フォルダについて
いつもお世話になっております。
ボスケテ@初投稿と申します。
以下について質問させていただきます。

WinXP(ホーム)+VB6(SP5) の環境で、
VB 内で XP の圧縮フォルダ内のデータを
追加・参照・更新は可能なのでしょうか。
確認しましたところ、
C:\hoge.zip\hoge\moge1.txt という状態で、
Dir("C:\hoge.zip",vbDirectory) は
"hoge.zip" と返ってくるのですが、
Dir("C:\hoge.zip\hoge",vbDirectory) は
""が返ってきます。
Dir("C:\hoge.zip\hoge\moge1.txt",vbNormal) も
""が返ってきます。
上記より圧縮フォルダとしてではなく、
Zipファイルとしてみているということなのでしょうか。

行いたいことは圧縮フォルダを作成し、
その中にファイルを保存したいのです。


以上、よろしくお願いいたします。
#463-2
RE#447:VB6での圧縮フォルダについて
> 上記より圧縮フォルダとしてではなく、
> Zipファイルとしてみているということなのでしょうか。

もともとファイルなんです。それを OS がさもフォルダのように見せているだけなんです。(^^;

とりあえず基本はここ。
○統合アーカイバプロジェクト
http://archiver.wakusei.ne.jp/index.html
#465-2
RE#463:VB6での圧縮フォルダについて
藤代様ご回答ありがとうございます。

> もともとファイルなんです。それを OS がさもフォルダのように見せているだけなんです。(^^;
言葉足らずのようで申し訳ありませんが、
一応ファイルであることは理解していたのですが、
OSの力を借りてVB上でも同じようにフォルダとして
扱えるものなのかということです。
また、力を借りることができるのであれば、
どのような方法があるのかをご教授願えますでしょうか。

> とりあえず基本はここ。
> ○統合アーカイバプロジェクト
> http://archiver.wakusei.ne.jp/index.html
こちらのほうも探したのですが、やりたいことが
できる/できないという結論が見つからず、
こちらのほうにご質問させてもらいました。

お手数をおかけしますが、よろしくお願いいたします。
#468-2
RE#465:VB6での圧縮フォルダについて
> OSの力を借りてVB上でも同じようにフォルダとして
> 扱えるものなのかということです。

OS の力を借りる方法は、私には分かりません。
なので、ZIP を扱うための DLL を利用して処理しましょう。ということで
> > ○統合アーカイバプロジェクト
> > http://archiver.wakusei.ne.jp/index.html
です。

「やりたいこと」そのままではありませんが、こんなプログラムを書く必要があります。
http://w1.nirai.ne.jp/kats/raco/moddown/lhazip.html

「やりたいこと」が出来るかどうかは、利用する DLL の説明を読んでください。(^^)/
#たぶん、できます。
#470-2
RE#468:VB6での圧縮フォルダについて
ご回答ありがとうございます。

> 「やりたいこと」そのままではありませんが、こんなプログラムを書く必要があります。
> http://w1.nirai.ne.jp/kats/raco/moddown/lhazip.html
> 
> 「やりたいこと」が出来るかどうかは、利用する DLL の説明を読んでください。(^^)/
> #たぶん、できます。
圧縮フォルダを利用することで簡単にファイルの圧縮を
行えるかと思い、今回の質問をさせていただいたのですが
簡単にできないのであれば、この方法に固執する必要も
ございませんので、通常の圧縮する方法を行いたいと思います。

藤代様、どうもありがとうございました。
#471-2
RE#465:VB6での圧縮フォルダについて
> OSの力を借りてVB上でも同じようにフォルダとして
> 扱えるものなのかということです。

Dir関数は、ディレクトリ内の検索には使えますが、仮想フォルダの検索には使えません。

仮想フォルダや物理フォルダなども、同等の操作で処理したいのであれば、
Shellオブジェクト(Shell関数に非ず)を使うという手があります。

Option Explicit

Private Sub Command1_Click()
    Dim oShell As Object
    Dim oFolder As Object
    Dim oFolderItem As Object
    
    'この変数はStringではなく、Variantで宣言してください
    Dim varZipFolderPath As Variant

    List1.Clear
    varZipFolderPath = Text1.Text

    On Error GoTo ErrExit
    Set oShell = CreateObject("Shell.Application")
    Set oFolder = oShell.NameSpace(varZipFolderPath)
    For Each oFolderItem In oFolder.Items()
        List1.AddItem oFolderItem.Name
    Next

    'この圧縮フォルダに、C:\A.TXT をコピーする場合
    'oFolder.CopyHere oShell.NameSpace("C:\").Items().Item("A.TXT")

    Set oFolder = Nothing
    Set oShell = Nothing

    List1.Enabled = True
    Exit Sub
ErrExit:
    List1.AddItem Err.Description
    List1.Enabled = False
End Sub


Shellオブジェクトで操作できないような、より高度な処理を行いたい場合は、
シェルエクステンションについて調べて見てください。
でもZIPファイルなら、アーカイバDLLで操作した方が、プログラム的には楽ですよ。(^_^;)
#473-1
RE#471:VB6での圧縮フォルダについて
魔界の仮面弁士様、ご回答ありがとうございます。

> 仮想フォルダや物理フォルダなども、同等の操作で処理したいのであれば、
> Shellオブジェクト(Shell関数に非ず)を使うという手があります。

すでに記述したようにDLL操作に変更することにしたのですが、
できるのであればとサンプルと同じようにコードを書いてみたのですが、
参照設定か何かが必要なのか上手くいかないようです。
調べてみて、DLLとどちらにするか考えたいと思います。


どうもありがとうございました。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)