tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB2010からExcel上に図形(オートシェイプ等)の描画及び削除(VB.NET) ( No.11 )  [親スレッドへ]
日時: 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



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