質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

5131閲覧

C# Excelマクロの返り値を複数受け取りたい

hamaa

総合スコア45

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/11/22 11:08

編集2016/11/24 01:25

こんにちは
素人です。
C# Excelマクロの返り値を複数受け取りたい

VBA

Public Function test0(ByRef test1 As Interior, ByRef test2 As String) As Boolean test0 = True test1 = 1 test2 = "あああ" End Function

C#

try { Microsoft.Office.Interop.Excel.Application myEX = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook myBook = myEX.Workbooks.Open(strMacroPath); int 引数1 = 0; string 引数2 = null; bool 引数0 = myEX.Run("test0",引数1,引数2); catch (System.Exception ex) { }

こんな感じではダメなのですか?
どうしてもエラーになってます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/22 13:52

引数名は漢字ですか?、引数0とか引数1とか?
hamaa

2016/11/22 14:14

か、漢字でした。感じではダメなのかな。。
hamaa

2016/11/22 14:30

test1 As Interior ← ミスってました。
hamaa

2016/11/22 14:35

ByRef test1 As Integer 直し、引数も英語にでやりました。エラーはなくなったものの  戻り値は初期値のままでした。
MasahikoHirata

2016/11/22 14:47

'myEX.Run(MacroName.Trim()'で、これ’myEX.Run(MacroName.test0では?
MasahikoHirata

2016/11/22 15:19

それとExcelのマクロ、シートに記載ではないですか?標準モジュール内に記載されないと動かないと思います。
hamaa

2016/11/24 01:28

少しだけ修正しました。 引数0は戻り値を受け取れていますが引数1や引数2は渡す前のものになってしまいます。
hamaa

2016/11/24 01:29

C# 側に 引数2 や引数3に lef を付けてもエラーになります。 
guest

回答2

0

ベストアンサー

Variantの配列で返せばC#ではobjectの配列に変換されるので、それをキャストしてやればいいですよ。

投稿2016/11/23 04:21

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hamaa

2017/01/11 08:37

綺麗に解決したかったですが toki_tdさんのやり方で解決しました。
guest

0

まず、私の環境にはOfficeが入っていないため全く確認できない状態で回答としては質の悪いものになります事をご了承ください。

  • リスト関数の戻り値を複数戻したい場合、Valiant型にしてみてはどうでしょうか?

http://www.clayhouse.jp/array/array03_e.htm

  • リストまた、MasahikoHirataさんのおっしゃっている様に標準モジュールにSubステートメント(myEX.Runの場合)で記述しないといけないかもしれません。

http://blog.livedoor.jp/akf0/archives/51177750.html

投稿2016/11/22 20:43

Hey_CH

総合スコア437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hamaa

2017/01/11 08:37

いろいろご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問