Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2015, 16:01   #1
Loshara
Пользователь
 
Регистрация: 18.03.2015
Сообщений: 46
По умолчанию On error resume не хочет работать

Уважаемые знатоки

У меня при выполнении программы (частично код приведен ниже) при чтении csv файла возникает ошибка "файл занят" (это бывает). Приходится "вручную" нажимать "кнопку" - "ДАЛЕЕ". Я планировал, что если внесу в вызывающих подпрограммах строку On Error Resume Next при возникновении данной ошибки "курсор" выполнения вернется обратно и продолжет выполнение следующей части программы, но этого не происходит. Как заставить работать в этом случае эту команду?

Код:
Sub auto_open()

...
On Error Resume Next
...
If Ping("172.18.13.112") Then
b = dan_petch(Dtn, dtk1)
b = dan_petch1(Dtn, dtk1)
b = dan_petch2(Dtn, dtk1)
b = dan_petch3(Dtn, dtk1)
End If

Application.OnTime Now + TimeValue("00:13:00"), "ontimer1"

End Sub

Function dan_petch(dr1 As String, dr2 As String)

...

Sheets(3).Select
Cells.Select
Selection.ClearContents
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\172.18.13.112\Archiv\Pech1_pr\P_1_Pr0.csv", Destination:=Range("$A$1" _
        ))
        .Name = "P_1_Pr0"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertEntireRows
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1251
        .TextFileStartRow = 2
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
        .Delete
    End With
...
End Function

Sub ontimer1()
...

If Ping("172.18.13.112") Then
b = dan_petch(Dtn, dtk1)
b = dan_petch1(Dtn, dtk1)
b = dan_petch2(Dtn, dtk1)
b = dan_petch3(Dtn, dtk1)
End If
Application.OnTime Now + TimeValue("00:13:00"), "ontimer1"

End Sub
Loshara вне форума Ответить с цитированием
Старый 16.07.2015, 16:10   #2
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Не туда строку влепили. Строку надо ставить перед строками, обозначающими открытие файла.
Кардаган вне форума Ответить с цитированием
Старый 16.07.2015, 16:17   #3
Loshara
Пользователь
 
Регистрация: 18.03.2015
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Кардаган Посмотреть сообщение
Не туда строку влепили. Строку надо ставить перед строками, обозначающими открытие файла.
НЕт влепил туда куда нужно. поверьте (можете проверить) . когда во вложенной процедуре возникает ошибка то "передвигается" (игнорируя тело процедуры) в вызывающей на следующую строку. именно это и нужно.
Loshara вне форума Ответить с цитированием
Старый 16.07.2015, 16:39   #4
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

А не пробовали имитировать нажатие кнопки "Далее" ?

csv файлы можно открывать через Excel
27102014 вне форума Ответить с цитированием
Старый 16.07.2015, 16:44   #5
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Как вариант заменить On Error Resume Next на On Error GoTo

Или скомбинировать обработчики ошибок таким образом, чтобы после возникновения ошибки макрос выходил к месту, с которого мог бы продолжить работу
27102014 вне форума Ответить с цитированием
Старый 16.07.2015, 16:54   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Попробуйте
Код:
Application.DisplayAlerts = False
Перед окончанием макроса не забудьте переключить на True.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.07.2015, 20:14   #7
Loshara
Пользователь
 
Регистрация: 18.03.2015
Сообщений: 46
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
А не пробовали имитировать нажатие кнопки "Далее" ?

csv файлы можно открывать через Excel
Цитата:
Сообщение от 27102014 Посмотреть сообщение
Как вариант заменить On Error Resume Next на On Error GoTo

Или скомбинировать обработчики ошибок таким образом, чтобы после возникновения ошибки макрос выходил к месту, с которого мог бы продолжить работу
А как это сделать?
Loshara вне форума Ответить с цитированием
Старый 16.07.2015, 20:15   #8
Loshara
Пользователь
 
Регистрация: 18.03.2015
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Попробуйте
Код:
Application.DisplayAlerts = False
Перед окончанием макроса не забудьте переключить на True.
Попробую . Но что эта команда значит
Loshara вне форума Ответить с цитированием
Старый 16.07.2015, 20:20   #9
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Loshara Посмотреть сообщение
Попробую . Но что эта команда значит
Судя по виду - отключает выводимые сообщения. Слово Alerts сами переведете?
Iron Monk вне форума Ответить с цитированием
Старый 16.07.2015, 21:19   #10
Loshara
Пользователь
 
Регистрация: 18.03.2015
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Судя по виду - отключает выводимые сообщения. Слово Alerts сами переведете?
С переводом я разобрался сразу, но что команда делает не совсем понятно. Какие сообщения отключаются. если сообщение предупреждения это не совсем то что нужно, если уведомления о ошибке другой вопрос. Но судя по синтаксису скорее всего первое. Похоже что Bezdar в своем стате http://programmersforum.ru/showthread.php?t=280544 столкнулся с подобной проблемой

Последний раз редактировалось Loshara; 16.07.2015 в 21:24.
Loshara вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа не хочет работать OperaNeMini Софт 15 02.12.2012 16:24
Не хочет работать таймер gmmjob C# (си шарп) 1 05.06.2012 07:44
fabs() не хочет работать Razza Общие вопросы C/C++ 2 28.12.2010 02:21
Не хочет работать iif alco84 Microsoft Office Access 6 18.03.2010 09:48
Не хочет работать OpenPictureDialog guffer Общие вопросы Delphi 4 08.07.2009 20:14