1

Excel テンプレート ファイルがあります。Excel のバージョンを元に、Matlab で Temp.xlsm として名前を付けて保存したいと考えています。

テンプレートファイルを保存するために使用しているコードは次のとおりです。

if(XLversion >= 12.0)
    Workbook = invoke(Excel.Workbooks,'Open',tempxls);
    tempxls1 = [pwd '\utils\temp.xlsm'];
    Workbook.SaveAs(tempxls1,1);
    tempxls = tempxls1;
    extn = 'xlsm';
end

コードは正常に動作しています。ただし、ファイルを開こうとすると、次のエラーが発生します。

ここに画像の説明を入力

ただし、名前を付けて保存メニューを使用して temp.xls を temp.xlsm に保存すると、エラーなしで開きます。

コードのエラーの可能性があるか、何か不足している場合。

ありがとう

4

1 に答える 1

1

次のコードを試してコメントしてください。これを呼び出しsub-routineてファイルとして保存できます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
    FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
    Cancel = True
    If FileNameVal = "False" Then 'User pressed cancel
        Exit Sub
    End If
    Application.EnableEvents = False
        If Right(ThisWorkbook.Name, 5) <> ".xlsm" Then
            ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
        Else
            ThisWorkbook.SaveAs Filename:=FileNameVal, FileFormat:=xlOpenXMLWorkbookMacroEnabled
        End If
    Application.EnableEvents = True
End If
End Sub

参照:

于 2013-01-03T04:02:14.350 に答える