2009-05-14 14 views
0

最近私は、ドキュメントの.docmファイルに含まれるいくつかのファイルに依存するvbaのアプリケーションに取り組んでいます。最初は、Windows XPの圧縮フォルダ機能を使用して、プログラムでdocmの内容を抽出していました。これは、これが使用されるすべてのWindows XPに組み込まれているため、インストールが不要なため、最適なソリューションでした。しかし、私は問題を抱えています.DECMを特定の回数抽出すると、「エラー、そのファイルはすでに存在しています」というエラーが出ます。最初は、何かを壊して少し深く掘り下げたと思っていましたが、私のコードにはバグはありませんでしたが、むしろCompressed Folderのバグです。VBAでZip機能を実装するにはどうすればよいですか?

システム上の特定のzipファイルに「ファイルがすでに存在します」というエラーが表示された場合、圧縮されたフォルダは同じ名前のANYファイルでは機能しなくなります。だから私の質問です:どのように圧縮されたフォルダなしでVBAでzip機能を実装できますか?ボーナスの質問:圧縮されたフォルダを修正するにはどうしたらいいですか?

お時間をいただきありがとうございます。

-Seamus

更新: は現在、私はそれが圧縮フォルダを使用して作業している、私は新しい何かにエラーが発生するたびに、ファイルの名前を変更してバグを回避働いています。これは正常に動作していますが、私は問題を回避するよりも多くの修正を探しています。

答えて

0

Windowsで直接ジップ機能にアクセスする良い方法はないようです。それを行う唯一の良い方法は、他の答えにリンクされているzipフォルダのコピー方法を使用することです。私が抱えている問題については、毎回新しいファイル名を使用して回避する予定です。

0

多分あなたのVBAアプリで使用する前にファイルの名前を2回変更することはできませんか?最初に一時的な名前を付け、元の名前に戻します。

編集: 私はちょうどここに推測していますが、この問題をあなたのアプリから修正するのではなく、Windowsパッチの一種として修正することはまず考えられません。これは、あなたのアプリケーションが動作する全てのコンピュータに、このパッチが正しく動作するようにインストールされていなければならないことを意味します。そして、これはあなたが信頼できるものではありません。だから私はあなたが回避策に固執すべきだと思います。

+0

これは実際に私が今やっていることですが、ランダムに新しいファイル名を生成する必要があるため、少し下が最適です。これは悪い匂いです。 –

+0

完全にランダムなファイル名は本当に悪いです。すでに存在するファイルを名前とともにチェックしている間に連続した番号でファイル名を拡張できませんでしたか? – DaClown

0

Thisがお手伝いできます。彼がスクリプティングファイルシステムオブジェクトを使用しているようです...

+0

リンクをありがとう、役に立つ情報がたくさんあります。彼はしかし、コンピュータの統合されたジップ機能を使用します: oShellApp.Namespace(UnzipFolder).CopyHere oShellApp.Namespace(SourceFile).items 他の問題が私を助けることができるこのページ上の他のものがあります。ありがとう! –

+0

これは正確な圧縮フォルダの機能です。 –

関連する問題