Spire.XLS for Python

ニュース&リリース

2026-08-25

Spire.XLS for Python 16.8.2 はマクロ(VBA)機能をサポート

Spire.XLS for Python 16.8.2 が正式にリリースされました。このバージョンでは、VBA プロジェクトの追加、取得、削除を含むマクロ(VBA)機能、および Excel から PDF への変換時の PDF 暗号化設定がサポートされています。また、複数の CopyRangeOptions 列挙型値を組み合わせて使用する際にエラーが発生する不具合も成功裡に修正されました。詳細は以下の通りです。

変更内容一覧
カテゴリー ID 説明
新機能 SPIREXLS-6151 VBA プロジェクトの追加、取得、削除を含むマクロ(VBA)機能のサポートを追加しました。
//1.Add
workbook = Workbook()

# Add VBA project to document
vbaProject = workbook.VbaProject
vbaProject.Name = "SampleVBAMacro"
text = "Code page before modification: " + str(vbaProject.CodePage) + "\n"
vbaProject.CodePage = 936  # Set encoding to support Chinese characters

text += "Code page after modification: " + str(vbaProject.CodePage) + "\n"
File.WriteAllText(outputFile_TXT, text)

vbaModule = vbaProject.Modules.Add("SampleModule", VbaModuleType.Module)
# Does not support Chinese characters
vbaModule.SourceCode = """
    Sub ExampleMacro()
        ' Declare variables
        Dim ws As Worksheet
        Dim i As Integer
        ' Set reference to active worksheet
        Set ws = ActiveSheet
        ' Clear worksheet content (optional)
        ws.Cells.Clear
        ' Fill sample data
        With ws
            ' Write header row
            .Range("A1: C1").Value = Array("Serial No.", "Project Name", "Amount")
            ' Loop to fill 10 rows of data
            For i = 1 To 10
                .Cells(i + 1, 1).Value = i  ' Serial number column
                .Cells(i + 1, 2).Value = "Project " & i  ' Project name column
                .Cells(i + 1, 3).Value = i * 100  ' Amount column (sample calculation)
            Next i
            ' Auto-fit column widths
            .Columns("A:C").AutoFit
            ' Format header row
            With.Range("A1:C1")
                .Font.Bold = True
                .Interior.Color = RGB(200, 220, 255)  ' Light blue background
            End With
            ' Format amount column
            .Range("C2:C11").NumberFormat = "$#,##0.00"
        End With
        ' Show completion message
        MsgBox "Data population complete!", vbInformation, "Operation Prompt"
    End Sub"""

workbook.SaveToFile(outputFile_Xls, FileFormat.Version97to2003)
workbook.SaveToFile(outputFile_Xlsb, FileFormat.Xlsb2007)
workbook.SaveToFile(outputFile_Xlsm, FileFormat.Xlsm)
workbook.SaveToFile(outputFile_Xltm, FileFormat.XLTM)
workbook.Dispose()

//2.Obtain and modify
workbook = Workbook()
workbook.LoadFromFile(inputFile)  

worksheet = workbook.Worksheets[0]
vbaProject = workbook.VbaProject

// Modify worksheet module
mod = vbaProject.Modules.GetWorksheetModule(worksheet)
mod.Name = "IVbaModule"
mod.SourceCode = "Dim lRow As Long"
mod.Type = VbaModuleType.Module

// Save file
workbook.SaveToFile(outputFile)
workbook.Dispose()

//3. Delete
workbook1 = Workbook()
workbook1.LoadFromFile(inputFile_Module)
vbaProject1 = workbook1.VbaProject
vbaProject1.Modules.Remove("SampleModule")
workbook1.SaveToFile(outputFile_1)
workbook1.Dispose()
新機能 SPIREXLS-6169 Excel から PDF への変換時に PDF 暗号化を設定するサポートを追加しました。
            workbook = Workbook()
            #Load a excel document
            workbook.LoadFromFile(inputFile)   
            #Set permission password and permissions to encrypt converted pdf
            workbook.ConverterSetting.PdfSecurity.Encrypt("123", PdfPermissionsFlags.Print)
            #Convert excel to pdf
            workbook.SaveToFile(outputFile, FileFormat.PDF)
            workbook.Dispose()
不具合修正 SPIREXLS-6199 複数の CopyRangeOptions 列挙型値を組み合わせて使用する際にエラーが発生する不具合を修正しました。