Як виправити помилку часу запуску 1004 в Excel

Помилка 1004 під час виконання - це код помилки, що стосується Microsoft Visual Basic, який, як відомо, впливає на користувачів Microsoft Excel. Як відомо, помилка є найбільш поширеною у програмах Excel 2003 та Excel 2007, хоча жодна версія популярного додатку Microsoft для робочих таблиць для комп'ютерів не захищена від загрози, яка є помилкою виконання 1004. У більшості випадків користувачі, які постраждали від цієї проблеми, бачать одного із дві різні зміни помилки 1004 виконання часу. У цілому два варіанти помилки 1004 часу виконання:

" Помилка під час виконання" 1004 ":

Помилка методу копіювання класу робочого аркуша »

" Помилка під час виконання" 1004 ":

Помилка, визначена додатком або визначена об'єктом "

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

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

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) Next End Sub 

Оскільки причина помилки 1004 під час виконання в контексті Microsoft Excel відома, як і дозвіл. На додаток до вирішення цієї проблеми, що також доступне для користувачів, які впливають на неї, є рішення, яке може бути використане у випадку, якщо рішення не працює або вони не вважають рішення можливим варіантом.

Рішення:

Вирішення цієї конкретної проблеми полягає в тому, щоб просто відредагувати код макроса, який ви запускаєте, щоб він періодично зберігав і закривав цільову робочу книжку, коли вона робить копії робочого листа (ів). Код макросу, який це робить, виглядав би приблизно таким чином:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) 'Uncomment this code for the workaround: 'Save, close, and reopen after every 100 iterations: If iCounter Mod 100 = 0 Then oBook.Close SaveChanges:=True Set oBook = Nothing Set oBook = Application.Workbooks.Open("c:\test2.xls") End If Next End Sub 

Примітка . Точна кількість разів, коли ви можете скопіювати робочий аркуш, перш ніж вам потрібно зберегти та закрити робочу книгу, копії, які зберігаються, залежать від одного випадку до іншого, оскільки це залежить від розміру робочого аркуша, для якого ви робите копії.

Обхід:

Як було сказано раніше, існує вирішення цієї конкретної проблеми. Вирішення цього питання є простим питанням вставлення нового робочого аркуша із шаблону замість створення копії наявного робочого аркуша. Якщо ви хочете вирішити цю проблему, ось що вам потрібно зробити:

  1. Запустіть Excel .
  2. Створіть нову робочу книгу та видаліть кожен робочий аркуш, який містить збережений для одного.

  3. Відформатуйте робочу книжку.
  4. Додайте будь-який текст, дані та / або діаграми, які ви хочете мати в шаблоні за замовчуванням до єдиного робочого аркуша, який зараз містить робоча книга.
  5. Якщо ви використовуєте Excel 2003 або новішу версію, натисніть Файл > Зберегти як . Якщо ви використовуєте Excel 2007 або новішу версію, з іншого боку, натисніть кнопку Microsoft Office і натисніть кнопку Зберегти як .

  6. У полі Назва файлу : введіть шаблон для виклику шаблону.
  7. Відкрийте спадне меню поруч із полем Зберегти як тип: та натисніть на шаблон Excel (.xlt), якщо ви використовуєте Excel 2003 або новішу версію, або шаблон Excel (.xltx), якщо для його вибору використовуєте Excel 2007 або пізнішу версію .

  8. Клацніть на Зберегти .

  9. Після успішного створення шаблону ви можете вставити його програмно за допомогою наступного рядка коду:

    Таблиці.Додати тип: = шлях \ ім'я файлу

Примітка. У рядку коду, описаному вище, шлях \ ім'я файлу потрібно замінити на повний шлях (включаючи повне ім'я файлу) для розташування шаблону аркуша, який ви тільки що створили.

Цікаві Статті