LabVIEWForum.de
Referenz auf aktuell geöffnetes Excel-Sheet - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: ActiveX & .Net (/Forum-ActiveX-Net)
+---- Thema: Referenz auf aktuell geöffnetes Excel-Sheet (/Thread-Referenz-auf-aktuell-geoeffnetes-Excel-Sheet)

Seiten: 1 2 3


Referenz auf aktuell geöffnetes Excel-Sheet - DG1BGS - 24.06.2009 15:47

Hallo liebe LV-Forum Gemeinde,
ich ärgere mich heute schon den ganzen Tag mit (Excel)ActiveX-Referenzen herum. Eigentlich dachte ich die Thematik soweit verstranden zu haben, aber dem ist nicht so. Vielleicht könnt ihr etwas Licht ins dunkle bringen.
In meinen Programmen verwende ich selbst programmierte VI's, die Excel zunächst öffnen (sichtbar oder nicht), dann eine bestimmte Datei öffnen. Mit einem weiteren VI kann ich nun etwas in Zelle xy schreiben (egal welches Format, da mein VI Polymorph ist). Ein weiteres VI liest aus Zelle xy. Die Spalte wird meinem VI als String übergeben, die Zeile als Int. Das ganze wird dann als String zusammengeführt und in die Eigenschaft Range geschrieben. Somit kann ich entsprechende Zelle selektieren, bevor ich den Wert reinschreibe/auslese. Also alles kein Problem.

Nu lautet meine Aufgabenstellung anders: Excel ist bereits gestartet und das entsprechende Sheet geöffnet. Nun möchte ich ermitteln, welche Zelle gerade aktiv ist. Dann möchte ich in diese Zelle etwas reinschreiben.
Dann noch folgendes: Angenommen in Zelle xy steht jetzt ein Text: Diesem möchte ich via LV einen Hyperlink zuordnen. Diese geht (meines erachtens) mit Eigenschaft "Hyperlinks" der Excel.Range-Klasse. Was wird dort am Eingang "Anchor" erwartet?

Hoffentlich könnt ihr mir weiter helfen. LG Stephan


Referenz auf aktuell geöffnetes Excel-Sheet - DG1BGS - 06.07.2009 16:33

Hallo zusammen,
da scheinbar keiner eine Antwort auf die oben gestellten Fragen hat, ich aber immer noch aktuell vor diesem Problem stehe, nehme ich mir die Worte meines ex Professors zu Herzen: "Zerlegung des Problems in kleine Teilprobleme" ->

' schrieb:... Nun möchte ich ermitteln, welche Zelle gerade aktiv ist.

Angenommen die Referenz auf ein Excel-File, das geöffnet wird um ZEilenweise Einträge darin vorzunhemen (z.B: zur Erstellung eines Laufzettels) wäre bekannt. Ich suche nun die nächst freie Zeile. Würde in eine normale Textdatei geschrieben, müsste ich nur an das Dateiende gehen, einen Zeilenumbruch einfügen und eine neue Zeile schreiben, bevor ich die Datei dann wieder dicht mache. Aber wie hänge ich etwas eine eine Excel-Liste?

MfG Stephan


Referenz auf aktuell geöffnetes Excel-Sheet - ImExPorty - 06.07.2009 22:30

' schrieb:Diese geht (meines erachtens) mit Eigenschaft "Hyperlinks" der Excel.Range-Klasse. ....fast, diese Geschichte mit dem Huhn und dem Ei ...z.B.:Worksheet.Hyperlinks.Add
Was wird dort am Eingang "Anchor" erwartet? ...ein Range oder ein Shape
[attachment=19543]
Lv85_img[attachment=19542]


Referenz auf aktuell geöffnetes Excel-Sheet - gottfried - 07.07.2009 16:20

Das finde ich alles essenziell für mich und sehr interessant. Ich habe nur das VI so was von NICHT verstanden.... Gibst irgendwo einen Text der die Grundlagen erläutert?

Danke

Gottfried


Referenz auf aktuell geöffnetes Excel-Sheet - ImExPorty - 07.07.2009 20:25

Hallo Gottfried,
' schrieb:Das finde ich alles essenziell für mich.... für viele andere auch...aber die trauen sich nicht nachzufragenCool...Excel und den Rest beherrscht ja heute jeder Rolleyes
und sehr interessant. ...vor allem bekommt man ein bisschen Respekt vor dem was hinter der Oberfläche von "Office" so alles lauert
Ich habe nur das VI so was von NICHT verstanden ...das VI stelllt die 1:1-Umsetzung von brauchbarem VBA-Code dar => guter VBA-Code ... nur Fleißarbeit in LV
.... Gibst irgendwo einen Text der die Grundlagen erläutert? ...siehe oben ...alles zu VBA und das Verständnis von Office-Objektstrukturen liefert die Grundlagen

somit gilt wie immer bei Excel/Word: das gewünschte mit der Makrorekorderfunktion aufzeichen, dann in wirklichen objektorientierten VBA-Code übersetzen und dann in LV nachbilden
Du kannst ja mal mit kleinen Aufgaben beginnen und wir reden dann hier darüber, der Knackpunkt bei den meisten Umsetzungen ist die Variant-Konvertierung, da man diese so nicht in VBA benötigt und somit auch dort nicht testen kann.


Referenz auf aktuell geöffnetes Excel-Sheet - DG1BGS - 09.07.2009 10:17

Hallo ImExPorty,
ja... das bekannte Henne-Ei Problem! Danke für deine Lösung mit dem Hyperlink. Ist eigentlich nicht schwer, wenn man sich an die entsprechende Reihenfolge hält. Dein folgender Tipp ist sehr gut:

' schrieb:Hallo Gottfried,
somit gilt wie immer bei Excel/Word: das gewünschte mit der Makrorekorderfunktion aufzeichen, dann in wirklichen objektorientierten VBA-Code übersetzen und dann in LV nachbilden
Du kannst ja mal mit kleinen Aufgaben beginnen und wir reden dann hier darüber, der Knackpunkt bei den meisten Umsetzungen ist die Variant-Konvertierung, da man diese so nicht in VBA benötigt und somit auch dort nicht testen kann.

Zwar habe ich früher auch viel mit VBA gemacht, aber auf die Idee, die entsprechenden Eigenschafts- und Methodenknoten aus dem VBA-Code abzuleiten bin ich nie gekommen. Echt Spitze Top1

Leider habe ich immer noch das Problem, dass ich nicht auslesen kann, welche Zelle in Excel gerade aktiv ist. Normalerweise wird eine Zelle markiert, bevor man etwas mit ihr macht. Ich möchte jetzt aber wissen welche Zelle gerade aktiv ist, wenn vielleicht jemand anderes schon etwas damit gemacht hat. In VBA geht das. Beispiel: ActiveCell.FormulaR1C1 = "jepp", schreibt "jepp" in die zur Zeit aktive Zelle.
In LabVIEW finde ich den Eigenschaftsknoten "ActiveCell" jedoch nirgends. Es müsste sich doch um eine Eigenschaft von "Excel._Worksheet" handeln ?!?

LG Stephan


Referenz auf aktuell geöffnetes Excel-Sheet - SeBa - 09.07.2009 10:57

Hi,

' schrieb:Es müsste sich doch um eine Eigenschaft von "Excel._Worksheet" handeln ?!?


also ich ermittle die aktive Zelle in VBA folgendermaßen:

(mal eben aus nem Formular rauskopiert)
VBA-Code
[code]Me.varColumn = Range(ActiveWindow.Selection.Address(ReferenceStyle:=xlA1)).Column '--> Spalte
Me.varRow = Range(ActiveWindow.Selection.Address(ReferenceStyle:=xlA1)).Row


Referenz auf aktuell geöffnetes Excel-Sheet - rolfk - 09.07.2009 11:11

' schrieb:Leider habe ich immer noch das Problem, dass ich nicht auslesen kann, welche Zelle in Excel gerade aktiv ist. Normalerweise wird eine Zelle markiert, bevor man etwas mit ihr macht. Ich möchte jetzt aber wissen welche Zelle gerade aktiv ist, wenn vielleicht jemand anderes schon etwas damit gemacht hat. In VBA geht das. Beispiel: ActiveCell.FormulaR1C1 = "jepp", schreibt "jepp" in die zur Zeit aktive Zelle.
In LabVIEW finde ich den Eigenschaftsknoten "ActiveCell" jedoch nirgends. Es müsste sich doch um eine Eigenschaft von "Excel._Worksheet" handeln ?!?

AcitveCell scheint hier eher ein Toplevel Object zu sein. Also eventuel instanzierbar durch eine Open Automation Objekt Node.

Rolf Kalbermatter


Referenz auf aktuell geöffnetes Excel-Sheet - SeBa - 09.07.2009 11:29

Hi,

wie rolfk schon sagt... ActiveCell ist eine Eigenschaft des ActiveWindow ist eine Eigenschaft der aktiven Excel-Instanz...

so wirds gemacht:

[attachment=19620]

Lv86_img[attachment=19619]


Gruß SeBa

Edit:
weiß ja nicht was du brauchst ...

ColumnAbsolute / RowAbsolute
--> False = 'A1' Schreibweise
--> True = '$A$1' Schreibweise


Referenz auf aktuell geöffnetes Excel-Sheet - DG1BGS - 09.07.2009 12:34

' schrieb:weiß ja nicht was du brauchst ...

Danke Rolf und SeBa. Das ist sogar GANZ GENAU das was ich brauche. Darauf, das es ein Toplevel Objekt ist hätte ich echt selbst kommen können Blush

Wie immer ist es so: Man versteift sich auf das Problem und sieht den Wald vor lauter Bäumen nicht mehr. Aber dafür gibt es ja nette LVF-User die einem Licht ins Dunkle bringen Rolleyes