Verwendung der VBA-Automatisierung<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Dies ist eine Folgefrage zur VBA-Automatisierung:
Ich muss JMP-Datentabellen aus Excel mithilfe der VBA-Automatisierung füllen.
Derzeit mache ich das mit „SetDataVector“ und durchlaufe jedes Element der Quellarrays. Alle Versuche, die Vektorform „SetDataVector“ zu verwenden, waren erfolglos.
Wir würden uns sehr über Ihre Hilfe bei der ordnungsgemäßen Nutzung der Funktion „SetDataVector“ freuen.
Danke,
Pete
Betreff: VBA-Automatisierung verwendenWährend ich den Weg der VBA-Automatisierung beschreite, ist es hilfreich zu wissen, dass es bei der Kommunikation zwischen Excel und JMP eine implizite Konvertierung von Datentypen gibt. Danke!
Betreff: VBA-Automatisierung verwendenDanke für das Follow-up.
Es scheint, dass das Quellarray von „SetDataVector“ vom Typ „double“ oder ein String sein muss, damit es funktioniert. Wenn es sich um eine Variante handelt, wird die Prozedur ausgeführt, es werden jedoch keine Inhalte in die Tabelle übertragen. Das sequentielle Übertragen der Array-Elemente in ein zweites Array und die gleichzeitige Konvertierung in den Typ double (CDbl) funktioniert gut.
Es sollte auch beachtet werden, dass das Array base0 sein muss, um wie erwartet zu funktionieren. Wenn es base1 ist, werden die Daten verschoben und die erste Zeile fehlt bzw. eine ungültige letzte Zeile hinzugefügt.
Danke
Betreff: VBA-Automatisierung verwendenDie meisten Variablen verwenden den zugrunde liegenden Variantentyp in VB/VBA.Ich denke, Sie werden feststellen, dass die Leistung VIEL schneller ist, wenn Sie eine Schleife verwenden, um ein Array auf der VB-Seite zu füllen, und dieses Array dann übergeben, anstatt die Zellwerte einzeln festzulegen.Die prozessübergreifende Kommunikationszeit zwischen Automatisierungsaufrufen führt zu einer dramatischen Verlangsamung, wenn der Einzelzellenfall verwendet wird.
In dem Beispiel, auf das ich verwiesen habe, erstelle ich die Arrays zwar als Double oder String.Sie werden jedoch als Variantenarrays übergeben (die Konvertierung erfolgt implizit).Wenn Sie sich die Methodensignatur für SetDataVector im Objektbrowser ansehen, werden Sie feststellen, dass JMP tatsächlich ein Varianten-Array erwartet.Sie sollten also zumindest versuchen, Ihr Variantenarray einfach aus dem Excel-Bereich an JMP zu übergeben.Wenn der Typ nicht implizit konvertiert werden kann, müssen Sie die Elemente einzeln kopieren.
Brian Corcoran
JMP-Entwicklung
Betreff: VBA-Automatisierung verwendenJa, das hat geholfen. Ich kann jetzt die Funktion „SetDataVector“ erfolgreich verwenden (vorausgesetzt, das Array ist entweder vom Typ „Double“ oder „String“). Um Daten zwischen einem Array und einem Excel-Bereich zu übergeben, muss das Array leider eine „Variante“ sein. Daher sind „SetCellVal“ und das Durchlaufen des Arrays in meinem Fall möglicherweise immer noch die beste Option.
Danke schön.
Betreff: VBA-Automatisierung verwendenDas Beispielprogramm zur Automatisierung von Datentabellen, das in Ihrer JMP-Installation enthalten ist, enthält ein Beispiel für die Syntax.Wenn Sie sich den Code hinter der Schaltfläche „Vektor festlegen“ ansehen, werden Sie ihn sehen.Es ist zu lang, um hier wirklich das Ganze zu veröffentlichen.Das Beispielprogramm finden Sie im Installationsverzeichnis.Für JMP 11 wäre dies C:\Program Files\SAS\JMP\11\Samples\Automation\Visual Basic Samples\Data Table .NET .
Ich hoffe das hilft.
Brian Corcoran
JMP-Entwicklung