63744
現在、仕事の関係にてExcelファイルの内容を自動で書き換えるプログラムを作成していますが、  
その前段階にて該当のExcelファイルにマクロが含まれているか判定する様にしています。

そのマクロの判定段階で該当のExcelファイルが破損する事があります。(2019年8月辺りから月に1000ユーザー中5件程度発生し始めている)  
原因の検討が付かず困っている状態です。

また、破損したファイルをExcelで開こうとすると、「原紙名:ファイル形式が正しくありません。」とのメッセージが表示され開く事や修復も出来ない状態です。

下記にOLEを操作して、Excelファイルのマクロ有無を判定するコードをお伝えいたします。  
Excelファイルのマクロ判定には、Delphi言語にて行っております。

* * *

**Excelファイルのマクロ判定コード**

```

    function MacroCheck(gensi: string): boolean;
    var
       PrnFileName:array[0..255] of Char;
       i: Integer;
    begin
       strpcopy(PrnFileName, gensi);
       try
          if XlsOpenBook(PrnFileName, nil, i) then begin
             XlsAddSheet(1);
             if not XlsDelSheet(0,XlsGetSheetCount-1) then begin
                //マクロ有り
                Result := True;
             end
             else begin
                //マクロ無し
                Result := False;
             end;
          end
          else begin
             Result := False;
          end;
       finally
          XlsCloseBook(False);
       end;
    end;
    
```
CC BY-SA 4.0
2020-03-10T07:35:21.347
63723
2020-03-29T00:52:04.453
2020-03-29T00:52:04.453
4236
37783
question
delphi
Excelファイルを操作すると時々破損します。
XlsOpenBook / XlsCloseBookなどの名称から[ExcelCreator
API](http://www.adv.co.jp/product/product_excelcreator3_creatorapi.htm)が使われていると見受けられます。

OLEもExcelも使用されていないようですので、環境を確認し、ExcelCreatorが使われているのであれば製造元に問い合わせるべきです。
CC BY-SA 4.0
2020-03-10T22:06:47.237
63744
2020-03-10T22:06:47.237
4236
63723
answer