掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
引数が構造体のVBAのマクロをVB.NETから呼び出すには? (ID:147907)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
引数が構造体のVBAのマクロをVB.NETから呼び出すにはどのように記述すればよいのでしょうか。 例えば、下記のコードでは、ビルドは問題ないのですが、実行時に、oExcel.Run("'" & oBook.Name & "'!TEST", t_o)のt_oの箇所で、「ArgumentExceptionはハンドルされませんでした。値が有効な範囲にありません。」というエラーになります。前回、「引数が構造体のVBのDLLの関数をVBAから呼び出す方法」について教えていただきましたが、ユーザー定義型でString型をBSTR型にマーシャリングしてみましたがうまくいきませんでした。どのように記述すれば、VB.NETからVBAのマクロに構造体の引数を渡すことができるのでしょうか。 ---VB.NET--- Imports Microsoft.Office.Interop Imports System.Runtime.InteropServices Public Structure T <MarshalAs(UnmanagedType.BStr)> Public x As String Public y As Integer End Structure Module Module1 Sub Main() Dim oExcel As New Excel.Application Dim oBook As Excel.Workbook Dim oBooks As Excel.Workbooks = oExcel.Workbooks Dim strPath As String Dim t_o As T t_o.x = "ABC" t_o.y = 123 strPath = "C:\temp\test\Book1.xls" oExcel.Visible = False oBook = oBooks.Open(strPath) oExcel.Run("'" & oBook.Name & "'!TEST", t_o) oBook.Close(False) System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook) oBook = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks) oBooks = Nothing oExcel.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel) oExcel = Nothing End Sub End Module ---VBA側--- Option Explicit Public Type T x As String y As Integer End Type Sub test(ByRef t_o As T) MsgBox t_o.x MsgBox t_o.y End Sub ------------- よろしくお願いします。 ( WindowsXP , Excel2003_VBA , VisualStudio2010 )
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.