Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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
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?
' 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
1Postingempfehlungen, 2Motivation Fragen und Anpassungswünsche per PM werden, gegen Rechnungsstellung gerne beantwortet und realisiert ....wenn's dann doch kostenlos sein soll... bitte hier im LVF unter Berücksichtigung der voranstehenden Links posten.
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?
' schrieb:Das finde ich alles essenziell für mich.... für viele andere auch...aber die trauen sich nicht nachzufragen...Excel und den Rest beherrscht ja heute jeder
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.
1Postingempfehlungen, 2Motivation Fragen und Anpassungswünsche per PM werden, gegen Rechnungsstellung gerne beantwortet und realisiert ....wenn's dann doch kostenlos sein soll... bitte hier im LVF unter Berücksichtigung der voranstehenden Links posten.
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
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 ?!?
' 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
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' 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.
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
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
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