ある日、職場の方から突然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機能では開けないそうです。
最近噂のChatGPT。大学受験問題も解ける賢いAIだとか。そこで私も試してみました。 指示は、「単価、数量、金額の列を持つExcelのテーブルを一行ずつ読み、金額を計算して更新するVBAを作りなさい。ListObjectとFor eachを用いなさい」です。 結果は次の通り正しく回答されました。 マジかと思いました。 自然言語からコードが生成されるだけで驚きですが、金額を計算しなさいと言っただけで、単価と数量を乗算しています。 試しに実行 上の画面のテキストをコピペしたものです。 ExcelのVBAでは、ListObjectを用いることで、Excelシート上のテーブルを操作することができます。以下は、単価、数量、金額の列を持つExcelのテーブルを一行ずつ読み、金額を計算して更新するVBAの例です。 Sub UpdateTable() Dim tbl As ListObject Dim row As ListRow ' テーブルを取得します Set tbl = ActiveSheet.ListObjects("Table1") ' テーブルの各行を取得します For Each row In tbl.ListRows ' 単価と数量から金額を計算します Dim unitPrice As Double Dim quantity As Integer unitPrice = row.Range(1, 1).Value quantity = row.Range(1, 2).Value row.Range(1, 3).Value = unitPrice * quantity Next row End Sub 上記のVBAを実行すると、単価と数量から金額を計算し、テーブル内の金額の列が更新されます。 ListObjectを用いることで、Excelシート上のテーブルを簡単に操作することができるようになります。また、For Eachステートメントを用いることで、テーブル...
コメント
コメントを投稿