INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX



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!

09.05.2018, 12:33
Beitrag #1

DM_94 Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Feb 2018

2015
2017
DE



Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hallo Leute,

anbei wieder ne Frage Blush

Ich programmiere gerade ein Sub.vi für relvante Messwerte eines Prüfstandes der mit Labview funktioniert. Hierbei werden verschiedene Messungen durchgeführt und Kennzahlen bestimmt. (So jetzt kommen wir zur Frage Big Grin)

Nach der Bestimmung sollen die Daten in eine vorgefertigtes Excel-Sheet per ActiveX geschrieben werden. Zurzeit funktioniert das Sub.vi so, das es erkennen kann ob das Sheet offen ist oder nicht. Danach schreibt es die Kennzahlen in die richtigen Zeilen und Spalten. Danach starte ich die nächste Messung und das Programm öffnet erneut eine Datei und schreibt in diese Datei die Kennzahlen an die richtige Position.

Ich will jedoch, dass nur eine Datei offen ist und die Daten dort nacheinander reingeschrieben werden.

Über konstruktive Hilfe würde ich mich sehr freuen.

Zur besseren Darstellung habe ich das VI angehängt

Grüße DM


Angehängte Datei(en)
15.0 .vi  EXCEL_ACTIVEX.vi (Größe: 41,31 KB / Downloads: 287)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2018, 16:49
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Das schreit nach einer Umsetzung als FGV bzw. Action-Engine-VI:

Hier das Grundprinzip eines solchen VIs:
   

Enum (natürlich Typ-Definiert, fehlt im Screenshot) legt fest, was das VI machen soll. In deinem Fall bieten sich die Status: Excelfile öffnen; Daten schreiben; File schließen an.

In einem uninitialisierten Schieberegister werden Werte für den nächsten Aufruf den VI gespeichert, in deinem Fall z.B. die Workbook-Reference.

Die While-Loop läuft immer nur 1x durch.

Und das ist es dann auch schon.

In deinem Programm rufst du dann diese Sub-VI 1x mit der Methode "Öffnen" auf, dann beliebig oft mit "Schreiben", und irgendwann mit "Schließen".

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2018, 06:53
Beitrag #3

MaxP Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Oct 2016

LV Prof. SSP
-
DE_EN


Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hallo DM,

ich möchte da Jens widersprechen. Wenn du dein Sub VI in mehrere Teile austeilst, kommst du in meinen Augen viel besser ans Ziel.
Dein Sub VI würde ich so zerlegen:
1. Öffnen von Excel
2. Öffnen/Erstellen der Excel Datei
3. Schreiben der Daten
4. Speichern der Datei
5. Schließen von Excel

So kannst du vor Beginn der Messung Excel + Datei öffnen. Danach beliebig oft die Messung durchführen + Daten schreiben und nach der Messung einfach alles schließen.

Hinweis noch am Rande, du Prüfst nicht ob eine Exceldatei geöffnet ist sondern ob die Excel Application an sich sichtbar ist. Ob Excel dann eine Datei geöffnet hat stellst du damit nicht fest.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.05.2018, 07:41
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
(11.05.2018 06:53 )MaxP schrieb:  Dein Sub VI würde ich so zerlegen:
Genau das ist es ja, was Jens beschreibt. Zerlegung eines Ablaufes in einzel aufrufbare Abschnitte. Nur das diese Zerlegung mittels diverse LabVIEW-Elemente in einem einzigen VI liegt - andere Programmiersysteme würden zu so einem Konstrukt möglicherweise Klasse sagen, LabVIEW sagt in diesem Falle FGV.

Die Aufteilung in mehrere VIs hat nämlich einen Nachteil gegenüber nur ein VI: die mehreren VIs, die dann ja sinnvollerweise keinen eigenen Speicher für die Excel/Sheet-Referenz haben, müssten mit den Referenzen sequenziert werden - was aber andere Nachteile mit sich bringt.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 07:43
Beitrag #5

DM_94 Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Feb 2018

2015
2017
DE



RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
(09.05.2018 16:49 )jg schrieb:  Das schreit nach einer Umsetzung als FGV bzw. Action-Engine-VI:

Hier das Grundprinzip eines solchen VIs:


Enum (natürlich Typ-Definiert, fehlt im Screenshot) legt fest, was das VI machen soll. In deinem Fall bieten sich die Status: Excelfile öffnen; Daten schreiben; File schließen an.

In einem uninitialisierten Schieberegister werden Werte für den nächsten Aufruf den VI gespeichert, in deinem Fall z.B. die Workbook-Reference.

Die While-Loop läuft immer nur 1x durch.

Und das ist es dann auch schon.

In deinem Programm rufst du dann diese Sub-VI 1x mit der Methode "Öffnen" auf, dann beliebig oft mit "Schreiben", und irgendwann mit "Schließen".

Gruß, Jens

Hi Jens,

bei mir funktioniert komischerweise meine Case-Struktur nicht. Die Fehlerliste zeigt an: "Case-Struktur: Angegebener Case nicht vorhanden" aber ich habe den Case definiert.

Zudem hast du bei dem Ausgang und Eingang im Case zwei gelbe Pfeile in den grünen Rechtecken, wo kommt das her?

Grüße
DM
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 07:57 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2018 07:58 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hallo DM,

Zitat:bei mir funktioniert komischerweise meine Case-Struktur nicht. Die Fehlerliste zeigt an: "Case-Struktur: Angegebener Case nicht vorhanden" aber ich habe den Case definiert.
Wie soll man das beurteilen, wenn du weder das VI oder wenigstens einen (aussagekräftigen!) Screenshot bereitstellst?

Zitat:Zudem hast du bei dem Ausgang und Eingang im Case zwei gelbe Pfeile in den grünen Rechtecken, wo kommt das her?
Das ist ein Schieberegister - und das gehört zu den LabVIEW-Grundlagen! (Und Jens hatte das in seinem Beitrag auch so benannt…)
Du kennst die ganzen Links in meiner Signatur doch eigentlich schon, oder?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 08:26 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2018 08:27 von DM_94.)
Beitrag #7

DM_94 Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Feb 2018

2015
2017
DE



RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
(17.05.2018 07:57 )GerdW schrieb:  Hallo DM,

Zitat:bei mir funktioniert komischerweise meine Case-Struktur nicht. Die Fehlerliste zeigt an: "Case-Struktur: Angegebener Case nicht vorhanden" aber ich habe den Case definiert.
Wie soll man das beurteilen, wenn du weder das VI oder wenigstens einen (aussagekräftigen!) Screenshot bereitstellst?

Zitat:Zudem hast du bei dem Ausgang und Eingang im Case zwei gelbe Pfeile in den grünen Rechtecken, wo kommt das her?
Das ist ein Schieberegister - und das gehört zu den LabVIEW-Grundlagen! (Und Jens hatte das in seinem Beitrag auch so benannt…)
Du kennst die ganzen Links in meiner Signatur doch eigentlich schon, oder?


Hey,

also die Case-Strktur funktioniert jetzt.

Ja die Links kenne ich und habe Sie mir schon angeschaut... Ich kenne das Schieberegiester, ich hätte es besser beschreiben sollen. Ich meine die Rechtecke in der Case-Struktur (siehe umrande Elemente im Bild im Anhang).


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 08:34 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2018 08:39 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hallo DM,

das sind In/Out-Tunnel der Case-Struktur - an denen zusätzlich (dank Rechtsklick-Option!) der Modus "verknüpfte Tunnel" gesetzt wurde…
Einfach mal die LabVIEW-Hilfe zu den Tunneln lesen! Big Grin

Zitat:also die Case-Strktur funktioniert jetzt.
Bist du dir sicher, dass OpenFile der Standard-Case sein sollte?
Immer, wenn irgendwas nicht passt, soll eine neue Datei geöffnet werden und die alte Referenz vergessen werden???

Abgesehen davon: bei einem Enum sind die Items klar definiert! Also bitte für jedes Item im Enum exakt einen Case erstellen - auch dafür gibt es eine Rechtsklick-Option der Case-Struktur!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 10:03
Beitrag #9

DM_94 Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Feb 2018

2015
2017
DE



RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hi Leute,

habe anbei mal ein Vi gesendet, welches mit den Tipps von Jens und Gerd enstanden ist. Die Excel-Datei wird hier durch ActiveX aufgerufen und beschrieben. Ich weis nicht ob es bis ins letzte Detail allen Tipps folgt aber es läuft halbwegs Big Grin

Habe nur die Probleme:
Das das Programm die gewünschte vorgefertigte Datei nicht öffnet, die ich durch den Pfad angebe
Und wenn ich den Befehl create mehrmals ausführe eine Null-Refernz besitzt.

Ihr könnt es ja mal ausprobieren, bin über jede Hilfe froh Big Grin

Grüße DM


Angehängte Datei(en)
15.0 .vi  Speicherung_Excel.vi (Größe: 32,6 KB / Downloads: 268)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2018, 10:22 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2018 10:25 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Excel-Datei durchgehend ausfüllen ohne neue Mappen zu öffnen mit ActiveX
Hallo DM,

Zitat:Habe nur die Probleme:
Das das Programm die gewünschte vorgefertigte Datei nicht öffnet, die ich durch den Pfad angebe
Und wenn ich den Befehl create mehrmals ausführe eine Null-Refernz besitzt.
THINK DATAFLOW!
Da sind diverse CloseReference-Befehle in deinem VI - und diese halten sich leider nicht an den nötigen DATAFLOW!
Wenn du Referenzen schon (mangel DATAFLOW-Koordinierung) schließt, obwohl diese noch benötigt werden, kann es eben zu unbeabsichtigten Resultaten kommen!
(Ich würde ein Workbook erst schließen, wenn ich mit den darin enthaltenen Worksheets fertig bin. Und diese wiedrum erst dann schließen, wenn die darin enthaltenen Ranges fertig bearbeitet sind…)

- Warum verwendest du zweimal eine "Value"-Property von "Reset"? Warum nicht einfach das ungenutzte Terminal und etwas Draht verwenden?
- Man kann einen Range auch direkt als "F34:J34" angeben und (nur) an Cell1 verdrahten.
- Wieso erzeugst du in der Schleife, in der du die Werte in die Excel-Datei einträgst, ein Array of References am Ausgang? Dan Range gleich in der Schleife schließen, das Worksheet nur genau einmal nach der Schleife!
- Es gibt keinen State in der Statemachine, wo du das Workbook (korrekt) schließt und speicherst!?
- Wozu erzeugst du den Range "F4" per FormatIntoString? Warum nicht einfach nur eine Stringkonstante verwenden?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Excel Protokoll Erstellung ohne Excel-Lizenz mez15 3 3.819 19.02.2021 12:17
Letzter Beitrag: GerdW
  Programmabsturz beim speichern der Excel über ActiveX TpunktN 6 5.641 20.03.2019 11:33
Letzter Beitrag: TpunktN
  Excel xlsx auslesen ohne zu öffnen Reiling 8 8.981 06.08.2018 06:40
Letzter Beitrag: MaxP
  Excel Diagramm mit ActiveX erzeugen Roland 7 8.410 20.06.2017 10:08
Letzter Beitrag: th13
  Reines COM Objekt ohne ActiveX mit Firmenspezifischen Datentypen einbinden Smarty 4 7.791 09.12.2015 12:42
Letzter Beitrag: rolfk
  Protokoll neue Excel Instanz hansi9990 6 8.328 02.06.2015 20:49
Letzter Beitrag: hansi9990

Gehe zu: