2013-08-13 3 views
2

Я закончил создание базы данных и отлично работает на моем компьютере. Я использую доступ к 2013 году, а в своем коде VBA я написал обработчик ошибок для каждой функции/sub, который я использую в большинстве баз данных. Однако пользователи, для которых он предназначен, имеют Access run-time 2007 и каждый раз, когда я запускаю его на своей машине, я получаю неустранимую ошибку «Выполнение этого приложения прекращено из-за ошибки времени выполнения».Запуск базы данных во время выполнения приводит к ошибке

Код для командной кнопки.

Option Compare Database

Private Sub Command0_Click() 
Dim ErrorStep As String 
DoCmd.SetWarnings False 
'------------------------------------------------------------------------------------- 
' Procedure : Command0_Click 
' Author : Chris Sparkes 
' Date  : 13/08/2013 
'------------------------------------------------------------------------------------- 
ErrorStep = "1 - Cleansing Records" 
DoCmd.OpenQuery "qry1_3" 
DoCmd.OpenQuery "qry4-7" 
DoCmd.OpenQuery "qry9" 

Call ExcelOutputReport 

Exit_Command0_Click: 
On Error GoTo 0 
Exit Sub 

Command0_Click_Error: 
MsgBox "Error in procedure Command0_Click of VBA Document." 
GoTo Exit_Command0_Click 
On Error GoTo 0 

End Sub 


Public Function ExcelOutputReport() 

Dim ErrorStep As String 
DoCmd.SetWarnings False 
'--------------------------------------------------------------------------------------- 
' Procedure : ExcelOutputReport 
' Author : Chris Sparkes 
' Date  : 13/08/2013 
'--------------------------------------------------------------------------------------- 
ErrorStep = "1 - Cleansing Records" 

Dim dbLocal As DAO.Database 
    Dim tbloutput As DAO.Recordset 
    'DAO Declarations 

    Dim objExcel As New Excel.Application 
    Dim objWorkbook As Excel.Workbook 
    Dim objWorksheet As Excel.Worksheet 


    Dim IntCurrTask As Integer 
    Dim blurb As String 

    Set dbLocal = CurrentDb() 
    Set tbloutput = dbLocal.OpenRecordset("tbl_output") 

    Set objExcel = CreateObject("Excel.Application") 
    Set objWorkbook = objExcel.Workbooks.Open("G:\Enliven Sales     Report\Envliven_Report_Template_1.xls") 
    Set objWorksheet = objWorkbook.Worksheets("Enliven") 

    objExcel.Visible = True 
    objWorkbook.Windows(1).Visible = True 

    tbloutput.MoveFirst 
    IntCurrTask = 2 

Do While Not tbloutput.EOF 
    With objWorksheet 

    .Cells(IntCurrTask, 1).Value = tbloutput![CustomerOrderCode] 
    .Cells(IntCurrTask, 2).Value = tbloutput![CustomerCode] 
    .Cells(IntCurrTask, 3).Value = tbloutput![CustomerDescription] 
    .Cells(IntCurrTask, 4).Value = tbloutput![ItemCode] 
    .Cells(IntCurrTask, 5).Value = tbloutput![ItemDescription] 
    .Cells(IntCurrTask, 6).Value = tbloutput![DateOrderPlaced] 
    .Cells(IntCurrTask, 7).Value = tbloutput![CustomerDueDate] 
    .Cells(IntCurrTask, 8).Value = tbloutput![Quantity] 
    .Cells(IntCurrTask, 9).Value = tbloutput![ShippedQuantity] 

      End With 

     IntCurrTask = IntCurrTask + 1 
     tbloutput.MoveNext 
    Loop 

    tbloutput.Close 
    dbLocal.Close 

    DoCmd.SetWarnings True 

     Set tbloutput = Nothing 
     Set dbLocal = Nothing 
     Set objWorksheet = Nothing 
     Set objWorkbook = Nothing 
     Set objExcel = Nothing 

Exit_ExcelOutputReport: 
    On Error GoTo 0 
    Exit Function 

ExcelOutputReport_Error: 
    MsgBox "Error at in procedure ExcelOutputReport of VBA Document." 
    GoTo Exit_ExcelOutputReport 

    End Function 

Кто-нибудь есть какие-либо идеи, что может быть причиной этого? Ссылки должны быть точными, поскольку я использую те же самые, которые, как я знаю, работали с разными базами данных, которые я создал.

Спасибо, Chris

+0

Я бы предположил, что вы включили предупреждения (закомментируйте SetWarnings false) и повторите попытку. – dwo

+0

К сожалению, похоже, не произошло. – Chrislaar123

+0

Можете ли вы показать нам запросы и остальную часть кода (функция ExcelOutputReport) ?! – dwo

ответ

1

Вы добавили подпрограммы ошибок, но вы не активировали их. В начале ваших методов, добавьте On Error Goto заявления:

Private Sub Command0_Click() 
    On Error Goto Command0_Click_Error 
    ... 
End Sub 

Public Function ExcelOutputReport() 
    On Error Goto ExcelOutputReport_Error 
    ... 
End Sub 

В ваших подпрограммах ошибок, вы должны отображать (по крайней мере) содержание Err.Description вместо общего сообщения об ошибке. В противном случае вам будет очень сложно отслеживать источник ошибок. Например:

MsgBox "Error in procedure Command0_Click: " & Err.Description 
+0

Спасибо! Хорошо, это сработало, видимо, это ошибка в Command0_click(). Я посмотрю на это и попытаюсь разобраться. Еще раз спасибо. – Chrislaar123

Смежные вопросы