2016-12-06 8 views
1

次のvbコードは、特定のレコードでデータベースフォームを開きます。私は、フォーム上のボタンに添付されているイベントプロシージャを実行したいと思います。私はプロシージャを実行するマクロを作成しようとしましたが、VBスクリプトを実行しているときにプロシージャが見つかりません。私はイベントの手続きをプライベートからパブリックに変えてみようとしたこともありません。私はまた、Macro1の代わりにプロシージャの名前を入れてみることさえしようとしました。私はおそらく何が欠けている可能性があります。ここでフォームを開いた後にvbスクリプトからアクセスイベントプロシージャを実行する方法

は、VBスクリプトである:ここで

Set accessApp = CreateObject("Access.Application") 
accessApp.OpenCurrentDataBase "M:\Shared Documents\Job Cost Analysis\TRAINING JOBCOST ANALYSIS DATABASE\Job_Cost_Analysis_Tracking_Training.accdb", false 
accessApp.visible = true 
accessApp.UserControl = true 


accessApp.DoCmd.OpenForm "frmClients", , , "Clients!client_id= 100005 ", , acWindowNormal, True 
accessApp.Forms("frmClients").status_ID=3 
accessApp.Run "cmdImportItemStmt_Click" 
accessApp.Forms("frmClients").status_ID=34 
accessApp.Save 

は、アクセスの手順である:(あなたに基づいて)テストのための

Private Sub cmdImportItemStmt_Click() 
On Error GoTo Problems 

Dim filename As String 

'***** CHECK TO MAKE SURE STATUS IS IN ITEMIZED STATEMENT IMPORT *********** 
If Me.status_ID.Column(1) = 3 Then 

    If IsNull(Me.frmItemizedStmtTotals("AMT DISPUTED").Value) = True Then 

     filename = (copyQueue & "CLIENT_" & CStr(Me.client_ID.Value) & "\Client_" & CStr(Me.client_ID.Value) & ".xlsx") 

     DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "Sheet1", filename, True 

     DoCmd.SetWarnings (WarningsOff) 
     '**********APPEND ITEMIZED STATEMENT*********** 
     DoCmd.OpenQuery "append_itemized_stmt_import" 

     '**********UPDATE ITEMIZED STATEMENT W/ REASON CODES*********** 

     DoCmd.OpenQuery "Update_reason_codes_by_desc_null_revcodes" 
     DoCmd.OpenQuery "Update_reason_codes_by_desc" 

     '************** If facility is OHSU remove non-billable items per contract********** 

     If Me.facility_ID = 102 Then 
     DoCmd.OpenQuery "qryOHSU_nonbillable" 
     End If 

     '************************************************************** 

     Me.frmISAmtsByRevenueCodes.Requery 
     Me.frmItemizedStmtTotals.Requery 

     DoCmd.DeleteObject acTable, "Sheet1" 

     DoCmd.SetWarnings (WarningsOn) 

    Else 

     MsgBox "UNABLE TO IMPORT IS RECORDS BECAUSE THE ITEMIZED" & vbCrLf & _ 
      "STATEMENT'S TOTAL BILLED CHARGES ALREADY HAS A" & vbCrLf & _ 
      "BALANCE > THAN ZERO INDICATING A PREVIOUS IMPORT", vbOKOnly, "UNABLE TO IMPORT IS RECORDS" 

    End If 

Else 

    MsgBox "INACCURATE CLAIM REVIEW STATUS" & vbCrLf & _ 
     "FOR ITEMIZED STATEMENT IMPORT", vbOKOnly, "INACCURATE CLAIM REVIEW STATUS" 

End If 

RecalculateTotals 
Exit Sub 

Problems: 
Err.Clear 
Resume Next 

End Sub 
+0

http://stackoverflow.com/questions/20403424/script-to-open-access-database-run-macro-and-persist-access-instance – Zam

+0

間違い 'Sub'がPUBLIC'として宣言する必要があります' – Zam

+0

' accessApp.Run "Macro1" 'procを実行しようとしています' Macro1'はあなたのものではありません 'cmdImportItemStmt_Click()' – Zam

答えて

1

VBSスクリプト:

Set accessApp = CreateObject("Access.Application") 
accessApp.OpenCurrentDataBase "C:\Temp\Database1.mdb" 
accessApp.UserControl = true 

accessApp.Run "Test1" 

とテストMS Accessデータベースのコード。

enter image description here

あなたは問題なくそれを実行することができますか?

+0

はい、これは動作しますが、フォームを開いてもまだ動作しません – SikRikDaRula

0

この手順でMe.Forms!frmClients!に変更することで、動作させることができました。私はVBスクリプトがMe.が好きではなかったと思います。なぜなら、スクリプトはアクセス外で実行されるからです。

Public Sub ImportItemStmt() 
On Error GoTo Problems 

Dim filename As String 


'***** CHECK TO MAKE SURE STATUS IS IN ITEMIZED STATEMENT IMPORT *********** 
If Forms!frmClients!status_ID.Column(1) = 3 Then 

    If IsNull(Forms!frmClients!frmItemizedStmtTotals("AMT DISPUTED").Value) = True Then 

     filename = (copyQueue & "CLIENT_" & CStr([Forms]![frmClients]![client_ID].Value) & "\Client_" & CStr([Forms]![frmClients]![client_ID].Value) & ".xlsx") 

     DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "Sheet1", filename, True 

     DoCmd.SetWarnings (WarningsOff) 
     '**********APPEND ITEMIZED STATEMENT*********** 
     DoCmd.OpenQuery "append_itemized_stmt_import" 

     '**********UPDATE ITEMIZED STATEMENT W/ REASON CODES*********** 

     DoCmd.OpenQuery "Update_reason_codes_by_desc_null_revcodes" 
     DoCmd.OpenQuery "Update_reason_codes_by_desc" 

     '************** If facility is OHSU remove non-billable items per contract********** 

     If Forms!frmClients!facility_ID = 102 Then 
     DoCmd.OpenQuery "qryOHSU_nonbillable" 
     End If 

     '************************************************************** 

     Forms!frmClients!frmISAmtsByRevenueCodes.Requery 
     Forms!frmClients!frmItemizedStmtTotals.Requery 

     DoCmd.DeleteObject acTable, "Sheet1" 

     DoCmd.SetWarnings (WarningsOn) 

    Else 

     MsgBox "UNABLE TO IMPORT IS RECORDS BECAUSE THE ITEMIZED" & vbCrLf & _ 
      "STATEMENT'S TOTAL BILLED CHARGES ALREADY HAS A" & vbCrLf & _ 
      "BALANCE > THAN ZERO INDICATING A PREVIOUS IMPORT", vbOKOnly, "UNABLE TO IMPORT IS RECORDS" 

    End If 

Else 

    MsgBox "INACCURATE CLAIM REVIEW STATUS" & vbCrLf & _ 
     "FOR ITEMIZED STATEMENT IMPORT", vbOKOnly, "INACCURATE CLAIM REVIEW STATUS" 

End If 

'RecalculateTotals 
Exit Sub 

Problems: 
Err.Clear 
Resume Next 
End Sub 
関連する問題