Ошибка времени выполнения '1004' Метод PasteSpecial класса Worksheet потерпел неудачу (только при открытом CHROME) - PullRequest
0 голосов
/ 19 октября 2019

Я недавно столкнулся с этой ошибкой. Я не уверен, где это происходит. Я запускал этот фрагмент кода буквально тысячи раз, и сегодня по какой-то глупой причине он не работает. Я смотрел на этот код, и он не менялся месяцами, в дополнение к этому все еще есть тот же код, который генерирует инструмент записи VBA. Это сообщение об ошибке: Error Message

, и это бит кода, на котором застряла моя программа:

Sheets("Sheet1").Select
Cells(wHeaders, 1).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks(CurrWB).Activate
Sheets(CurrSheet).Select
Sheets(CurrSheet).Activate

Cells(CurrRow, CurrCol).Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False, NoHTMLFormatting:=True     'THIS IS THE LINE WITH THE ERROR

ActiveSheet.Paste
Selection.EntireColumn.AutoFit

Поскольку не былоизменения и что построитель кода все еще создает эту же строку, я очень запутался. Помощь была бы потрясающей. Кроме того, потому что я знаю, что вы все спросите, да, мои переменные определены.

Dim CurrSheet As Variant
Dim CurrWB As Variant
Dim CurrCol As Variant
Dim CurrRow As Variant

Существует один последний, который передается в Sub, и это Sub CoolProg(Optional wHeaders As Integer = 1)

ОБНОВЛЕНИЕ: Я не уверен, почему этослучай, но ошибка, кажется, исчезает, когда я делаю следующее редактирование в строке, где идет отладчик.

Worksheets(CurrSheet).PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False ', NoHTMLFormatting:=True

Все, что я сделал, это закомментировал раздел NoHTMLFormatting, может кто-нибудь помочь мне понять, почему это работает и, возможно, что является основной причиной этой ошибки. Я хочу убедиться, что я понимаю это, чтобы я мог исправить, какой код мне нужен.

Update # 2 .... Так что эта ошибка возникает только тогда, когда у меня открыто окно Google Chrome, и я запускаю этот код. Я закрыл Chrome, и это сработало. Была похожая задача, которая основывалась на этом, но я знаю, что она ОЧЕНЬ тяжелая для вычислений, и она использует эту подпрограмму внутри, и я не смог пройти через нее. Я проверил диспетчер задач и увидел, что Chrome был наверху (PS он высасывает ресурсы), поэтому я убил, и теперь он работает. Если кто-то может объяснить, что происходит, это было бы удивительно.

Обновление # 3

Я добавил 2-секундную паузу до запуска проблемной линии, и, похоже, проблема решена. Я не уверен, почему это работает, но кажется, что есть больше ресурсов, и моим машинам нужно время, чтобы освободить некоторые ресурсы, чтобы это работало. Если у кого-то есть понимание того, почему это решение работает, это было бы замечательно. Код теперь выглядит так:

Cells(CurrRow, CurrCol).Select

Application.Wait (Now + TimeValue("0:00:02")) 'Added this line for the delay
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False, NoHTMLFormatting:=True 'this is the problem code
...