2010-12-16 2 views
0

私はさまざまな状態の混乱状態でいくつかのデータファイルを読むためにWIN32OLEと協力しています。私は今、Sentences and Shapesメソッドを使ってファイルの大部分からテキストを読むことができましたが、ハイパーリンクを持つファイルでは、基本URLではなくハイパーリンクテキストのみを読むことができます。Win32ole、テキストの代わりにハイパーリンクからURLを読み取る方法? (Rubyですが、必須ではありません)

私は 'hyperlinks'のメソッド/ ole_methodsを掘り下げて試してきましたが、多くは試しましたが、テキスト以外のハイパーリンクのプロパティをリリースしていませんでした。

irb(main):084:0> doc.Sentences(4).hyperlinks.inspect
=> "#<WIN32OLE:0x2c233d0>"

irb(main):085:0> doc.Sentences(4).hyperlinks.text
=> "Hi I'm a link!"

のハイパーリンクの方法ではありません 'アドレス' タグを使用して、Excelにリンクを追加すると最も関連性の高いGoogleの検索結果の契約。他の人は「行動」を参照していますが、これも方法ではないようです。

答えて

1

これが私の作品:

doc.Hyperlinks.each do |x| 
    puts x.Address 
end 

編集:私はこれもテキストボックスからのリンクをつかむために動作するようにした。

doc.Shapes.each do |x| 
    x.TextFrame.TextRange.Hyperlinks.each do |i| 
    puts i.Address 
    end 
end 

これらの両方は、表示テキストに関係なく、完全なアドレスを指定します。

+0

昨日Addressタグをどうやって悪用して、これらの結果を得られなかったのか分かりません。私は、メソッド/ ole_methodsにリストされているものだけに切り替える前に、HTMLタグのために 'address'が正しいメソッドであると思っていましたが、それはうまく機能しませんでした。ありがとう! –

1

HyperLinksオブジェクトは、HyperLinkオブジェクトのコレクションです。

それぞれには、リンクのURLを指す "Address"プロパティと "textToDisplay"プロパティが含まれています。

私はルビーやwin32ole libにについて何も知りませんが、あなたは多分このように、コレクション内のハイパーリンクオブジェクトを取得することができます

irb(main):084:0> doc.Sentences(4).hyperlinks(1).TextToDisplay 

irb(main):084:0> doc.Sentences(4).hyperlinks(1).Address 
+0

これも同様に機能し、TextToDisplayの2番目のメソッドを追加していただきありがとうございます。あなたの経験がruby/win32oleから来ていない場合は、Wordオブジェクトについてどこで学んだのか聞いてもらえますか? –

関連する問題