2010-12-16 23 views
0

Ich arbeite mit WIN32OLE, um einige Datendateien in verschiedenen Unordnung zu lesen. Ich konnte jetzt Text aus der Mehrzahl der Dateien mit den Methoden Sentences und Shapes lesen, aber für Dateien mit Hyperlinks kann ich nur den Hyperlink-Text lesen, nicht die zugrunde liegende URL.Win32ole, Methode, URL von Hyperlink anstelle von Text zu lesen? (Ruby, aber nicht erforderlich)

Ich habe durch die Methoden/ole_methods von 'Hyperlinks' gegraben und habe viele versucht, aber keiner hat irgendwelche Eigenschaften des Hyperlinks außer dem Text (in einigen Fällen entsprechend) veröffentlicht.

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!"

Die wichtigsten Google-Ergebnisse Deal mit Links zu Excel hinzufügen, die 'Adresse' Tag verwenden, die keine Methode von Hyperlinks ist. Andere verweisen auf "Aktion", was ebenfalls keine Methode zu sein scheint.

Antwort

1

Dies funktioniert für mich:

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

EDIT: Ich habe das zum Arbeiten die Links aus TextBoxen zu greifen.

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

Beide geben die vollständige Adresse unabhängig vom Anzeigetext an.

+0

Ich habe keine Ahnung, wie ich gestern das Adress-Tag missbraucht habe, um diese Ergebnisse nicht zu bekommen. Ich nahm an, dass "Adresse" die richtige Methode wegen HTML-Tags sein könnte, bevor ich nur zu Dingen wechselte, die in Methoden/ole_methods aufgelistet sind, aber es funktionierte nie. Vielen Dank! –

1

Das HyperLinks-Objekt ist eine Sammlung von HyperLink-Objekten.

Jeder enthält eine "Address" -Eigenschaft, die auf die URL des Links verweisen sollte, und eine "textToDisplay" -Eigenschaft.

Ich weiß nichts über Rubin oder die WIN32OLE lib, aber können Sie den Hyperlink Objekte in der Sammlung erhalten, vielleicht so:

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

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

Dies funktioniert auch, und danke für das Hinzufügen der zweiten Methode für TextToDisplay. Wenn Ihre Erfahrung nicht von ruby ​​/ win32ole kommt, darf ich fragen, wo Sie über die Word-Objekte gelernt haben? –