ある日、職場の方から突然ZIPファイルを開けなくなりましたという連絡がありました。エクスプローラーでファイルを開いて、圧縮されている中のファイルをダブルクリックすると、「展開を完了できません。展開先ファイルを作成できませんでした。」というメッセージが表示され、ファイルの中身が表示されません。 7zipからは開くことができるので、Windows 10標準のZIP機能がおかしいらしい。 ネットで検索して一時ファイルを消してみたり、SFC /SCANNOW を実行して見たり、色々やってみたけれど効果なし。 海外サイトで Windows cannot complete the extraction. The destination file could not be created. などで検索してもいい情報が見つかりません。 途方に暮れつつ、ZIPファイルを右クリックして、「すべて展開」を選んでみたところ、エラーコード「0x80004005」が出ました。 それで検索したところ、次のページがヒットしました。 Windows 10でZIPファイルの解凍エラー(0x80004005)が発生したときの対処方法 問題のZIPファイルの作成には7zipを使っていたので、圧縮時の設定を見てみたところ、確かに圧縮方式がデフォルトのdeflateではなく、BZip2になっていました。 もとのdeflateに戻して、再度圧縮して標準ZIP機能で開いたところ、あっさり開くことができるようになりました。なんと。 というわけで、ZIPファイルが開けない場合には、元のツールの圧縮方式を疑ってみる必要があります。取引先から送られてきたものは、頼み込むか、7zip等で開くしかなさそうです。 また、無駄な時間を使ってしまった。 ちなみに、暗号化方式がZipCryptでないとやはりWindows 標準のZIP機能では開けないそうです。
VBAから ADO を使わずにODBC経由でデータベースにアクセスする方法です。 サンプルデータベース 次のようなアクセスのデータベースがあるとします。 テーブル名は「商品マスター」 カラム名は、ID, 商品名, 金額 保存してあるファイルは C:\Test\SampleDB.accdb DSNの用意 このファイルにアクセスするための DSN を作成します。(作成方法は後述) VBAの実行 Excel でシートを開き、次のプロシージャーを実行します。これはテーブルを作成するプロシージャーなので、最初に一回実行するだけです。 Private Sub uCreateTableWithQuery() Dim uWS As Worksheet Dim uList As ListObject Set uWS = ActiveSheet Set uList = uWS.ListObjects.Add( _ SourceType:=xlSrcQuery, _ Source:="ODBC;DSN=NK Test", Destination:=Range("A3")) uList.DisplayName = "ExcelProductMaster" End Sub DSN=にDSN名を指定します。この例では、NK Test。 Destination はテーブルの左上を配置するセルです。この例ではA3セル。 DisplayName はテーブル名を指定します。この例ではExcelProductMaster。 実行すると次のようにテーブルが作成されます。テーブルはQueryTableに接続され、QueryTableはDSNを利用可能です。 次のプロシージャーを実行します。 Public Sub uRefleshQueryTable() Dim uList As ListObject Dim uSQL As St...
コメント
コメントを投稿