VB2010 エクセル

タグの編集
投稿者 初心者  (社会人) 投稿日時 2016/2/17 14:56:11
VB2010 WIN7

Dragdo_DragDropでエクセルシートを読み込んだ際に
エクセルに貼っている画像(.gif)を消去したいのですが
どのようにしたらよいのでしょうか?

現在の読み込みです
 Private Sub DragDrop_TextChanged(sender As System.Object, e As System.EventArgs) Handles Dragdo.TextChanged

 'Excelアプリケーションオブジェクトを生成  'Excelアプリケーションオブジェクトを生成
            
     xlApp = CreateObject("Excel.Application")
               
            'ワークシートの操作
            shtHoge = bookHoge.worksheets("Sheet1")

 '見積番号
            MitumoribangouBox.Text = shtHoge.range("AC3").value
            MitumoriLB.Text = shtHoge.range("AC3").value

上記の感じで続きますが。。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/2/17 15:51:47
> Dragdo_DragDropでエクセルシートを読み込んだ際に
> Handles Dragdo.TextChanged

ドラッグアンドドロップ処理で画像を消したいわけではなく、
TextChanged イベントのたびに処理したいのでしょうか。


>  'Excelアプリケーションオブジェクトを生成  'Excelアプリケーションオブジェクトを生成
xlApp と bookHoge の間に関連性が無いように見えます。
xlApp の Excel は、何の目的で CreateObject されたのでしょうか。


> エクセルに貼っている画像(.gif)を消去したいのですが
複数貼ってある場合などの考慮は必要ですが、処理イメージとしては

oShapes = oSheet.Shapes
oShape = oShapes(1)    '消したい画像の1番目が場合 
oShape.Delete()
Marshal.ReleaseComObject(oShape)
Marshal.ReleaseComObject(oShapes)


という感じでしょうか。
投稿者 初心者  (社会人) 投稿日時 2016/2/17 17:35:04
早々の回答ありがとうございます。
現在、下記のように画像を貼り付けています。
出来上がったエクセルファイルをまた読み込ませ登録すると
画像が重なる為っです。
画像は2箇所ある場合もあります。

その為に、画像を消したいのです。

 Dim oShapes As Excel.Shapes
 Dim oShape As Excel.Shape

 oShapes = shtHoge.Shapes
    
               
oShape = oShapes.AddPicture(getnameink(), False, True, getsyainyokoc(), _

      getsyaintatec(), getsyainsaizuyokoc(), getsyainsaizutatec()) '個人名の印鑑の位置


投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/2/17 18:04:27
最初の貼り付けの際に、Shape に Name をセットしておきましょう。
そうすればそれを識別子として、次回削除する際の手がかりにできます。

そうした目印が無い場合、貼り付けてある画像を列挙した上で、
どれが削除対象なのか見分ける必要がありますが、
削除対象かどうかを確認するための情報は、何かあるのでしょうか?