Страницы: 1
RSS
Рандомная ошибка. "Run-time error '-2147417848 (80010108)' Automation error. The object invoked has disconnected from its clients"
 
Excel 2010
Имеет место рандомная ошибка. Т.е. иногда возникает, иногда - нет.
"Run-time error '-2147417848 (80010108)'
Automation error. The object invoked has disconnected from its clients"

Если возникает, то дальнейший дебаг и запуск дает
"Run-time error '1004': Метод Insert класса Range завершен неверно"

Помогите пжл. В каком направлении искать. Спасибо.
Код
Sub addOp()
    Dim Name As String
           
    Name = Cells(5, 2)
    Size = Cells(2, 2).Value
    Avr = Cells(6, 2).Value
    Eop = Cells(7, 2).Value
              
    Sheets("tmpl").Copy Before:=Sheets(13)
    Sheets("tmpl (2)").Name = Name
    
    Sheets(Name).Visible = True
    Sheets(Name).Select
    Cells(3, 2) = Name
    Cells(2, 1) = Size
    Cells(1, 2) = Avr
    Cells(2, 2) = Eop
       
'вставка в рублевый лист
    Sheets("tmplFrur").Visible = True
    Sheets("tmplFrur").Select
    Range("B1:B147").Select
    Selection.Copy
    Sheets("resumeRur").Select
    Range("C1").Select
    Selection.Insert Shift:=xlToRight    'вот на этой строке вылетает ошибка. А иногда не вылетает.
    Cells(1, 3) = Avr
    Cells(2, 3) = Eop
    Cells(3, 3) = Name
    Columns("c:m").ColumnWidth = 12.5
  
    
    Sheets("tmplFrur").Visible = False
    Sheets("tmplFcur").Visible = False
    Sheets(Name).Select
    Range("b4").Select
    Application.CutCopyMode = False
End Sub
 
А она возникает скорее всего, потому что макрос у Вас из модуля выполняется и обращается к конкретным ячейкам листам и диапазонам через Select.
Уберите все селекты и лишние переменные, которые в начале даже не описаны. Пропишите нормальные пути к листам и ячейкам. У вас скорее всего не на те листы или имена попадает при выполнении макроса. А вообще пример бы.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
CAHO написал: Пропишите нормальные пути к листам и ячейкам
Что Вы подразумеваете под "нормальными путями"?
Пример, в смысле "файл"?
 
Цитата
vukula написал: нормальные пути к листам и ячейкам
Ну например:
Name = Cells(5, 2)
можно заменить на:
Name = ThisWorkbook.Worksheets("Параметры").Cells(5, 2)
разница в том, что в зависимости от того какой лист или книга буду активны в момент запуска макроса, переменная name будет иметь разные значения, в моем варианте всегда одно значение.
Изменено: justirus - 03.12.2015 01:06:25
 
Например что-то вроде такого
Код
Sub addOp()
    Name = Cells(5, 2)
    Sheets("tmpl").Copy Before:=Sheets(13)
    Sheets("tmpl (2)").Name = Cells(5, 2)
    Sheets(Name).Cells(3, 2) = Name
    Sheets(Name).Cells(2, 1) = Cells(2, 2).Value
    Sheets(Name).Cells(1, 2) = Cells(6, 2).Value
    Sheets(Name).Cells(2, 2) = Cells(7, 2).Value
    Sheets("tmplFrur").Range("B1:B147").Copy
    Sheets("resumeRur").Range("C1").Insert Shift:=xlToRight
    Sheets("resumeRur").Cells(1, 3) = Cells(6, 2).Value
    Sheets("resumeRur").Cells(2, 3) = Cells(7, 2).Value
    Sheets("resumeRur").Cells(3, 3) = Name
    Sheets("resumeRur").Columns("c:m").ColumnWidth = 12.5
    Sheets(Name).Range("b4").Select
    Application.CutCopyMode = False
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Спасибо за участие.
Минимизировал селекты, НО ошибка все равно вылетает.
Выявил следующую зависимость.
Файл сохраняется как шаблон эксель с поддержкой макросов.
Изначально Name забито как "2013" (т.е. год).
Если я открываю файл и запускаю макрос, не меняя Name, ошибка не вылетает.
Если открываю файл и ввожу первый отчетный период, отличный от сохраненного в шаблоне, например, 2014й, ошибка вылетает.
Файл вкладываю.
Изменено: vukula - 23.11.2015 17:20:59
 
вот что говорит микрософт
правда мне это не помогло
Изменено: vukula - 24.11.2015 09:09:47
 
Недавно тоже столкнулся с такой проблемой..
Как оказалось - из-за того что пытался менять значения ячеек на скрытом листе..
Как только перенёс строку "Sheets(Name).Range("b4").Visible = True"
Перед изменением значений, сразу всё стало нормально работать :)
Вдруг кому-то пригодится...
Страницы: 1
Читают тему
Наверх