オノデラの研究日記 in わんくま

思いついたネタを気ままに書いていくブログ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  209  : 記事  5  : コメント  5966  : トラックバック  40

ニュース

プロフィール

  • ●おのでら
    宮城県在住
    主に業務向けソフトを製作

Twitter

ニュース

主なリンク

XNA 関連リンク

アイテム

ゲーマーカード

その他

記事カテゴリ

書庫

日記カテゴリ

 .NET で Excel を扱うことになったのですが、わたし自身一度もプログラムから Excel を扱ったことがなかったので、じゃんぬさんのホームページを参考にして少し触っていました(C#)。

 既存の Excel ファイルを開いて操作する必要があったので、「既存の Excel ブックを開く」のページを見てみたら、あら不思議。C# のサンプルがないじゃないですか!(^^;)

 とりあえず VB.NET のコードを C# に書き換え、いざビルドしてみるとなぜかエラーが。どうやら Excel.Workbooks.Open メソッドに渡す引数が足りないとのこと。じゃんぬさんが引数の数を間違えるはずがないと思い(^^)、VB.NET のプロジェクトで同じコードを書いてみるとなぜかこっちはビルドが通る。なぜだ!?

 ヘルプで調べてみたら、Excel.Workbooks.Open メソッドの第二引数以降に Optional キーワードが付けられていて初期値が与えられているようでした(多分元が VB か VB.NET で作られているのではないでしょうか?)。しかし、C# には Optional キーワードのようなメソッドの引数に初期値を与えるような概念自体がないので全ての引数にパラメータを指定しなければいけません。

 とは言うものの、そもそもどのような値が初期値なのかがわからないので困りものです。全部 null にしたら案の定例外が発生してしまいました。

 で、ネットでいろいろ調べてみたら下のリンク先ページを発見し意外な事実が判明!

 なんと C# では引数に「Type.Missing」を渡すことにより、Optional 指定された初期値が使えるのです!こんな使い方があるとは今まで知りませんでした。もちろんこれを指定したら C# でもきちんと動きました。

[結論]
 クラスライブラリを作るときに Optional を使うと VB.NET 以外の言語での実装が面倒になります。オーバーライドオーバーロードしましょう。

[余談]
# 実はこの記事を書いた後にふじさきさんがまったく同じネタを書いていたことに気づいたorz でもせっかく書いたのでアップ(^^;)

# 今度から調べ物をするときはわんくま内から検索しよう(^^)

投稿日時 : 2007年10月2日 17:58

コメント

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 18:07 とりこびと
わたしはVisual Basic であっても Optional はなんかしっくりきません・・・。

>クラスライブラリを作るときに Optional を使うと VB.NET 以外の言語での実装が面倒になります。オーバーライドしましょう。

オーバーロードではないでしょうか?

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 20:09 じゃんぬねっと
Missing.Value は、このあたりには登場するのだけども...
http://jeanne.wankuma.com/tips/programing/releasecom.html

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 20:20 オノデラ
> オーバーロードではないでしょうか?
ですね(^^;)

> Missing.Value
おっ、こんなのもあったんですか。

> このあたりには登場するのだけども...
ないですね(^^;)

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 21:15 さかもと
@ITで質問をする

ほかのサイトでマルチポストする

わんくま掲示板でもポストする

怒られる

拗ねる

わんくま内から調べる。

正しい流れです。

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 21:16 さかもと
@ITで質問をする

ほかのサイトでマルチポストする

わんくま掲示板でもポストする

怒られる

拗ねる

「少しは調べてから質問しろよ!な!」って言われる。

わんくま内から調べる。

正しい流れです。

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 21:18 さかもと
2番目が正しい流れでした。

# re: Excel.Workbooks.Open メソッドの引数の数が VB.NET と C# で違う? 2007/10/02 21:46 オノデラ
起源は@ITなんだ(^^;)

> わんくま内から調べる。

一番最後なのに「から」なんだw

# Optionalをつける時 2007/10/03 0:24 Mr.Tの場所
Optionalをつける時

# Optional が一晩でやってくれました。 2007/10/03 9:57 とりこびと ぶろぐ。
Optional が一晩でやってくれました。

# Optional もいいんですが、これだけはやって! 2007/10/04 10:12 Shizuku Blog ~ .NET Study版 ~
Optional もいいんですが、これだけはやって!

Wow, great blog article.Thanks Again. Keep writing.

# vlAGZxcFiXfqTdGorx 2021/07/03 3:31 https://amzn.to/365xyVY
It as great that you are getting ideas from this piece of writing as well as from our argument made at this time.

# hnwMgUgaxuEgdBxoqE 2021/07/03 5:02 https://www.blogger.com/profile/060647091882378654
Wow, awesome blog format! How long have you been running a blog for? you make blogging glance easy. The entire glance of your website is magnificent, let alone the content material!

# re: Excel.Workbooks.Open ?????????? VB.NET ? C# ???? 2021/08/07 20:58 hydroxychloroquine dangers
chloroquinine https://chloroquineorigin.com/# hydrochloroquine

# hXpoaZNyNQnFWdKNS 2022/04/19 11:51 johnanz
http://imrdsoacha.gov.co/silvitra-120mg-qrms

Post Feedback

タイトル
名前
Url:
コメント