このメモは、Excelファイルを開こうとしたときに、次の形式のエラーメッセージを受け取った人を対象としています。
私の場合、このようなエラーにより、xlsxファイル(以降1.xlsx)が開かれ、「Petya」などのウイルス攻撃の後にR-Saverを使用して復元されました。
1.xlsxファイルの内容をフォルダ「\ 1」に解凍した後、コンテキストメニューから次のエラーが発行されました。
これらのサービスファイルのサイズはゼロであることが判明しました。 作業中の2.xlsxファイルを使用して同様の手順を実行し、ゼロ以外の[Content_Types] .xmlおよび.relsファイルを「\ 1」フォルダーから「\ 2」フォルダーからコピーしました。 次に、「\ 1」フォルダーの内容を.zipアーカイブに追加し、名前を3.xlsxに変更しました。 その結果、3.xlsxファイルは、警告はありますが、正しいデータで既に開かれています。
上記の手順を自動化するために、「現状のまま」で配布されるvbscriptが開発されました。
スクリプトソースコードST1_XLSX_FIXER_v1option explicit Const THIS_SCRIPT_NAME = "ST1_XLSX_FIXER_v1.vbs" Const SUBDIR_XLS_SRC = "ST1_XLSX_FIXER_DATA_v1" Const SUBDIR_OUT = "ST1_XLSX_FIXED" Const RES_SUFFIX = "_fixed_ST1_v1" Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
アーカイブ内のスクリプト
に加えて、ST1_XLSX_FIXER_DATA_v1フォルダーが添付されます。このフォルダーには、置換用の参照ファイルがあります。 スクリプトの範囲を破損したファイルの他のバージョンに拡張するために、その内容を変更できます。 たとえば、そこにあるヌルファイルオプションを追加します。
スクリプトが機能するには:- ST1_XSLX_FIXER_v1.zipアーカイブを任意のフォルダーにダウンロードして解凍します
- 左クリックして、1つ以上のxlsxファイルをスクリプトST1_XLSX_FIXER_v1.vbsに転送します
- 各ファイルの処理プロセスが開始されます。
- 各ファイルが正常に処理されると、次の形式のメッセージが表示されます。
スクリプトの原理:- 入力ファイルを変更せずに保持します。
- サブフォルダーST1_XLSX_FIXEDを作成します
- ST1_XLSX_FIXEDに名前変更されたxlsx zipを作成します
- zipをフォルダーに解凍し、その上にST1_XLSX_FIXER_DATA_v1をコピーします
- 結果のフォルダーをzipでアーカイブし、結果のファイルの名前をxlsxに変更します
おわりにこれらの実験は一般的な使用であるとは主張しておらず、ご自身の責任で提案されたソリューションを使用してください。 私は、より広範な実験を実施し、結果に基づいてスクリプトを改良する予定です。 現在の明示的な制限は、ST1_XLSX_FIXER_DATA_v1からコピーするときに、スクリプトが置換されたファイルのサイズを分析しないため、どのサービスファイルが空であることが判明して置換が必要かを判断できないことです。 最も可能性が高いのは、サービスファイルが失われ、「\ 1 \ xl \ worksheets」のワークシートではなく、この方法が適用される場合です。
また、このスクリプトは、Excel 2003以前のバージョンで作成されたxls拡張子を持つファイルには適していません。異なるデータストレージ形式を使用しているためです。