- 日時: 2012/06/06 19:03
- 名前: VBレスキュー(花ちゃん)
- ***********************************************************************************
* カテゴリー:[エクセル][][] * * キーワード:Excel VBA,Excel2010,雲形吹き出し,オートシェイプ,図形の描画,削除 * *********************************************************************************** '=================================================================================================== '投 稿 日:2012.05.05 '投 稿 者:VBレスキュー(花ちゃん) 'タイトル:VB2010 から Excel の指定位置に図形(オートシェイプ等)の描画及び削除 '========1=========2=========3=========4=========5=========6=========7=========8=========9=========0
Private Sub Button9_Click(sender As System.Object, e As System.EventArgs) Handles Button9.Click Call ExcelOpen("", "") '新規ファイルをオープンして、Excel を起動 '=================== 図形(オートシェイプ等)の描画及び削除 ====================
'-------------------- 下記のVB6.0用コードを移植 --------------------------- ' http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=128&no=17 '--------------------------------------------------------------------------
Dim xlShapes As Excel.Shapes Dim xlShape As Excel.Shape xlShapes = xlSheet.Shapes '雲形吹き出しを描画 xlShape = xlShapes.AddShape(MsoAutoShapeType.msoShapeCloudCallout, 100, 30, 100, 40) MRComObject(xlShape) MRComObject(xlShapes) '1秒間表示しておく System.Threading.Thread.Sleep(1000)
'ブロック矢印を描画 xlShapes = xlSheet.Shapes xlShape = xlShapes.AddShape(MsoAutoShapeType.msoShapeRightArrow, 100, 100, 50, 50) '1秒間表示しておく System.Threading.Thread.Sleep(1000)
'オートシェイプ(ブロック矢印)の背景色と前景色を設定する Dim xlFillFormat As Excel.FillFormat xlFillFormat = xlShape.Fill With xlFillFormat .BackColor.RGB = RGB(255, 0, 255) .ForeColor.RGB = RGB(255, 215, 0) End With MRComObject(xlFillFormat) MRComObject(xlShape) MRComObject(xlShapes) '1秒間表示しておく System.Threading.Thread.Sleep(1000)
'終端が三角形の矢印を描画 xlShapes = xlSheet.Shapes xlShape = xlShapes.AddLine(100, 200, 250, 200) Dim xlLineFormat As Excel.LineFormat xlLineFormat = xlShape.Line 'ここまで分解して取得しないと後で、ハマる事になるので。 With xlLineFormat .EndArrowheadLength = MsoArrowheadLength.msoArrowheadLong .EndArrowheadStyle = MsoArrowheadStyle.msoArrowheadTriangle .EndArrowheadWidth = MsoArrowheadWidth.msoArrowheadWide .Weight = 5.0# End With MRComObject(xlLineFormat) MRComObject(xlShape) MRComObject(xlShapes) '1秒間表示しておく System.Threading.Thread.Sleep(1000)
'図形を個別に削除する場合 xlShapes = xlSheet.Shapes xlShape = xlShapes.Item(1) xlShape.Delete() MRComObject(xlShape) MRComObject(xlShapes) '1秒間表示しておく System.Threading.Thread.Sleep(1000)
'全てを削除する場合(Selection.Delete が使用できないので) xlShapes = xlSheet.Shapes For Each xlShape In xlShapes xlShape.Delete() MRComObject(xlShape) Next MRComObject(xlShapes)
'============================================================================= 'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行 Call ExcelClose(IO.Path.GetFullPath(".\Test.xlsx"), False) 'False の場合保存しないで終了 'Excel.EXE がタスクマネージャに残っていないか調査(実使用時は必要なし) Call ProcessCheck() End Sub
|