2015-03-03 1 views
0

Я использую этот макрос уже много лет, и совсем недавно связанная с ним связанная с ним макрокоманда прекратила выполнение кода. Тем не менее, я могу запустить макрос, выбрав его из списка макросов на вкладке разработчика. Выполнение этого способа работает, однако код разбивается на конец и приводит к ошибке времени выполнения «32809», определяемой приложением или объектной ошибкой. Странно, что код отлично подходит для моего сотрудника, сидящего рядом со мной, используя тот же файл.excel macro run, но приводит к ошибке времени выполнения «32809», определяемой приложением или объектной ошибкой

Вот пример кода, который влезает в стороне дна на этой линии:. Sheets («Front») Выберите

Я искал этот вопрос на многих форумах и попытался удалением * .exd файлов как это было предложено, но это не решает проблему. Любая помощь с этим очень ценится.

Код:

Sub Import() 

    Dim i As Integer 

    Application.ScreenUpdating = False 

    Sheets("Control").Visible = True 
    Sheets("DataDump").Visible = True 

    If Weekday(Date) = 2 Then 
     COB = Date 
    Else 
     COB = Date - 1 
    End If 

    Range("dc_COB_Current").Value = COB 

    Application.Calculation = xlCalculationManual 

    Dim xTime() As Date 
    Application.GoTo "dd_Control" 
    Set xRange = Range(Range("dd_Control"), Cells(Range("dd_Control").End(xlDown).Row, Range("dd_Control").End(xlToRight).Column)) 
    EmptyRpts = 0 

    ReDim Preserve cn(1 To xRange.Rows.Count) 
    ReDim Preserve rs(1 To xRange.Rows.Count) 
    ReDim Preserve xTime(1 To xRange.Rows.Count) 

    For i = 1 To xRange.Rows.Count 
     If xRange(i, 2) = "Y" Then 
      cnOpen (i) 
      If xRange(i, 5).Value <> "ALL" Then 
       xRange(i, 8).Value = Get_Sql(xRange(i, 5), xRange(i, 6), xRange(i, 7)) 
      Else 
       xRange.Worksheet.Calculate 
      End If 
      xTime(i) = Now 
      rs(i).Open xRange(i, 8).Value, cn(i), adOpenForwardOnly, , adAsyncExecute 
     End If 
    Next 

TotState = 1 
Do Until TotState = 0 
    TotState = 0 
    For i = 1 To xRange.Rows.Count 
     Select Case rs(i).STATE 
      Case Is = ObjectStateEnum.adStateClosed '0 
      Case Is = ObjectStateEnum.adStateConnecting '2 
      Case Is = ObjectStateEnum.adStateExecuting '4 
      Case Is = ObjectStateEnum.adStateOpen '1 
       xRange(i, 9).Value = (Now - xTime(i)) * 24 * 60 * 60 
       DataDrop i, xRange(i, 4) 
       rs(i).Close 
       cn(i).Close 
     End Select 
     TotState = TotState + rs(i).STATE 
    Next 
Loop 

    Application.Calculation = xlCalculationAutomatic 

Sheets("Front").Select 

'Sheets("Control").Visible = xlSheetVeryHidden 
'Sheets("DataDump").Visible = xlSheetVeryHidden 

Application.ScreenUpdating = False 

End Sub 
+0

Похоже, что ваш лист «Front» был поврежден обновлением Microsoft KB2553154. То же самое случилось со мной с некоторыми листами, с которыми я работаю. Вероятно, вам придется заново создать лист и скопировать код. – Dave

+0

Thank Dave, есть ли исправление к этому обновлению? Также как это может не работать для меня, но работать для кого-то другого, используя тот же файл, но на другом компьютере? –

ответ

1

Я имел эту ошибку и решить, установив KB2553154.

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