2016-04-30 1 views
2

私はVBでのMS Accessのフォームでボタンをクリックしようとしています。しかし、私はこの分野で見つけることができず、ボタンを手に入れるにはちょっとした方法があります。その後、私は立ち往生しています - クリックイベントをアクティブにする方法がないようです。VB.Netを使用してアクセスのコマンドボタンをクリックする

acc.Application.Run(btn.OnClickMacro) 
acc.Application.Run(btn.OnClick) 
btn.OnClickMacro 
btn.OnClick 
btn.performclick() 

のどれも:私は次のことをしようとの推測を持っていた

Dim acc As New Access.Application 
acc.OpenCurrentDatabase("C:\path\to\db\aDatabase.accdb") 
acc.Visible = True 
For i = 0 To acc.Forms.Count - 1 
    If acc.Forms.Item(i).Name = "formName" Then 
     For j = 0 To acc.Forms.Item(i).Controls.Count - 1 
      If acc.Forms.Item(i).Controls.Item(j).name = "btnEnter" Then 
       Dim btn As Access.CommandButton = acc.Forms.Item(i).Controls.Item(j) 
       ' 
       ' click on button?? 
       ' 
      End If 
     Next 
    End If 
Next 

Imports Microsoft.Office.Interop 

を、私はボタンを取得するには、次のしている:使用

作業。

答えて

0

デフォルトでは、クリックイベントハンドラは、それが(開発者が意図的にそれを宣言しない限り、プライベートだ場合は、プログラムでアクセスVBAコードの外のボタンをクリックすることができません

Private Sub Command0_Click() 
    ' do something 
End Sub 

としてVBAで宣言されていますパブリック)。ベストプラクティスは、コードでボタンをクリックするのではなく、ハンドラによって呼び出される関数を他の場所でも呼び出せるようにすることです。

Private Sub Command0_Click() 
    DoSomething 
End Sub 

' you would have a better chance calling this from .NET 
Public Sub DoSomething() 
    ' do something 
End Sub 

あなたは、このようなマウスクリックを自動化するために何かを使用することができます.NETの外に、あなたは、アクセスVBAコードへのアクセスを持っていない場合:https://autohotkey.com/

+0

はい、私は外部のプログラムを避け、プライベートサブのボタンをクリックしたいと思います。私がボタンを参照することができれば、確かにイベントを発生させる方法がなければならない。 – area9

+0

http://www.mrexcel.com/forum/excel-questions/68143-call-private-sub-different-module.htmlから 'acc.Run(" formName!Command0_Click ")'またはバリアントを試してください – djv

+0

nope - いくつかの品種を試してみると、それが見つからないというエラーが発生する – area9

0

を私が意味する、あなたがアクセスintslledを持っている必要があれば、開いて実行して、なぜそのようなコードがAccessから実行されていないのですか?だから、そのようなコードを.netから呼び出すのは大いに意味がありません。 しかし、単に公共、民間のサブのクリックを行い、その後、あなたは、このフォームを使用することができます。

MyAccessApp.Forms("main").command44_click 

だから、など任意の外部関数を作成する必要はありませんが、あなたは直接そのコードを呼び出したい場合フォームを開く必要があります。そのアプリケーションの実行インスタンスが.netである場合、上記の構文が有効になります。

ここではAccessを使用することをお勧めしますが、なぜ.netが関係しているのかはわかりません。