C#からExcelのマクロを呼び出す


  dotnet new console
  
出来上がったProgram.csに以下を書く

Excel.Application excelApp = new Excel.Application();

string excelFile = @"C:\pass\to\dir\mail.xlsm";

string mdlNM = "Module1";

string sbrNM = "sample";

Excel.Workbook workbook = excelApp.Workbooks.Open(excelFile);

excelApp.Run(mdlNM + "." + sbrNM);

excelApp.Quit();
  
Excelのマクロは以下の通り
Module1にsample()というサブプロシージャを定義する
ちなみに以下はメールを送信するコード

Sub sample()
    Dim objCDO As New CDO.Message
    With objCDO
        With .Configuration.Fields '設定項目
            .Item(cdoSMTPServer) = "example.com" 'SMTPサーバ名
            .Item(cdoSendUsingMethod) = cdoSendUsingPort '外部SMTP指定
            .Item(cdoSMTPServerPort) = 465 'ポート№
            .Item(cdoSMTPConnectionTimeout) = 60 'タイムアウト
            .Item(cdoSMTPAuthenticate) = cdoBasic 'SMTP認証
            .Item(cdoSMTPUseSSL) = True 'SSL
            .Item(cdoSendUserName) = "user@example.com" '送信ユーザー
            .Item(cdoSendPassword) = "passwd" '送信パスワード
            .Item(cdoLanguageCode) = CdoCharset.cdoShift_JIS '文字セット指定
            .Update '設定を更新
        End With
        With .Fields
            .Item("urn:schemas:mailheader:X-Priority") = 1
            .Item("urn:schemas:mailheader:X-MsMail-Priority") = "High"
            .Update '設定を更新
        End With
        .MDNRequested = True '開封確認
        .MimeFormatted = True 'MIMEを使って書式設定
        .From = "user@example.com"
        .To = "to-user@to.example.com"
        .Subject = "テスト"
        .TextBody = "本文"
        .Send '送信
    End With
    Set objCDO = Nothing
End Sub