Как исправить ошибку во время выполнения 1004 в Excel —

Ошибка выполнения 1004 — это код ошибки, относящийся к Microsoft Visual Basic, который, как известно, влиял на пользователей Microsoft Excel. Как известно, эта ошибка наиболее распространена в Excel 2003 и Excel 2007, хотя ни одна из версий популярного приложения Microsoft для работы с электронными таблицами не защищена от угрозы «Ошибка времени выполнения 1004. В большинстве случаев пользователи, затронутые этой проблемой, видят одно из два различных варианта ошибки времени выполнения 1004. В целом два варианта ошибки времени выполнения 1004 имеют вид:

«Ошибка во время выполнения 4 1004 ’:
Не удалось скопировать метод класса листа
»

«Ошибка во время выполнения 4 1004 ’:
Ошибка приложения или объекта
»

Точное сообщение об ошибке, которое вы видите, может также немного отличаться, в некоторых случаях, хотя код ошибки останется прежним. Однако независимо от того, с какой версией проблемы вы столкнулись, она почти всегда возникает при запуске макроса в Excel, который предназначен для копирования рабочих листов и последующего размещения копий в той же рабочей книге, что и исходная рабочая таблица.

В отличие от наихудших технических проблем, причина ошибки 1004 во время выполнения в Microsoft Excel известна. Ошибка 1004 времени выполнения возникает, когда выполняемый макрос копирует исходную рабочую таблицу в рабочую книгу с определенным именем, которое вы не сохранили и не закрыли до запуска макроса. Пример такого макроса можно увидеть в следующем коде:

Sub CopySheetTest ()
Dim iTemp As Integer
Dim oBook As Workbook
Dim iCounter As Integer
Создать новую пустую книгу:
iTemp = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Set oBook = Application.Workbooks.Add
Application.SheetsInNewWorkbook = iTemp
Добавить определенное имя в книгу
'Относится к диапазону:
oBook.Names.Add Name: = "tempRange", _
RefersTo: = "= Лист1 $ A $ 1!"
Сохранить рабочую книгу:
oBook.SaveAs "c: \ test2.xls"
'Скопируйте лист в цикле. В конце концов,
'вы получите ошибку 1004: метод копирования
«Класс рабочего листа не выполнен.
Для iCounter = 1 до 275
oBook.Worksheets (1). Копия после: = oBook.Worksheets (1)
следующий
End Sub

Поскольку причина ошибки 1004 времени выполнения в контексте Microsoft Excel известна, также как и ее разрешение. В дополнение к решению этой проблемы пользователям, затронутым ею, также доступен обходной путь, который можно использовать в случае, если решение не работает или они не находят решение приемлемым вариантом.

Решение:

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

Sub CopySheetTest ()
Dim iTemp As Integer
Dim oBook As Workbook
Dim iCounter As Integer
Создать новую пустую книгу:
iTemp = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Set oBook = Application.Workbooks.Add
Application.SheetsInNewWorkbook = iTemp
Добавить определенное имя в книгу
'Относится к диапазону:
oBook.Names.Add Name: = "tempRange", _
RefersTo: = "= Лист1 $ A $ 1!"
Сохранить рабочую книгу:
oBook.SaveAs "c: \ test2.xls"
'Скопируйте лист в цикле. В конце концов,
'вы получите ошибку 1004: метод копирования
«Класс рабочего листа не выполнен.
Для iCounter = 1 до 275
oBook.Worksheets (1). Копия после: = oBook.Worksheets (1)
«Раскомментируйте этот код для обходного пути:
«Сохранять, закрывать и открывать после каждых 100 итераций:
Если iCounter Mod 100 = 0, то
oBook.Close SaveChanges: = True
Set oBook = Nothing
Set oBook = Application.Workbooks.Open ("c: \ test2.xls")
End If
следующий
End Sub

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

Обходной путь:

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

  1. запуск превосходить.
  2. Создать новую рабочую книгу и удалять каждый отдельный лист содержит только один.
  3. Формат Рабочая тетрадь.
  4. Добавьте любой текст, данные и / или диаграммы, которые вы хотите иметь в шаблоне по умолчанию, на единственный лист, который теперь содержит книга.
  5. Если вы используете Excel 2003 или более раннюю версию, нажмите на файл Сохранить как. Если вы используете Excel 2007 или более поздней версии, с другой стороны, нажмите на Microsoft Office кнопку, а затем нажмите на Сохранить как.
  6. в Имя файла: В поле введите любой желаемый шаблон.
  7. Откройте раскрывающееся меню рядом с Сохранить как тип: поле и нажмите на превосходить Шаблон (.xlt) если вы используете Excel 2003 или более раннюю версию, или превосходить Шаблон (.xltx) если вы используете Excel 2007 или более поздней версии, чтобы выбрать его.
  8. Нажмите на Сохранить.
  9. После того, как вы успешно создали шаблон, вы можете вставить его программно, используя следующую строку кода:
    Sheets.Add Type: =дорожка\имя файла

Замечания: В строке кода, описанной выше, путь \ имя_файла Необходимо заменить полным путем (включая полное имя файла) для местоположения шаблона листа, который вы только что создали.

Ссылка на основную публикацию
Adblock
detector