私はVisioでExcelブックを埋め込み、埋め込みデータに対して読み書き操作を行っています。 Excelデータでペースト・スペシャルを実行すると、選択/コピーされたデータだけでなく、ブック全体が埋め込まれているようです。OLE埋め込みExcelオブジェクトでActiveSheetを取得する方法
Visioページに埋め込まれたExcel Workbookオブジェクトへの参照を取得できましたが、どのシートがアクティブでVisioに表示されているのかわかりません。私は、シートが編集されているときにアクティブなシートが何であるかを知ることしかできないようです。それがページ上にあるとき、WorkbookオブジェクトはActiveSheetに対してNothingを返し、ワークブックにはWindowsがありません。ウィンドウがないのは理にかなっていますが、アクティブなシートがないということはあまり意味がありません。
「アクティブ」シートがExcel OLEオブジェクトに含まれていることを確認する方法はありますか?あるいは、すべてがシート1に入っているという前提の下で、私が書いたコードを書くべきでしょうか?私はおそらく埋め込まれたワークブックをプログラムで追加することになるだろう。だから、各本を1枚に制限するのはそれほど大きなものではないだろうが、私は何かがないことを確かめたい。 。
このコードは、ページ上のExcelのOLEオブジェクトを検索し、ブックのシート1のセルA1とB1を設定します:
Dim CheckShp As Visio.Shape
Dim CheckObj As OLEObject
For Each CheckObj In ActivePage.OLEObjects
If CheckObj.ProgID Like "Excel.Sheet.*" Then
Dim Sheet As Excel.Worksheet
Dim Bk As Excel.Workbook
Set Bk = CheckObj.Object
Set Sheet = Bk.Worksheets(1)
Sheet.Cells(1, 1) = "HELLO"
Sheet.Cells(1, 2) = "WORLD"
End If
Next CheckObj
あなたはとにかく 'Activating'または' Editing'埋め込まれたOLEオブジェクトなしのワークブックオブジェクトへの参照を取得することができますか? –
これまでどんなコードがありますか? – BruceWayne
私は簡単にブックへの参照を取得できますが、OLEオブジェクトを編集していないときに表示されるワークシートへの参照を取得したいとします。 OLEオブジェクトが編集されていない限り、ActiveSheetはワークブックオブジェクトのNothingであることがわかります。 –