- ベストアンサー
VBAのEvaluate()をVBで記述するには
ExcelVBAで書かれているプログラムをVB(VisualBasic)に書き直していますが、 VBAのコードの中で、別ファイルから任意の数式(例えば「=3600/60+5000」など)を読み込んで、Evaluate()という関数でこの演算結果を取得している部分があるのですが、VBAのEvaluate()の部分をVBで記述することは可能でしょうか。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.6です。 Visual Studio 2010 ExpressのVisual BasicでExcel2010を使う方法がうまくいかない http://social.msdn.microsoft.com/Forums/ja/vbexpressja/thread/bd37038e-8877-45b4-9c87-09179bbc1ad4 こちらの方法も試してみてはいかがでしょうか? ⇒VB2010の環境がないので検証できませんが。
その他の回答 (6)
- n-jun
- ベストアンサー率33% (959/2873)
No.4 です。 >VBのコードのファイル名の拡張子が.NETになっているのですが そのサイトでは”ファイル名”と言う表記はないと思いますけど・・・? もし”VB.NET”のことを言っているのであれば、 これは”C#”と区別するための表記でしかありません。 >nicotinismさんのコメントにある 他の方の回答内容について問われてもちょっと困りますけど。。。 記載している手順をこちらでやってみても 青色波線は表示されません。 ただこれも”VB2008でExcel2002”という環境ででしか 検証していませんし・・・ ⇒あとOSはXPを使用していますが、 Vistaや7とかだと管理者権限などが影響するのかな? 所持していないので憶測にしかなりませんが。
お礼
No.6で解決しました。いろいろありがとうございました。
補足
私の環境はVB2010、Excel2003、OSはXPです。 NETの件ですが、プロジェクトを選択する画面でWebの方を選択するとNETというのがありましたので、例のサイトのVB.NETというのを見て、プロジェクトの選択(Windowsのコンソールアプリケーションなど)の違いで参照設定が反映されなかったりしているのかなと思ったのですが手順に問題はないということですね。 ありがとうございました。
- nicotinism
- ベストアンサー率70% (1019/1452)
vb2008 EVAL でGoogle と http://dobon.net/vb/dotnet/programing/eval.html http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1433762154 などなど。
お礼
ExcelVBAで書かれているプログラムをVB(VisualBasic)に書き直していますのでExcelVBAのEvaluate()関数を使いたいため、Microsoft Excel 11.0 Object Libraryを参照設定する方法で対処したかったのですがNo.6で解決しました。ありがとうごていました。
- n-jun
- ベストアンサー率33% (959/2873)
No.3です。 >上記で3行が追加された後に何か設定が必要でしょうか? 私はその後で設定などはしていませんよ。 いつもこれで出来ているので ちょっと不明ですね。
補足
原因が分からないのでいろいろ調べていましたが 基本的なことが理解できていないのかもしれませんが nicotinismさんのコメントにある 「http://dobon.net/vb/dotnet/programing/eval.html」の中のVBのコードを見ていて 気になったのですが、VBのコードのファイル名の拡張子が.NETになっているのですが 以下の手順で作成すると拡張子が.VBになっていますがこれは特に問題ないでしょうか。 -------------------------------------------------------------------- 1)Microsoft Visual Studio 2010起動 2)スタートページの画面で新しいプロジェクトをクリックします。 (ファイル/新規作成/プロジェクトでも同じ) 3)新しいプロジェクトの画面の左側でVisualBasicの中のWindowsを選択して 中央でコンソールアプリケーションを選択して 下段で名前と場所を指定してOKボタンをクリックします。 4)Module1.vbの画面が表示されてModule1のシートに Module Module1 Sub Main() End Sub End Module が既に入力されています。 5)プロジェクト/ConsoleApplication1のプロパティでプロパティ画面の 参照の追加の画面のCOMタブで前回ご説明したように参照設定をしました。 6)Module1.vbタブをクリックしてコード画面に戻り Module Module1 Sub Main() Dim xlApp As New Excel.Application MsgBox(xlApp.Evaluate("3600/60+5000")) End Sub End Module と追加入力します。 この時点でExcel.Applicationの下に青色波線が表示されています。 -------------------------------------------------------------------- よろしくお願いします。
- n-jun
- ベストアンサー率33% (959/2873)
No.2です。 >Microsoft Excel 5.0オブジェクトライブラリ うちはVB2008でExcel2002ですから 参照設定は 「Microsoft Excel 10.0 Object Library」 になりますね。 ⇒上記のライブラリではないですよ。 Excelが2003なら11.0とか 2007なら12.0とかになるはずです。
補足
同小画面の「COMタブ」の「コンポーネント名」の欄に「Microsoft Excel 11.0 Object Library」というものがありました。同様に追加すると先ほどの「参照」のボックスの中に 「Microsoft Excel 11.0 Object Library」 「Microsoft Office 11.0 Object Library」 「Microsoft Visual Basic for Application Extensibility 5.3」 という3行が追加されました。 この状態のままコード画面に切り替えて、コードを入力しても「Excel.Application」で波線が表示されています。Newの後の候補リストにもExcelが表示されていないのですが、上記で3行が追加された後に何か設定が必要でしょうか? よろしくお願いします。
- n-jun
- ベストアンサー率33% (959/2873)
極端な話。 Excelを参照設定して Dim xlApp As New Excel.Application MsgBox(xlApp.Evaluate("3600/60+5000")) でも計算結果は出せましたよ。
補足
「Excelを参照設定して」の設定の仕方がよく分からないのですが Microsoft Visual Studio 2010で画面の右端にある「ソリューションエクスプローラー」の中の「My Project」をダブルクリックすると「アプリケーション」とか「コンパイル」などのタブが左端に並んでいる画面が表示されます。この中の参照タブを選択すると「参照」とか「インポートされた名前空間」のボックスと「追加ボタン」などがある画面が表示されます。「追加ボタン」をクリックすると「参照の追加」という小画面が表示されます。この小画面の中にある「COMタブ」をクリックすると「コンポーネント名」の欄に「Microsoft Excel 5.0オブジェクトライブラリ」というものがありましたので選択してOKボタンをクリックしてこの小画面を閉じると、先ほどの画面の「参照」のボックスの中に「Microsoft Excel 5.0 Object Library」という1行が追加されたのですが、この状態で教えていただいたコードを入力しても「Excel.Application」で波線が表示されています。 よろしくお願いします。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
やったことないけど、(検証もしていないけど)、 参照設定で、エクセルのオブジェクトライブラリにチェックを入れればそのまま使えるんじゃないかな。 実行環境によってはファイルの置き場所に配慮が必要かもしれないけど。
お礼
一番初めに imports Microsoft.Office.Interop を入れたところ Excel.Application の波線でのエラーの表示が消えて うまくいきました。 どうもありがとうございました。