Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Excel -VEE Grundlagen
30.11.2012, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2013 18:50 von detlef.)
Beitrag: #1
Excel -VEE Grundlagen
Bekanntlich fuehren viele Wege nach Rom, ebenso wie man auf mehreren Arten die Einbindung von Excel in VEE loesen kann.

Ich moechte mal hier die verschiedenen Wege auflisten, so Stueck fuer Stueck. Wird dann auch eine Weile dauern, aber vieleicht helft ihr ja mit ;-)


Den Anfang macht meiner Meinung nach die BEST PRACTICE No1. und No2. aktuell:


Best Practice No.2:

Ich fang mal mit der Einbindung per XLLib und Macro an, so wie in neueren VEE Versionen moeglich.

Dort gibt es einen Menuepunkt Excel, und einige Beispielprogramme. Sind eigentlich selbsterklaerend.
Wenn man dann etwas kompizierteres benoetigt, was nicht in diesem Menue versteckt ist, kann man auf die weiteren Excel internen -Befehle zugreifen- das ist schon einen ganze Menge.

Um zu diesen Befehlen zu gelangen, nimmt man am besten ein Macro in Excel auf, um dann zu sehen, wie die Befehle sind, die man braucht.
In Excel: Macro-Recorder an, seine Excel Tabellen anordnen und die Diagramme zeichnen, Macro-Recorder stop. Dann die Macros anschauen.

Zum Beispiel wird aus:
( aktuell aus der VRF ;-) )
-----
Range("A3").Select

Selection.AutoFilter

ActiveSheet.Range("$A$3:$E$8").AutoFilter Field:=1, Criteria1:="LTE"
------
aus dem Excel macro




ein Befehl in VEE in der Formula Box:

xlApp.ActiveSheet.Range("$A$3:$E$8").AutoFilter(1, "LTE")


Man muss also erst XLAPP. aufrufen, um die Excel Lib in VEE zu benutzen, dann die Macro Befehle korrekt umsetzen, aber das Prinzip duerfte erstmal klar sein...


So hab ich das "frueher" gemacht, es geht, ist auch leicht zu erlernen, man ist universell, aber ..wenn MS was aendert in der Syntax, faengt man wieder von vorne an.

Derzeit gehe ich den etwas anderen Weg:


Best Practice No. 1 :

Ich erzeuge ein Excel Template mit einem DATAsheet /(Tabelle1) , und dann alle anderen Sheets (Tabellenblaettern) mit den von mir gewuenschten Funktionen.
Dies koennen Berechnungen, aber auch Diagramme und Kurven sein, die sich auf das erste Datasheet beziehen. Im ersten Tabellenblatt befinden sich Dummy-Daten.

Dann rufe ich aus VEE dieses Excel -template auf, setze meine neuen Daten von VEE in dieses Datasheet statt der Dummy Daten, und speichere das unter einem neuen Namen ab. Da ist dann alles automatisch fertig. Die Diagramme und Berechnungen benutzen jetzt die neuen Daten. Einfacher geht es nicht ;-)))
Vee fuettert eigentlich nur mit den neuen Daten, den Rest macht Excel automatisch. So habe ich meine Messreihen fuer die verschiedenen Kunden dann immer spezifisch aufbereitet, ein Klick, und die Ergebnisse sind so dargestellt, wie der jeweilige Kunde das will. Alles dann nur verschiedene Excel -Templates.
Ist ein Beispiel gewuenscht ?

In den naechsten Schritten gehen wir mal zurueck zu ActiveX und so..., so wie in den alten Vee-Beispielen oder bei Bratbaecker bei myvee.de ...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.10.2014, 13:14
Beitrag: #2
Big Grin RE: Excel -VEE Grundlagen
Servus Detlef!

Grundsätzlich habe ich die Aufgabe, Daten aus VEE in Excel zu importieren. Bis jetzt habe ich mir mit einem selbstgeschriebenen Konverter geholfen, welcher den Punkt entfernt und das Komma für die deutsche Interpunktion setzt und aus meinen Messdaten eine "deutsche" CSV Datei macht.

Durch den von Dir beschriebenen Makroaufruf [xlApp.ActiveSheet.Range("$A$3:$E$8").AutoFilter(1, "LTE")] kam ich auf die Idee, mit VEE die Laufzeitumgebung von Excel auf "englische" Interpunktion zu stellen, dann meine Daten übergeben und die Interpunktion wieder auf "deusch" zu stellen.

Die ersten Versuche sind sehr vielversprechend, denn es klappt hervorragend und ist auch sehr schnell bei vielen Daten. Leider kann ich keine Parameter von VEE an Excel senden, wie die Interpunktion auszusehen hat, da ich die entsprechende Umsetzung in VEE nicht kenne.

Denn anscheinend weicht die Formulierung in VEE gegenüber der VB Scriptsprache von Excel doch ab, siehe Dein Beispiel.
Wo finde ich eine Art Vergleichstabelle, wie die Befehle in VEE formuliert werden müssen, damit Excel kapiert was ich will.
Das würde mir zukünftig vieles erleichtern.

Hier folgt der Makrotext aus Excel 2010 für die Umstellung der Interpunktion:
Sub Makro1()
'
' Makro1 Makro
'
'
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ";"
End With
End Sub

Diese Befehle konnte ich nicht in VEE umsetzten.
Grundsätzlich geht es mir darum, zu verstehen, wie die Excel Befehle im VEE zu schreiben sind, damit Excel kapiert es es zu tun hat.

Vielen Dank für die Unterstützung
Gruß MaxSchmidtFan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.10.2014, 15:45 (Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2014 16:23 von detlef.)
Beitrag: #3
RE: Excel -VEE Grundlagen
Es waere am Einfachsten, in den globalen Einstellungen von Windows die Zahlanzeige auf das englische Format mit Punkt als Dezimaltrennzeichen zu setzen, und das Tausendertrennzeichen als Komma.
Da hat man dann RUHE - insbesondere in der Korrespondenz weltweit.
Die neueren EXCEL-Versionen sollen dies automatisch koennen...hmhm,hab ich aber noch nicht gegengecheckt.

Ansonsten:
Formula Box, xlapp.Application.DecimalSeperator=Value , wobei Value dann dein Wert ist.... So oder in dieser Art waere es, muss ich halt auch immer probieren, bis es geht. Deshalb lieber TEMPLATES...
Das Thema gabs aber auch schon des Oefteren in diesem Forum. Benutz mal die SUCH Funktion und gib mal "Komma" ein. Da findet sich dann auch dies hier, brauchtest also nix selber schreiben mit Punkt zu Komma ;-)

Mann, ueber 100 Downloads, wow, Marktluecke LOL


http://www.veeforum.de/showthread.php?ti...ight=Komma
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 10:32
Beitrag: #4
RE: Excel -VEE Grundlagen
Servus Detlef!

Mein alter Konverter funktioniert bis heute tadellos. Nur bei den derzeitigen Datenmengen wäre eine schnellere Übergabe der Daten ins Excel wünschenswert. Da der "DaU" ja immer vor dem Bildschirm sitzt, ist es schwierig, Excel grundsätzlich auf englisch umzustellen. Vor allem weil vom Ferienjobler bis zum Doktor das Tool nutzen sollen. Deshalb sollte die Umstellung vom Excel automatisch von VEE aus erfolgen.

Auf die Idee mit xlapp.Application.DecimalSeperator=Value kam ich auch schon. Funktioniert aber nicht wie ich mir das vorgestellt habe. Denn einen ".DecimalSeparator" Eintrag (Object Browser) kann ich im "ActiveX/Excel/Application" nicht finden. Eine Hilfe für diese ActiveX ist bei mir leider nicht vorhanden.

Das brachte mich auf die Idee, das Makro über eine Formula Box direkt als String an Excel zu übergeben. Diese Idee ist ausbaufähig, denn ich kann das Makro komplett an Excel übergeben und das Makro läuft auch. Voraussetzung dafür ist, daß ich zuerst eine neue (leere) Datei anlege in die ich das Makro schreibe. Danach meine Werte aus der CSV Datei importiere um anschließend wieder die Interpunktion auf deutsch zu stellen.
Jetzt muß ich nur die leere Exceldatei schließen und alles funktioniert wie gewünscht.

   

Vielleicht kann ich mir den Umweg über die CSV Datei sparen, wenn ich die Daten gleich komplett aus einem Array übergebe. Mal sehen, ob ich das hinkriege.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 15:55 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2014 16:50 von detlef.)
Beitrag: #5
RE: Excel -VEE Grundlagen
Ich meinte eigentlich, in Windows das Zahlenformat umzustellen, nicht allein in Excel.
WO soll es da zu Problemen kommen, wenn verschieden User am Rechner sitzen?
In neueren Versionen geht das mit Excel automatisch, da muss man nix mehr aendern....Office 365 z.B...
Bei meinen alten XP Moehrchen hab ich das in Windows in den Prefs geaendert, was sich auch empfiehlt, da viele Programmier-Utilities eine englische Umgebung erwarten.
Aber dein Ansatz ist auch nicht von schlechten Eltern- ich wuerd es aber nicht in Excel selbst machen, sondern die Umstellung hin und her per powershell -script...wenn es denn wirklich sein muesste -
Nochmal zur Verdeutlichung:
du stellst dein System nicht auf englisch, sondern laesst dein System auf deutsch in den Spracheinstellungen, aenderst dort aber das Zahlenformat und tauscht Komma zu Punkt .
Ich habe mal bei aktuellen WIndows-Maschinen nachgeschaut- da ist das von Anfang an so ( win8.1), und ich hatte das noch nicht umgestellt.Also quasi deutsche Einstellung, aber nun engl. Zahlenformat...Kleiner Eingriff, grosse Wirkung ;.-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2014, 07:18
Beitrag: #6
RE: Excel -VEE Grundlagen
Servus!
Danke für den Wink mit dem Zahlenformat.
Für jemanden, der das nur auf seinen eigenen Rechner macht ist das bestimmt eine sehr gute und einfache Lösung.

Da wir in unserem Konzern aber über unsere IT Administriert werden, sind alle W7 Maschinen und Office 2010 in der Systemsteuerung auf "deutsch" gestellt, mit allen Konsequenzen. Das würde bedeuten, das jeder Kollege der dieses Tool einsetzt, erst einmal die Punktierung in der Systemsteuerung ändern muß.

Deshalb werde ich es vorerst mit dem Excelmakro lösen. Denn von der Powershell hab ich mal wieder keine Ahnung.

Zu Deiner Nachricht vom 7.10.14:
Mir fehlt im Forum eine Übersicht, zu welchen Thema es welche Downloads gibt. Es haben viele User interessante Tools eingestellt. Nur ich tu mich mit dem Finden von diesen Tools etwas schwer. Vielleicht kann man so etwas hier im Forum einfügen oder gibt es das schon?

Hab nach langer Suche was gefunden (Arrayvergleich.zip), um 2 gleich breite aber unterschiedlich lange Arrays zusammen zu fügen.
(Array1, 1 Zeile = Text, Spaltenüberschriften; Array2, x Zeilen = Real64, Messwerte).
Das Teil versuche ich etwas anpassen um es dann für meine Zwecke hernehmen zu können.

Jedenfalls herzlichen Dank für die bisherige Unterstützung
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2014, 10:36
Beitrag: #7
RE: Excel -VEE Grundlagen
Ist euer Konzern nur national? Denn wenn international, sollte die IT bei euch saemtliche Maschinen zwar in Deutschland auf deutsch stellen, das Zahlenformat aber der englischen Norm anpassen. Wie gesagt, ist in neueren Windows Versionen sowieso so- und in unserem Konzern haben die wohl auch das gelernt...
Es ist ja so, dass das nur die Eingabe bei Excel ist- die muss global fuer ganz Windows so eingestellt werden. Die Daten werden ueberall richtig abgespeichert, wenn du dann z.B. auf englisch wechsels, wird dein Dezimalkomma in England als Punkt angezeigt. Es ist also nur das Problem da, wenn du Daten nach excel sendest. Laeuft dein Programm nur in DE?
Und noch was anderes, was mir auch bei grossen Datenmengen aufgefallen ist:
Schick deine Daten als Array nach excel, anstatt alle Zeilen einzeln zu fuellen.
Du wirst staunen, wie schnell das geht im Vergleich zu den einzelnen Werten.
Und wenn deine Daten schon in einem Array sind - das Punkt zuKomma wandeln im Array sollte nur Bruchteile einer Sekunde kosten....


Es fuehren immer viele Wege nach Rom ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2014, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2014 16:28 von detlef.)
Beitrag: #8
RE: Excel -VEE Grundlagen
Okay, hier ist mal ein Beispiel wie du es haben wolltest.
Tut bei mir, allerdings gings ja vorher auch.....
Aber ich bekomme keine Fehler. Der Trick ist wohl, das man ab Excel 2007 das Zahlenformat auch lokal einstellen kann.
Hab das mal in der Checkbox so gesehen und dann in Active X nachgebildet.
Versuch mal, und sag mal, was Excel macht, wenn es neu geoeffnet wird per HAnd und nicht von VEE.
Da muesste dann naemlich wieder das von Windows vorgegeben globale Format kommen.....
So nebenbei hab ich mal auch die schnellste Datenuebergabe reingetan....
Schoenes WE !
AngelAngelAngelAngelAngelAngelAngelAngelAngelAngel:
So, noch 2 andere Sachen:
Das mit einer Uebersicht waere nicht schlecht- es gab da mal eine Download area...Mal bei Dennis fragen, der hosted dieses Forum.
Und die Sache mit ActiveX- das hat nix mit VEE zu tun, deshalb kannst du da auch keine Hilfe in der VEE-Hilfe erwarten.
Die Kommandos werden von den einzelnen Programmen zur Verfuegung gestellt, windows kennt die dann in der Registry, und in VEE kann man sich dann die entsprechenden Inputs zuladen -ueber Device/activeX Automation references...
Bei Excel ist das z.B. : " Microsoft Excel 12.0 Object Library" fuer Excel 2007 glaub ich...
Erst dann erscheinen diese Excel ActiveX Commandos im FOB - function and object browser.
Da kann man sich dann durchklicken, und die korrekte Syntax wird schon unterstuetzt.
In den neueren VEE Versionen mit Excel-Lib tut das automatisch, vor den Kommandos muss nur ein xlapp. davor.


Nun, dann ist da noch die Sache mit den Macros, die basieren auf VBA, da muss man dann ein wenig die Syntax anpassen...eine Uebersicht dazu HMMMMM, bei mir try and error ;-)


Deshalb best practice bei mir: Templates .

SO, jetzt aber schoenes WE.


Angehängte Datei(en)
.vee  excelchange1.vee (Größe: 30,71 KB / Downloads: 3)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2014, 09:06
Beitrag: #9
RE: Excel -VEE Grundlagen
Servus Detlef!

Vielen Dank für die Hilfe. Das Programm von Dir mach genau das was ich wollte.
Excel ist im Anschluß auf "." Zahlenformat gestellt und bleibt auch dabei.

Damit ich keine Problem mit meinen Kollegen bekomme, stelle ich Excel einfach mit [xlapp.Application.UseSystemSeparators = True] wieder auf das Zahlenformat vom Betriebssytem W7 zurück.

Das mit:
xlapp.Application.DecimalSeparator = ".";
xlapp.Application.ThousandsSeparator = ",";
xlapp.Application.UseSystemSeparators = False;

hat bei mir nur deshalb nicht funktioniert, weil ich in meiner Formula mit 3 Zeilen untereinander kein Semikolon am Ende der Zeile hatte.
Kleine Ursache, aber große Wirkung.
Undecided


Zudem hab ich gelernt, wie ich ein Makro mit VEE erzeugen, nach Excel senden und dort ausführen kann.
Hier in der Firma hab ich einen Kollegen, der sich wunderbar mit den Excel Makros auskennt. Da kann ich mir sicher viele Anleitungen holen, falls ich noch mal was mittels Makros umsetzten muß.

Jetzt muß ich für das Datenprojekt nur noch in der 2. Spalte meines Array's die VEE Sekunden gegen das Datum austauschen.
Den VEE Sekundenwert in eine Excelzeit [tt.mm.jjjj hh:mm] umwandeln hab ich schon gemacht. Die Zeit habe ich jetzt in einem 1D Array vorliegen.
Wie ersetzte ich jetzt in meinem 2D Array die Werte in der 2. Spalte mit den Werten aus dem 1D Array?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2014, 11:09 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2014 11:30 von detlef.)
Beitrag: #10
RE: Excel -VEE Grundlagen
Array[Spalte,Zeile], bei Null beginnend.
Also Array[*,1] fuer die komplette Spalte und 2.Zeile,

oder umgekehrt....

Du kannst aber auch den NOW() -Wert von VEE in Excel lassen, und dort unter Zellenformat ein Datum oder eine Uhrzeit anzeigen lassen.

Vee zaehlt die Sekunden von Christi Geburt an.
Natuerlich kann man das Format auch schon in VEE korrekt anzeigen.

Es kann sein, dass Ecxel die Sekunden anders zaehlt, z.B vom 1.1.1970 an oder so- da muss man nur subtrahieren...
---
So, mal eben nachgeschaut: Excel zaehlt das Datum vom 1.1.1900 an.
Also die Zahl 1 ist obiges Datum.

Die Stunden, Minuten und Sekunden sind Bruchteile davon.
Man koennte jetzt die Tage von Christi Geburt abziehen, und die Bruchteile umrechnen, und diese Zahl dann nach Excel uebergeben, und dort das Format entsprechend einstellen fuer die Spalte.
Vorteil: du kannst in Excel damit rechnen...

Man kann aber auch alles in VEE wandeln und dann als String rueberschicken, wenn nur das reine Datum zum Ausdrucken z.B. wichtig ist...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2014, 13:07 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2014 13:08 von detlef.)
Beitrag: #11
RE: Excel -VEE Grundlagen
---
So, hier mal wieder ein Beispiel mit der Umwandlung von VEE Datum zu Excel Datum.
Die Formatierung der 2ten Spalte bitte mal selber als ActiveX-Befehl einfuegen.
Sollte doch nicht mehr das grosse Problem sein , oder?

Bitte dann doch mal reinstellen hier ;-)
ExclamationExclamationExclamationExclamationExclamationExclamation


Angehängte Datei(en)
.vee  excelchange2.vee (Größe: 33,48 KB / Downloads: 3)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2014, 16:55 (Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2014 17:01 von detlef.)
Beitrag: #12
RE: Excel -VEE Grundlagen
Ergaenzung zu Powershell:
http://technet.microsoft.com/de-de/scrip...shell.aspx

https://gallery.technet.microsoft.com/sc...l-f2f0c035

und besonders:
http://blogs.technet.com/b/heyscriptingg...excel.aspx
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.10.2014, 07:01
Beitrag: #13
RE: Excel -VEE Grundlagen
Servus!

Hab ein "Waitstate" eingefügt, damit die Zeit etwas verstreicht um identifizierbare Zeiten zu erhalten. Deshalb braucht das Program jetzt etwas.
Das mit der Zellformatierung habe ich umgesetzt, allerdings wohl anders als Du es gemacht hättest. Denn die ActiveX Befehle dazu finde ich wieder nicht. Hab einfach die vorhandenen Formatbefehle aus dem Excel Menue genommen.
Mit meiner Version kann ich 2 Dinge nicht realisieren:

Die Hintergrundfarbe auf "Transparent" stellen und
Die Exceldatei als xlsx abzuspeichern.

Wo ist hier der Haken?
Ich benutze VEE 9.3.15221 und Office 2010


Angehängte Datei(en)
.vee  excelchange3.vee (Größe: 55,92 KB / Downloads: 3)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.10.2014, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2014 14:23 von detlef.)
Beitrag: #14
RE: Excel -VEE Grundlagen
Backgroundcolor None ....ist wohl in der Auswahlbox vergessen worden, musst du da per Hand in der Enum reinsetzen. Steht ja im Text daneben ;-)
Und XLSX kann man mit save as, und dann die Auswahl dort treffen. Aber Achtung: diese Auswahl erscheint erst ab den Neueren VEE VErsionen.
Wenn du aus einem alten Programm diese SAve AS uebernommen hast, erscheint da die Auswahl fuer xlsx nicht.
einfach dann die Auswahlbox SAVE AS loeschen und neu anlegen, da ist dann die neue Sache drinne.

ICh bin gerade dabei, die Sache direkt zu machen, und scheitere an xlapp.Selection.... da war doch ein Trick ;-)
Aenderung inclusive...
Wer hat denn das xlNone reingeschrieben?
Ah, Fehler in deiner VEE VErsion.
Aktuelle VErsion ist VEE9.32.17704.1 bitte mal updaten!


Angehängte Datei(en)
.vee  excelchange3.bvee.vee (Größe: 56,74 KB / Downloads: 1)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.10.2014, 07:03
Beitrag: #15
RE: Excel -VEE Grundlagen
Das xlNone kommt von mir, hab ich im Makrotext so gesehen.
Auch die Einstellung für die Zeit ist von mir da eingetragen worden. Man muss nur aufpassen welche Interpunktion man gerade verwendet, sonst funktioniert's nicht. Der Rest ist ebenfalls von mir eingetragen.
Weil das aber nicht richtig funktioniert hat, habe ich nach meinem [Format Cells] eine Formula mit xlapp.selection... angehängt. Die funktioniert bei mir tatsächlich.

Das was in [Format Cells] steht, kann man sicher auch direkt machen, muß ich auch mal testen; nächste Woche.

Die im Excel gesetzte Interpunktion sichere ich jetzt in einer Variablen, stelle auf englische Interpunktion um, übertrage meine Daten, formatiere die Zellen, schreibe die ursprüngliche Interpunktion zurück und stelle auf das Zahlenformat vom Betriebssystem zurück.

Auf VEE 9.32 werde ich erst updaten, wenn meine Kollegen Ende November aus Kasachstan zurück sind. Dann kann ich deren Laptops auch gleich damit ausstatten. Dann sollte das mit dem xlsx auch funktionieren.


Angehängte Datei(en)
.vee  excelchange3c.vee (Größe: 66,62 KB / Downloads: 1)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:




Partnerforen: LabVIEWForum.de| DIAdem-Forum.de| Machine-Vision-Forum.de| goMatlab.de| VEEforum.de