tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010から Excel のマクロを作成し実行する(VB.NET) ( No.38 )  [親スレッドへ]
日時: 2012/07/13 16:07
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel2010,マクロ,マクロの記入,マクロの削除,マクロの実行   *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.07.13
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:VB2010から Excel のマクロを作成し実行する(VB.NET)
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0
まずは、>>32 VB2010 から Excel のセルに関する操作、1行 Tips 集その1及び2をご覧になってから
こちらをご覧下さい。
尚、この Tips を使用される場合は、Excel の Com オブジェクトの解放に関する処理を理解
されてから使用するようにして下さい。
'-------------------------------------------------------------------------------

Private Sub Button34_Click(sender As System.Object, e As System.EventArgs) Handles Button34.Click
   Call ExcelOpen("", "")     '新規ファイルをオープンして、Excel を起動
   '==================== VB2010からマクロを作成し実行する =======================
   'Imports Microsoft.Vbe.Interop   'を記入の事

   'ファイル→オプション→セキュリティセンター→セキュリティセンターの設定→マクロの設定→
   'VBA プロジェクト オブジェクト モデルへのアクセスを信頼する にチェックを入れておく事。

   Dim xlVBE As Microsoft.Vbe.Interop.VBE
   Dim xlProject As Microsoft.Vbe.Interop.VBProject
   Dim xlComponents As Microsoft.Vbe.Interop.VBComponents = Nothing
   Dim xlComponent As Microsoft.Vbe.Interop.VBComponent = Nothing
   Dim xlCodeModule As Microsoft.Vbe.Interop.CodeModule

   xlVBE = xlApp.VBE
   xlProject = CType(xlBook.VBProject, Microsoft.Vbe.Interop.VBProject)
   xlComponents = xlProject.VBComponents
   xlComponent = xlComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule)
   xlCodeModule = xlComponent.CodeModule

   '標準モジュールに記入するマクロのコード
   Dim MacroCord As String = ""
   'CVErr 関数は、VB2010 には無く、VB2010 からは、使用できないようなので、マクロで実行
   MacroCord = _
      "Public Sub MacroTest()" & vbCrLf & _
      "   Dim myArray As Variant, i As Long" & vbCrLf & _
      "   myArray = Array(xlErrDiv0, xlErrNA, xlErrName, xlErrNull, xlErrNum,  _" & vbCrLf & _
      "                                                  xlErrRef, xlErrValue)" & vbCrLf & _
      "   For i = 1 To 7" & vbCrLf & _
      "      Worksheets(""Sheet1"").Cells(i, 1).Value = CVErr(myArray(i - 1))" & vbCrLf & _
      "   Next i" & vbCrLf & _
      "End Sub"
   'マクロのコードを標準モジュールに書き込み
   '変数の宣言を強制するにチェックが入っているとエラーとなるのでコメントに
   'oCode.InsertLines(1, "Option Explicit")  
   xlCodeModule.InsertLines(2, MacroCord)

   '作成したマクロを実行する
   xlApp.Run("MacroTest")
   MessageBox.Show(Me, "VB2010 から MacroTest マクロを作成し、実行しました。")

   '記入したマクロを削除する
   xlComponents.Remove(xlComponent)
   MessageBox.Show(Me, "VB2010 から作成した MacroTest マクロを削除しました。")

   MRComObject(xlCodeModule)
   MRComObject(xlComponent)
   MRComObject(xlComponents)
   MRComObject(xlProject)
   MRComObject(xlVBE)

   '=============================================================================
   'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行
   Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), False)  'False の場合保存しないで終了
   'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし)
   Call ProcessCheck()
End Sub



 [スレッド一覧へ] [親スレッドへ]