Меню

Run time error 1004 excel ошибка

Ошибка выполнения Excel 1004 обычно возникает, когда вы работаете с поврежденным документом. Вы также получаете эту ошибку, если открываете файл VBA Excel, когда ваш Excel конфликтует с другими программами.

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

VB: ошибка времени выполнения «1004»: ошибка, определяемая приложением или объектом

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

ошибка выполнения 1004 диапазон методов объекта _global не удалось Visual Basic

Макрос Excel «Ошибка выполнения ‘1004″

Ошибка выполнения 1004. Не удалось открыть книгу объектов.

Ошибка времени выполнения «1004»: сбой метода «Рейнджер» рабочего листа объекта

Сохранить как ошибка времени выполнения VBA 1004: ошибка, определяемая приложением или объектом

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

Что такое ошибка времени выполнения 1004 в Excel?

Ошибка времени выполнения характерна для приложений, которые интегрируют сценарий Microsoft Visual Basic для приложений (также известный как VBA) для выполнения повторяющихся задач.

Все приложения Microsoft Office используют это специфичное для Windows программирование, но наиболее распространенные проблемы возникают в Excel, особенно в Excel 2007.

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

Часто эта задача конфликтует с VBA, что приводит к ошибке 1004. Другой распространенной причиной является поврежденное приложение Excel или поврежденный файл XLS.

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

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

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

1. Удалите Microsoft Works

  • Нажмите комбинацию CTRL + ALT + DEL и нажмите  «Диспетчер задач».
  • Закройте все программы, которые открыты в данный момент.
  • Затем нажмите Windows + R, чтобы открыть утилиту «Выполнить».
  • Здесь введите  appwiz.cpl и нажмите  кнопку ОК.

  • В списке программ, установленных на вашем компьютере, найдите  Microsoft Works. Щелкните его правой кнопкой мыши и нажмите «  Удалить».

2. Создайте еще один шаблон Excel

  • Запустите Microsoft Excel на своем компьютере.
  • Затем создайте новую книгу Microsoft Excel, нажав комбинацию CTRL + N или выбрав Пустая книга на первом экране.

  • После создания рабочей книги удалите все листы в рабочей книге, кроме одного.
  • Отформатируйте эту книгу, которую вы сохранили.
    • Вы можете изменить эту книгу в соответствии с вашими потребностями.
  • Наконец, выберите «Файл» > «Сохранить как», чтобы сохранить файл в формате  шаблона Excel (.xltx или. xlt).
    • Используйте этот формат для Excel в 2017 году и выше.
  • Когда документ успешно сохранен, вы можете вставить шаблон с помощью этого кода:
    Add Type:=pathfilename

    Не забудьте заменить имя файла на фактическое имя документа.

3. Удалите GWXL97.XLA.

  • Начните с открытия  проводника на вашем компьютере.
    • Вы можете сделать это, нажав  Windows E.
  • Затем щелкните адресную строку, введите следующий путь
    C:/Users/user name/AppData/Local/Microsoft Excel
    и нажмите  Enter:

  • Здесь откройте  папку XLStart.
  • Наконец, найдите файл GWXL97.XLA и удалите его.

Зная, что существует множество причин ошибки времени выполнения 1004 в Excel, может сработать только одно решение. С помощью этого руководства теперь вы можете исправить ошибку времени выполнения Microsoft Excel 1004 и восстановить данные файла.


 

Возникает при переходе по ссылке из одного листа на другой

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

Юрий я не рунописец но пока начинаю это читать

1004 Ошибка, определенная приложением или объектом. Довольно распространенное универсальное сообщение об ошибке. Данная ошибка возникает тогда, когда ошибка генерируется не в VBA. Другими словами, ошибка определяется в Excel (или в другом объекте) и передается в VBA. Также эта ситуация возникает в случае если ошибка генерируется специально (для этого используется метод Raise объекта Err), но она не определена в VBA

Прикладывайте примеры

Лень двигатель прогресса, доказано!!!

 

Юрий М

Модератор

Сообщений: 60335
Регистрация: 14.09.2012

Контакты см. в профиле

Юрий, я подправил название темы: так больше конкретики. Ведь с Вашим названием все вопросы по ошибкам можно смело задавать в Вашей теме. Так лучше? Ну почему бы самому не придумать нормальное название?

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

Юрий Глодовский, я почему говорю про пример и почему так быстро привел описание ошибки, потому что ща сам сижу втыкаю в неё, так ка записал макрорекодером макрос попытался его усовершенствовать и мне выдает такую фигню и я не думаю что мы с вами делаем одно и тоже

Лень двигатель прогресса, доказано!!!

 

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

 

Юрий М

Модератор

Сообщений: 60335
Регистрация: 14.09.2012

Контакты см. в профиле

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

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#7

16.05.2014 22:53:10

Цитата
Юрий Глодовский пишет: У меня вопрос в какую сторону хотя бы копать.

это не ко мне, сам тупил над такой же ошибкой около 30 минут, грохнул макрос рисую заново, но это чисто развлекуха под пиво к работе у меня ни как не относится

Лень двигатель прогресса, доказано!!!

 

Юрий Глодовский

Пользователь

Сообщений: 137
Регистрация: 17.03.2013

#8

16.05.2014 23:42:20

Юрий М, в третьей строке, тот что If Not Intersect…

Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    '// Проверяем, что выделенная ячейка пересеклась с колонкой "А"
    If Not Intersect(Target, Columns("C")) Is Nothing And Target.Parent.Name = "База" Then
        '//Проверяем, что это не первая строка (там у нас будет заголовок таблицы)
        If Target.Row <> 1 Then
            If Target.Cells.Count = 1 Then '// Если выделена только одна ячейка
                '// Проверяем, что ячейка не пуста
                If Len(Target.Offset(0, -2).Value) <> 0 Then
                    '// На всякий случай - предотвращение ошибок во время файловых операций
                    On Error Resume Next
                    '// Внимание Mkdir (в отличие от DOS-версии) не умеет создавать цепочку папок
                    '// Это означает, что папка, в которой нужно создавать новую, уже должна существовать
                    Dim HomeDir$
                    HomeDir = "D:Base" '// Задаем исходную папку (у Вас - это: "D:Base")
                    MkDir (HomeDir & "" & Target.Offset(0, -2).Value)
                    If Err = 0 Then Cells(Target.Row, "C").Formula = "=HYPERLINK(""" & HomeDir & """&A" & Target.Row & ",""IIIII"")"
                End If
            End If
        End If
    End If
End Sub
 
 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#9

16.05.2014 23:44:38

Цитата
Юрий М пишет: Начните с того, что прогоните код пошагово: для начала выясним — на какой строке и в какой процедуре возникает эта ошибка.

Юрий Глодовский, обращайте внимание на советы, если не знаете как это сделать, спрашивайте, дадут либо ссылку либо совет как это сделать, КОТ хоть и сидит со скелетом но форумчан редко ест

Лень двигатель прогресса, доказано!!!

 

Hugo

Пользователь

Сообщений: 23100
Регистрация: 22.12.2012

#10

16.05.2014 23:46:23

У меня нет ошибки.
Но попробуйте

Код
    If Not Intersect(Target, ActiveSheet.Columns("C")) Is Nothing And Target.Parent.Name = "База" Then 

кто его знает…
или

Код
    If Not Intersect(Target, target.parent.Columns(3)) Is Nothing And Target.Parent.Name = "База" Then 

Изменено: Hugo17.05.2014 08:31:16

 

Юрий М

Модератор

Сообщений: 60335
Регистрация: 14.09.2012

Контакты см. в профиле

Без файла сложно, конечно… Лист «База» есть?

 

Hugo

Пользователь

Сообщений: 23100
Регистрация: 22.12.2012

Юра, у меня листа База не было. В начале :)
Это не влияет. Нет листа — не выполняется условие всего лишь…

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

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

Лень двигатель прогресса, доказано!!!

 

Юрий Глодовский

Пользователь

Сообщений: 137
Регистрация: 17.03.2013

#14

17.05.2014 00:00:16

Цитата
Hugo пишет: If Not Intersect(Target, target.parent.Columns(3)) Is Nothing And Target.Parent.Name = «База» Then

Этот вариант помог. Большое спасибо.
Сергей, посмотрите, может вам пригодится.

 

Юрий М

Модератор

Сообщений: 60335
Регистрация: 14.09.2012

Контакты см. в профиле

#15

17.05.2014 00:02:43

Немного смущает несоответствие комментария и строки кода. Комментарий ошибку не вызовет, но всё же:

Код
'// Проверяем, что выделенная ячейка пересеклась с колонкой "А" 

А проверяем столбец С.

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#16

17.05.2014 00:13:50

Цитата
Юрий Глодовский пишет: может вам пригодится.

в будущем может, на данном моменте эволюции понимания в VBA у меня даже таких строк нет

Лень двигатель прогресса, доказано!!!

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#17

17.05.2014 01:13:52

Замечу, что Target.Parent это Sh, который передается в процедуру.
Лучше разбить первую проверку на две, чтобы сначала шла быстрая операция сравнения имени, а потом громоздкий Intersect:

Код
If Sh.Name = "База" Then
  If Not Intersect(Target, Sh.Columns(3)) Is Nothing Then 

Ошибка выполнения 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: =дорожкаимя файла

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

Ошибка VBA 1004 — это ошибка времени выполнения в VBA, которая также известна как определяемая приложением или объектно-определяемая ошибка, и почему это потому, что у нас ограниченное количество столбцов в excel, и когда наш код дает команду выйти за пределы диапазона, мы получаем 1004 error, бывают и другие ситуации, когда мы получаем эту ошибку, когда ссылаемся на диапазон, которого нет на листе.

Ошибка VBA 1004 в Excel

Ошибка VBA 1004 — это ошибка времени выполнения в VBA, которая возникает во время выполнения кода. Ошибки являются неотъемлемой частью кодирования, особенно когда вы пишете впервые, вы можете столкнуться с множеством ошибок в VBA. Это общее для всех, и в этом нет ничего страшного.

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

В этой статье мы обсудим одну из важных ошибок Excel «Ошибка VBA 1004».

Ошибка VBA 1004

Вы можете свободно использовать это изображение на своем веб-сайте, в шаблонах и т. Д. Пожалуйста, предоставьте нам ссылку с указанием авторстваСсылка на статью должна содержать гиперссылку
Например:
Источник: Ошибка VBA 1004 (wallstreetmojo.com)

6 основных ошибок выполнения Excel VBA 1004

Вы можете скачать этот шаблон ошибки VBA 1004 здесь — Шаблон ошибки VBA 1004

# 1 — Ошибка времени выполнения VBA 1004: это имя уже занято. Попробуйте другой:

Эта ошибка возникает при переименовании листа.

Если имя рабочего листа уже существует и если вы попытаетесь назначить то же имя другому листу, VBA выдаст ошибку времени выполнения 1004, заявив: «Имя уже занято. Попробуйте другой «.

Например, посмотрите на приведенный ниже код.

Код:

Sub Error1004_Example()

 Worksheets("Sheet2").Name = "Sheet1"

End Sub

Пример ошибки VBA 1004 1

Я пытаюсь переименовать лист 2 в лист 1. Но у меня уже есть лист с именем «Sheet1».

Пример ошибки VBA 1004 1-2

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

Пример ошибки VBA 1004 1-1

Итак, попробуйте переименовать лист соответствующим образом.

# 2 — Ошибка времени выполнения VBA 1004: сбой метода «Диапазон» объекта «_ Global»:

Обычно это происходит, когда мы пытаемся получить доступ к именованный диапазон в ExcelДиапазон имен в Excel — это имя, присвоенное диапазону для использования в будущем. Чтобы присвоить диапазону имя, сначала выберите диапазон данных, а затем вставьте в диапазон таблицу, затем введите имя диапазона из поля имени в левой части окна.читать далее с орфографической ошибкой или вообще отсутствует на листе, на который вы ссылаетесь.

Для этого я назвал диапазон ячеек «Заголовками», как показано на изображении ниже.

Пример ошибки 2 VBA 1004

Теперь, используя объект Range, я могу получить доступ к этому диапазону.

Код:

Sub Error1004_Example()

  Range("Headings").Select

End Sub

Пример ошибки VBA 1004 2-1

Если вы запустите этот код, нажав клавишу F5, то этот код выберет именованный диапазон.

Пример ошибки VBA 1004 2-2

Но если я неправильно укажу названный диапазон, я получу ошибку времени выполнения 1004: Ошибка метода «Диапазон» объекта «_ Global».

Код:

Sub Error1004_Example()

  Range("Headngs").Select

End Sub

Пример 2-3 ошибки VBA 1004

Запустите этот код вручную или с помощью клавиши F5 и посмотрите результат.

Пример ошибки VBA 1004 2-4

# 3 — Ошибка времени выполнения VBA 1004: Ошибка выбора метода класса Range:

Обычно это происходит, когда мы пытаемся выбрать ячейки, отличные от активного листа, не делая этот лист выбранным или активным.

Например, посмотрите на приведенный ниже код.

Код:

Sub Error1004_Example()

  Worksheets("Sheet1").Range("A1:A5").Select

End Sub

Пример ошибки 3 VBA 1004

В приведенном выше коде говорится, что нужно выбрать ячейки от A1 до A5 на листе «Sheet1». Чтобы поэкспериментировать, моим текущим активным листом является «Лист2», а не «Лист1».

Я запущу этот код с помощью клавиши F5 или вручную, чтобы посмотреть, что произойдет.

Пример ошибки VBA 1004 3-1

Мы получили ошибку времени выполнения 1004: не удалось выбрать метод класса Range. Это потому, что, не активируя лист, мы пытаемся выбрать ячейки этого листа. Итак, сначала нам нужно активировать прозрачность, прежде чем мы выберем ячейки. Ниже приведен правильный код.

# 4 — Ошибка выполнения VBA 1004, не удалось открыть объектные книги:

Обычно это происходит, когда вы пытаетесь открыть книгу, имя которой совпадает с именем другой книги, которая уже открыта.

Например, посмотрите на приведенный ниже код.

Код:

Sub Error1004_Example()

   Dim wb As Workbook
    Set wb = Workbooks.Open("FileName.xls", ReadOnly:=True, CorruptLoad:=xlExtractData)

End Sub

Пример 3-2

Это вызовет ошибку ниже.

Пример 3-3

# 5 — Метод ошибки выполнения VBA 1004 К сожалению, мы не смогли найти:

Эта ошибка возникает из-за того, что вы пытаетесь открыть файл, которого нет по указанному пути. Его можно переместить, переименовать или удалить по указанному пути. Одна из причин этого из-за неправильного типа пути или имени файла с расширение ExcelРасширения Excel представляют формат файла. Это помогает пользователю сохранять различные типы файлов Excel в различных форматах. Например, .xlsx используется для простых данных, а XLSM используется для хранения кода VBA.читать далее.

Теперь взгляните на приведенный ниже код.

Код:

Sub Error1004_Example()

   Workbooks.Open Filename:="E:Excel FilesInfographicsABC.xlsx"

End Sub

Пример 4

Этот код требует открыть файл «ABC.xlsx» в указанном пути к папке.

Я точно знаю, что в указанном пути к папке нет файла. Если в указанной папке нет файла, мы получим Ошибка выполнения 1004 метод. Извините, но мы не смогли его найти.

Пример 4-1

# 6 — Ошибка выполнения VBA 1004 Ошибка активации класса диапазона методов:

Эта ошибка возникает в основном из-за активации диапазона ячеек без активации рабочего листа.

Например, посмотрите на приведенный ниже код.

Код:

Sub Error1004_Example()

  Worksheets("Sheet1").Range("A1:A5").Activate

End Sub

Пример 5

Эта ошибка очень похожа на ту, которую мы видели в Ошибка времени выполнения 1004: Ошибка выбора метода класса Range.

Если я запускаю вручную или с помощью клавиши F5, мы получим ошибку ниже.

Пример 5-1

Потому что без активации листа мы не можем активировать в нем ячейки. Итак, сначала активируйте лист, а затем активируйте ячейки этого листа.

УЗНАТЬ БОЛЬШЕ >>

Post Views: 1 271

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Run the rorconfig program first ошибка
  • Run graphics test ошибка команды нет