2016-12-20 23 views
0

私の会社によって保護されているアドインがあります。私の目標は、アドインの周りをクリックすることの大部分を自動化するためのVBAを書くことです。そこにあるコードの多くは、ユーザーフォームに入力されているものの周りを回っているので、私が今しようとしている方法は、userformsを使用しないようにコードを書き換えるのではなく、別のブックからのユーザーフォームの操作

アドインには、ユーザーフォームを開くモジュールの1つにマクロがあります。だから私はちょうどそれが問題ではない、userformを開くために使用します。しかし、私はどのようにユーザーフォーム内の関数にアクセスするのですか?私は、userformのクリックをシミュレートするためにそれを行う必要があります。

+0

これが何であるかわかりません。私はWorkbookName.FormName.FunctionNameを試してみた – user3759627

+0

これは公開された関数でしか動作しないので、commandbuttonコードが公開されていない可能性があります。フォームオブジェクト、MSDNを取得し、コントロールを取得すると、そのクリックを呼び出すことができる場合があります。 –

+0

私は参照してください。 MSDNはどういう意味ですか?私がmsdnを検索すると、マイクロソフトのすべてのウェブページでURLにmsdnがありますが、それについてはあまり言わない – user3759627

答えて

1

上記のコメントで以前に述べた形式を使用して、ユーザーフォーム内の関数にアクセスできます。完全な答えを提供するために、それは次のようになります -

WorkbookName.FormName.FunctionName 

しかし、これは懸念の機能は、独自のコード内からパブリックとして宣言する必要があります動作するために。例:あなたは、あなたのユーザーフォームの外側からParam1を設定したい場合

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

、あなたは形式FormName.ExampleF(123)を使用することができます。

これはParam1 = 123に設定され、このコードではこの値を引き続き使用できます。

残念ながら、アクセスしようとしているユーザーフォームがその機能を公開していない場合は、フォーム自体でしかアクセスできず、他にはできることはほとんどありません。

アドインを完全に書き直すか、機能を公開する目的で保護されていないことを確認してください。

+0

私はいくつかのハックを行い、それは私がそれを公開するために変更する必要があるuserformの何かがありますか? workbookName.FormName を使用して別のブックから参照すると、ユーザーフォームを認識できません。 – user3759627

+0

また、WorkbookName.FormName.ButtonName.Valueが直接のウィンドウでは動作しますが、他のワークブックにある私のSubでは動作しない理由はありますか? – user3759627

関連する問題