次の方法で共有

(Excel)ファイル形式またはファイル拡張子が正しくありません。

Anonymous
2023-02-07T23:26:17+00:00

VBAから出力したExcelが「ファイル形式またはファイル拡張子が正しくありません。」のエラーメッセージを表示し開けなくなりました。これ以前までは正常に出力されており、エラーが発生したファイル以降も正常に出力されています。エラーファイルは拡張子を「.xls」に変更して開き直し、「名前を付けて保存」から「ファイルの種類」から「.xlsm」にして保存すると復旧出来ました。

エラーが発生したバージョンは2021の認識です。

このエラー発生原因はExcel側不具合の可能性になりますでしょうか?

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

  1. Anonymous
    2023-02-09T05:18:08+00:00

    > コピー元となるブックはそのマクロを実行しているマクロ有効ブック自身になります。> 現時点で特定のマクロ有効ブックでしか事象を確認出来ておりません。

    その場合、SaveCopyAs メソッドを呼び出す前から既にそのマクロ有効ブックが
    破損していた(しかけていた)、あるいは SaveCopyAs メソッドを含む
    マクロの実行中において何らかの要因(マクロが直接の原因ではない場合も含む)
    によりそのブックの破損が引き起こされたという可能性が考えられます。

    > エラーファイルは拡張子を「.xls」に変更して開き直し、> 「名前を付けて保存」から「ファイルの種類」から「.xlsm」にして> 保存すると復旧出来ました。> また、同マクロを使用し同様の作業を行っても再現が確認出来ません。> 現状この一件のみ発生した事象となっております。

    上記の操作によって既にそのブックが修復され、それ以降は同じマクロを
    呼び出しても件の現象が再現されなくなった、ということであれば、
    現時点においてはその原因が Excel の不具合であったか否かは
    判断のしようがありません。

    現状判明しているのは
    「 Excel のバージョンが 2021 である(実際のビルド番号は不明)」
    「あるマクロにおいて SaveCopyAs メソッドが呼び出されている」
    「そのコピー元となっているブックはそのマクロを含む .xlsm ファイル自身である」
    という 3 つの情報であり、これらの条件のみを満たしている状況下で
    同じ現象が再現されることを他の環境や他のブックでも確認できなければ、
    その現象が Excel の不具合によるものであると断定することは
    出来ないでしょう。

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません

6 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2023-02-08T06:39:42+00:00

    具体的に回答出来るように返信いただき誠に感謝いたします。

    私の質問が至らないばかりにお手数をおかけしてしまい申し訳ございません。

    コピー元となるブックはそのマクロを実行しているマクロ有効ブック自身になります。

    現時点で特定のマクロ有効ブックでしか事象を確認出来ておりません。

    また、同マクロを使用し同様の作業を行っても再現が確認出来ません。

    現状この一件のみ発生した事象となっております。

    0 件のコメント コメントはありません
  2. Anonymous
    2023-02-08T05:20:08+00:00

    > SaveCopyAsのためFormatは指定無で「.xlsm」です。ファイルパスも「.xlsm」です。

    コピー元となるブックはそのマクロを実行しているマクロ有効ブック自身でしょうか。
    それとも別のマクロ有効ブックでしょうか。

    (標準モジュール)

    Sub Test_SaveCopyAs()
    
        Dim wbkTarget As Workbook
        Dim strNewFilePath As String
        
        'コピー元ブックの参照(この例ではこのモジュールを含むブック自身とする)
        Set wbkTarget = ThisWorkbook
        
        With wbkTarget
            
            'ファイル保存形式チェック
            If .FileFormat <> xlOpenXMLWorkbookMacroEnabled Then
                MsgBox .Name & " はマクロ有効ブック(.xlsm形式)ではありません。", _
                       vbExclamation, _
                       "ファイル形式エラー"
                Debug.Print "FileFormat:" & .FileFormat
                Set wbkTarget = Nothing
                Exit Sub
            End If
            
            'コピーの保存先ファイルパスの生成
            strNewFilePath = wbkTarget.Path & "\backup" & Format(Now(), "yyyymmddhhnnss") & ".xlsm"
            'ブックのコピーを保存
            .SaveCopyAs strNewFilePath
            Debug.Print strNewFilePath
            MsgBox """" & strNewFilePath & """に " & .Name & " のコピーを保存しました。", _
                   vbInformation, _
                   "保存完了"
        End With
        
        Set wbkTarget = Nothing
    
    End Sub
    

    例えば上記のようなマクロを実行されているとして、
    どのマクロ有効ブックをコピー元にしても件の現象が再現される、
    ということなのでしょうか。
    それとも特定のマクロ有効ブックでのみ発生するのでしょうか。

    0 件のコメント コメントはありません
  3. Anonymous
    2023-02-08T02:49:37+00:00

    回答ありがとうございます。

    不具合例の前後80件ほど正常動作を確認出来ていたのでコードの可能性は薄いものと考え

    詳細を記載しておりませんでした。

    SaveCopyAsのためFormatは指定無で「.xlsm」です。ファイルパスも「.xlsm」です。

    Web上にエラー内容と解決方法が同内容の文献が有り、Excel側の不具合であると記載が有り

    ましたが、Microsoftの正式な文献を見つけきれなかったため、こちらに質問させていただき

    ました。

    以上、お手数をおかけしますが、ご確認よろしくお願いしたく存じます。

    0 件のコメント コメントはありません
  4. Anonymous
    2023-02-08T01:33:01+00:00

    > VBAから出力したExcelが「ファイル形式またはファイル拡張子が正しくありません。」の> エラーメッセージを表示し開けなくなりました。

    具体的にどのようなコードを実行されているのかについて
    明記されることをお奨めします。

    恐らく Workbook オブジェクトの SaveAs メソッドを呼び出されているのだと
    思われますが、引数 FileName で指定しているパスのファイル拡張子と
    引数 FileFormat に渡している定数(値)はマッチしているのでしょうか。

    0 件のコメント コメントはありません