Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Макрос выгрузки данных в файл

Автор Bomont, 12.05.2011, 13:03

« назад - далее »

Bomont

Добрый день, уважаемые форумчане!

Есть макрос, вот часть его кода:

                For m = 1 To 100 'перебираем ячейки
                   If Sheets("Output").Cells(m, 11).Value <> "" Then
                       MyFile = Sheets("Output").Cells(m, 11).Value ' путь к файлу указан в соседней ячейке
                       Open MyFile For Output As #1 'открываем файл для чтения
                       Print #1, Sheets("Output").Cells(m, 8).Value 'записываем все что есть в ячейке
                       Close #1
                   End If
               Next m


Вот какая незадача возникла. Этот макрос выгружает данные в текстовые файлы на комп в локальной сети каждую минуту (т.е. путь например такой \\ABS\A\1.txt). И возникла ситуация, что комп ABS временно был недоступен, макрос выдал ошибку и прекратил расчет. Как сделать, чтобы если нет доступа к компу, то макрос просто пропускал код выгрузки? (т.е. ну нет доступа, пропустили выгрузку, в следующую минуту если доступ появился - выгрузку сделал).

Спасибо!

Andrey Lenets

Цитата: Bomont от 12.05.2011, 13:03
Как сделать, чтобы если нет доступа к компу, то макрос просто пропускал код выгрузки? (т.е. ну нет доступа, пропустили выгрузку, в следующую минуту если доступ появился - выгрузку сделал).
добавьте первой строчкой в макросе следующий код:
On Error Resume Next
  :P

Bomont

Спасибо, работает!
Последний нюанс, можно если возникает ошибка - записать куда нибудь в ячейку сообщение об ошибке?

Andrey Lenets

Цитата: Bomont от 12.05.2011, 14:24
Спасибо, работает!
Последний нюанс, можно если возникает ошибка - записать куда нибудь в ячейку сообщение об ошибке?
как-то так:
                For m = 1 To 100 'перебираем ячейки
                    Err.Clear
                    If Sheets("Output").Cells(m, 11).Value <> "" Then
                        MyFile = Sheets("Output").Cells(m, 11).Value ' путь к файлу указан в соседней ячейке
                        Open MyFile For Output As #1 'открываем файл для чтения
                        Print #1, Sheets("Output").Cells(m, 8).Value 'записываем все что есть в ячейке
                        Close #1
                    End If
                    If Err.Number <> 0 Then Sheets("Output").Cells(m, 13).Value = Err.Number & " - " & Err.Description
                Next m


Bomont