2

マクロを含む Excel 2007 ブックを開くと、次のエラーが表示されます。

Excel は {FILENAME} に判読できないコンテンツを検出しました。このブックの内容を復元しますか?

以下のマクロではないでしょうか。私はその部分を追加し、そのActiveSheet.Unprotect部分に変更を加えました.SaveAs TempFilePath & "\" & TempFileName & FileExtStr, FileFormat:=FileFormatNum(正確には覚えていませんが.

このマクロは、ブック内の 1 つのシートをエクスポートし、保護を解除し、値のみをコピーして貼り付けてから閉じます。これは正常に機能しますが、メインのワークブックを保存または再度開くと、「読み取り不能」エラーが発生します。

'Working in Excel 97-2013

Sheets("Calculation").Select
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Set Sourcewb = ActiveWorkbook

'Copy the sheet to a new workbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook

'Determine the Excel version and file extension/format
With Destwb
    If Val(Application.Version) < 12 Then
        'You use Excel 97-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2013
            FileExtStr = ".xlsx": FileFormatNum = 51
        End If
End With

'Change all cells in the worksheet to values if you want
With Destwb.Sheets(1).UsedRange
Application.CutCopyMode = False
ActiveSheet.Unprotect
        .Cells.Copy
        .Cells.PasteSpecial xlPasteValues
        .Cells(1).Select
    End With
    Application.CutCopyMode = False

'Save the new workbook and close it
TempFilePath = Sheets("Calculation").Range("N5").Value
TempFileName = Range("N4").Value

With Destwb
    .SaveAs TempFilePath & "\" & TempFileName & FileExtStr, FileFormat:=FileFormatNum
    .Close SaveChanges:=False
End With

MsgBox "You can find the new file in " & TempFilePath

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With

End Sub
4

1 に答える 1