powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA (excel)
5 сообщений из 5, страница 1 из 1
VBA (excel)
    #39296837
avpetrov27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть макрос который по времени отрабатывает часа 4.
Макрос скачивает данные с сайта. Результат - много excel файлов с данными.
Описание проблемы:
Запустил Макрос на вечер. Заблокировал учётную запись(Win + L).
Утром обнаружил, что макрос остановился где-то через 25 минут после начала(Судя по времени скачанных файлов).
В Диспетчере задач для Excel указано значение "не отвечает".

Подскажите, с чем может быть связана эта остановка?

Текст макроса.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Sub DownloadPages()
'
' Макрос1 Макрос
'

'
    'отключаем отображения
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    On Error Resume Next
    
    Dim iteratorID As Long
    
    Dim curBook As Workbook
    Dim curSheet As Worksheet
    
    Dim path As String
    
    path = GetFolderPath("Выберите папку для сохранения", ThisWorkbook.path)
    
    For iteratorID = 1 To 10000  '20000
        Set curBook = Application.Workbooks.Add

        Set curSheet = curBook.ActiveSheet
        
        
        With curSheet.QueryTables.Add(Connection:= _
            "URL;http://www.rlsnet.ru/mnn_index_id_" & iteratorID & ".htm", Destination:=Range("$A$1"))
            '.CommandType = 0
            .Name = "mnn_index_id_" & iteratorID
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingNone
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With

        curBook.SaveAs path & "mnn_index_id_" & iteratorID
        curBook.Close
    
    Next
    'включаем отображения
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    MsgBox ("Готово!")
End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _
                       Optional ByVal InitialPath As String = "c:\") As String
    ' функция выводит диалоговое окно выбора папки с заголовком Title,
    ' начиная обзор диска с папки InitialPath
    ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора
    Dim PS As String: PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        If .Show <> -1 Then Exit Function
        GetFolderPath = .SelectedItems(1)
        If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function
...
Рейтинг: 0 / 0
VBA (excel)
    #39296961
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avpetrov27,
посмотри, что в mnn_index_id_106
...
Рейтинг: 0 / 0
VBA (excel)
    #39297192
avpetrov27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
id = 1228 скачал.
Остановился на номере 1229.
Защита от перебоев с несуществующими адресами стоит.
On Error Resume Next
Если адреса нет, то сохраняется пустая книга.
...
Рейтинг: 0 / 0
VBA (excel)
    #39297769
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avpetrov27,
может на сайте стоит защита от "заимствования" ;) информации? Попробуйте паузу делать между запросами.
...
Рейтинг: 0 / 0
VBA (excel)
    #39298227
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avpetrov27Защита от перебоев с несуществующими адресами стоит.
On Error Resume NextЭто не защита от перебоев с адресами - это игнорирование любых ошибок, введение себя в ступор и потеря времени на поиск проблем. Если есть необходимость защитить какой-то участок кода, то там и только там должен стоять On Error Resume Next и обязательно после должен стоять On Error Goto 0.
Ваше "не отвечает" может быть вызвано зацикливанием, переполнение. делением на 0 и т.п., а вы запретили программе нормально остановиться и рассказать вам причину проблемы.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA (excel)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]