2016-12-20 4 views
0

Ich habe ein Add-In, das von meiner Firma geschützt ist. Mein Ziel ist es, einige VBA zu schreiben, um einen Großteil des Klickens um das Add-In zu automatisieren. Ein Großteil des darin enthaltenen Codes dreht sich um das, was in Benutzerformulare eingegeben wird. Die Methode, die ich jetzt versuche, besteht darin, Code zu schreiben, der mit diesen Benutzerformularen arbeitet, anstatt ihren Code neu zu schreiben, um die Benutzerformulare nicht zu verwenden.Mit Benutzerformularen aus einer anderen Arbeitsmappe arbeiten

Das Add-In hat ein Makro in einem der Module, das die Benutzerformulare öffnet. Also benutze ich einfach um das Benutzerformular zu öffnen, was kein Problem ist. Aber wie greife ich auf die Funktionen in den Benutzerformularen zu? Ich muss das tun, um das Klicken auf das Benutzerformular zu simulieren.

+0

Nicht sicher, was das ist. Ich habe versucht, WorkbookName.FormName.FunctionName – user3759627

+0

Das wird nur für öffentliche Funktionen obwohl, so möglicherweise keine Befehlsschaltfläche ausgesetzt. Holen Sie sich das Formularobjekt, MSDN, das, und dann die Steuerelemente, dann können Sie möglicherweise den Klick von diesem aufrufen. –

+0

Ich verstehe. Was meinst du mit MSDN das? Wenn ich nach msdn suche, hat jede Webseite von Microsoft msdn in der URL, sagt aber nicht viel darüber. – user3759627

Antwort

1

Sie können auf Funktionen innerhalb eines Benutzerformulars mit dem Format zugreifen, das Sie zuvor in Ihren Kommentaren erwähnt haben. Aus Gründen eine vollständige Antwort der Bereitstellung, das heißt: -

WorkbookName.FormName.FunctionName 

jedoch für diese die Funktion der Sorge arbeiten muss aus dem eigenen Code als öffentlich deklariert werden. Ein Beispiel:

Public Function ExampleF(Param1 As Integer) 
' Function code 
End Function 

Wenn Sie dann Param1 von außerhalb Ihres Benutzerformulars festlegen möchten, können Sie das Format FormName.ExampleF(123) verwenden.

Dies würde Param1 = 123 setzen, und Ihre Funktion könnte weiterhin diesen Wert für seinen Code verwenden.

Leider, wenn das Benutzerformular, auf das Sie zugreifen möchten, seine Funktionen nicht als öffentlich deklariert hat, sind sie leider nur für das Formular selbst zugänglich und es gibt nicht viel mehr, was Sie tun können.

Ihre beste Hoffnung wäre, das Add-In komplett neu zu schreiben oder zu fragen, dass es ungeschützt ist, um die Funktionen öffentlich zu machen.

+0

Ich machte einige Hacks und änderte alle Subs und Funktionen innerhalb meines Benutzerformulars, um öffentlich zu sein. Es erkennt das Benutzerformular immer noch nicht, wenn ich es von einer anderen Arbeitsmappe aus referenziere workbookName.FormName Gibt es etwas mit dem Benutzerformular, das ich ändern muss, um es zu veröffentlichen? – user3759627

+0

Gibt es auch einen Grund, warum WorkbookName.FormName.ButtonName.Value im unmittelbaren Fenster funktioniert, aber nicht in meinem Sub, das in der anderen Arbeitsmappe ist? – user3759627

Verwandte Themen