Workbook.LinkSourcesメソッド(Excel)
Workbook.LinkSourcesメソッド
何気なくggっていたら、Workbook
オブジェクトのLinkSources
メソッドというものを見つけた。
MicrosoftのOffice VBA Reference:Workbook.LinkSources Method (Excel) のページによると、
Returns an array of links in the workbook. The names in the array are the names of the linked documents, editions, or DDE or OLE servers. Returns Empty if there are no links.
とのこと。
ブック内のリンクを配列で返してくれるメソッドらしい。
対象のWorkbookオブジェクト内にリンクがなければ、Empty
値が返る模様。
使ってみる
このように、他ブック「test.xlsm」へのリンクを含んだブックを作る。
んで、次のコードで実験。
リスト1 標準モジュール
Public Sub testLinkSourcesMethod() Dim a As Variant a = ActiveWorkbook.LinkSources(xlExcelLinks) '……(1)' If IsEmpty(a) Then Exit Sub '……(2)' Dim i As Long For i = 1 To UBound(a) '……(3)' Debug.Print a(i) Next End Sub
(1)の
a = ActiveWorkbook.LinkSources(xlExcelLinks)
で、Variant
型の変数a
(投げやりな変数名ですまん。)にLinkSources
メソッドの返り値をぶち込む。引数のxlExcelLinks
については、コチラのXlLink Enumeration (Excel)のページをどうぞ。
対象のブックにリンクがなかった場合、LinkSources
メソッドはEmpty
値を返すので、(2)の
If IsEmpty(a) Then Exit Sub
で、配列a
がEmpty
だったら処理を抜けるようにしている。
あとは、(3)からの3行
For i = 1 To UBound(a) '……(3)' Debug.Print a(i) Next
で配列a
の要素を取り出してイミディエイトに表示させる。
ちなみに、For i = 1
としていることからもおわかりのように、実は配列のインデックスがなぜか1
始まりになるので注意。
VBAでVariant
の配列を返す関数・メソッドって、なぜかインデックスが1
始まりになるやつがちょいちょいあるので困る。
実行
イミディエイトには、
このように表示された。
リンク元のフルパスが返された模様。
おわりに
で、何の役に立つのやら。