- 日時: 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
|