нельзя присвоить листу имя совпадающее с именем другого листа библиотеки что делать

1C и Excel

Создаю файл Excel в 1С. В него мне нужно на разные страницы раскидать различные данные. Страниц в создаваемой книге по умолчанию 3, а у меня их может быть больше 3х. Каждую страницу нужно переименовать, при переименовании страниц, которые были в книге по умолчанию, все нормально, а при переименовании страниц, которые добавил программно, возникает ошибка:
<Форма.Форма.Форма(50)>: Ошибка при установке значения атрибута контекста (Name)
Лист.Name = «Показатели » + ВыделеннаяСтрока.Регистратор.Проект;
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic.

Попытка
// Загрузка Microsoft Excel
Состояние(«Выгрузка данных из 1С в Microsoft Excel. «);
ExcelПриложение = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«Ошибка при загрузке Microsoft Excel.»
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

// Используем первый лист книги Excel
НомерЛиста = 1;

Для л = 1 По КоличествоЛистов Цикл

// Сформировать шапку документа в первой строке листа

Для Каждого ВыделеннаяСтрока из ЭлементыФормы.ТабличноеПоле1.ВыделенныеСтроки Цикл

Для Каждого КлючИЗначение из СтруктураДляВыгрузки Цикл

Лист.Cells(1, 1).Value = «Документ » + ВыделеннаяСтрока.Регистратор.Номер;
Лист.Cells(1, 2).Value = «Время версии » + ВыделеннаяСтрока.Период;

Если ТипЗнч(ТаблицаВыгрузки) = Тип(«ДеревоЗначений») Тогда

Лист.Name = «График » + ВыделеннаяСтрока.Регистратор.Проект;
ИначеЕсли ТаблицаВыгрузки.Колонки.Количество() = 2 Тогда

Лист.Name = «Показатели » + ВыделеннаяСтрока.Регистратор.Проект;
Иначе

Лист.Name = «Строки » + ВыделеннаяСтрока.Регистратор.Проект;
КонецЕсли;
.

Источник

Почему в Excel появляется диалоговое окно «Конфликт имен»?

Если в Excel вы видите диалоговое окно Конфликт имен, это происходит из-за того, что вы пытаетесь скопировать один или несколько листа в книгу, которая имеет похожие именные диапазоны.

Предположим, что у таблицы, которую вы пытаетесь скопировать, и конечной книги, в которую вы хотите скопировать его, есть именный диапазон с именем InterestRates. При попытке переместить или скопировать листа Excel обнаружит этот конфликт и отобразит следующее сообщение:

Имя InterestRates уже существует. Нажмите кнопку Да, чтобы использовать эту версию имени, или кнопку Нет, чтобы переименовать перемещаемую или копную версию InterestRates.

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

Решение

В диалоговом окне выше необходимо сделать следующее:

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

Что происходит при нажатии кнопки Да?

Excel скопирует конфликтующий диапазон имен в 9-ю книгу. Это означает, что в конечной книге будут два похожих именуемого диапазона.

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

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

Что происходит при нажатии кнопки Да для всех?

Excel скопирует все конфликтующие диапазоны имен в 9-ю книгу. Это означает, что в конечной книге будут два или более похожих именуемого диапазона.

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

Читайте также:  какие крупы можно давать хомякам джунгарикам

Чтобы переименовать конфликтующий диапазон имен, нажмите кнопку Нет. Отобразит следующее диалоговое окно:

В разделе Новое имя введите новое имя диапазона. Новое имя не будет принято, если оно

начинается с буквы или подчеркиваия,

— ссылка на ячейку, например A1, A123 или XFD21,

имеет то же имя, что и у другого диапазона в книге, в которую вы копируете копию.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Источник

Нельзя присвоить листу имя совпадающее с именем другого листа библиотеки что делать

Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.6.2017

Репутация: нет
Всего: нет

Доброго времени суток.
Сюда будут приложены две формы Access. Одной из них я «вдохновлялся», другая моя (по названию несложно будет понять какая из них какая).

Однако, не идентичны. Мне нужно предоставить пользователю возможность предварительно выбрать нужные таблицы для экспорта, а не просто отправлять все разом. Колличество нужных таблиц может варьироваться. Имеется два списка. В первый нажатием кнопки выводятся имена всех таблиц. Во второй список кликом отправляются нужные. Соответственно, процедура экспорта обращается ко второму списку.

Проблема: Изначально я забыл присвоить значение переменной cnt. Процедура проходила, но экспортируя только одну таблицу, чьё имя первое в списке. После того как присвоил, при попытке экспорта более одной таблицы выдаёт » ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic » в строке:

Позже пропала. Не смог понять её причину, т.к. если она пропала благодаря каким-то изменениям в коде, то изменения были крайне несущественными (во всяком случае на мой взгляд). Ошибка же приведённая выше актуальна до сих пор.
Прошу помощи.

Код процедуры экспорта:

Код
Public Sub MultiExp(tblName)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim app As Object
Dim wrk As Object
Dim i As Integer
Dim t
Dim j As Integer

‘ tblName = Me![Поле0]
t = tblName(i)

Set db = CurrentDb
Set app = CreateObject(«Excel.Application»)
Set wrk = app.Workbooks.Add
Set rst = db.OpenRecordset(«SELECT * FROM [» & t & «]»)
For i = 0 To UBound(tblName)
If i

Код
Private Sub Кнопка8_Click()
Dim tblName()
Dim cnt As Integer
Dim i As Integer

If Me!Список2.ListCount = 0 Then
MsgBox «blablabla»
Exit Sub
End If

ReDim tblName(0 To cnt)

For i = 0 To cnt
tblName(i) = Me.Список2.ItemData(i)
Next i

MultiExp tblName
End Sub

P.S. Заранее извиняюсь за возможное несоответствие разделу форума.

Присоединённый файл ( Кол-во скачиваний: 8 )
Формы.rar 42,30 Kb

Советчик

Профиль
Группа: Модератор
Сообщений: 20503
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 453

Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.6.2017

Репутация: нет
Всего: нет

Сам код представлен в сообщении выше.
Если же в список выбрано одно имя таблицы, экспорт проходит. Но, собственно, всё затевалось для того, чтобы таблиц импортировать можно было более одной

Советчик

Профиль
Группа: Модератор
Сообщений: 20503
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 453

Цитата(Ethex @ 3.7.2017, 16:22 )
При попытке экспорта нескольких таблиц в книгу Excell процедура не проходит.

Загрузил и распаковал БД (ту, где три таблицы и одна форма).
В каждую таблицу добавил содержательное поле (имя val, тип текстовое) и по 2 записи.
Открыл форму и нажал кнопку.
Код выполнился без ошибок, данные скопированы в книгу Excel.

Резюме: проблема не воспроизводится.

Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.6.2017

Репутация: нет
Всего: нет

Цитата(Akina @ 3.7.2017, 15:35 )
Попробуйте после Set wrk = app.Workbooks.Add удалить из книги все листы, кроме одного

Агааась. Не работал ранее с такими методами. Пробую разобраться.

Akina, если вас это не затруднит, посмотрите вторую форму. Если таблиц было три, то вы, скорее всего (если на форме не было списков, то точно) смотрели вариант со статическим массивом (т.е. не мой). И не удивительно что ошибки не возникло. Ошибка при выполнении кода на другом файле (там таблиц шесть).

Цитата(Akina @ 3.7.2017, 15:35 )
В каждую таблицу добавил содержательное поле (имя val, тип текстовое) и по 2 записи.

Необязательно было утруждаться. После экспорта пустой таблицы в первой строке листа появятся имя полей и имя листа изменится.

Если же затруднит, буду признателен если вы об этом сообщите, чтобы не ожидал у моря погоды.
Спасибо.

P.S. Больше не буду прикреплять больше файлов, чем необходимо

Советчик

Профиль
Группа: Модератор
Сообщений: 20503
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 453

Цитата(Ethex @ 3.7.2017, 17:40 )
Ошибка при выполнении кода на другом файле

Ну там ошибка очевидная.

Очень странно, что Вы этого не увидели при трассировке кода.

Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.6.2017

Репутация: нет
Всего: нет

Увы, на данном этапе не очень.

Исчерпывающий ответ. Проблема решена.
Спасибо

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »

[ Время генерации скрипта: 0.1189 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Последовательное переименование листов

Приветствую!
Имеется макрос:

Работает корректно: переименовывает лист в книге2 как лист в книге1 и добавляет лист в книгу2.

Однако при запуске с помощью макроса:

выводится ошибка «1004»:
«Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки или книги, на которую ссылается VBA»

Причём ошибка выходит после того как один раз выполнен макрос «переименовать».

Что должно получиться:
При запуске макрос копирует наименование листа 1 в книге 1 и заменяет наименование листа в книге 2 на наименование листа 1 книги 1, затем создает в книге 2 лист 2.
Переходит в книге 1 на лист 2 и процедура повторяется.
Так происходит до последнего листа в книге 1.

Просьба помочь решить данную проблему.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Переименование листов
Грамотные товарищи, помогите 🙂 задача состоит в следующем: В книге 22 листа (по количеству.

Переименование и сортировка листов
Помогите разобраться с переименованием и сортировкой листов. 1. Не переименовывается лист по.

Переименование листов во время выполнения макроса
Добрый день! имеется макрос, внутри которого есть необходимость изменить название листов Например.

Переименование всех листов в книге Эксель по шаблону
Нужно переименовать все листы в книге Эксель, добавив к уже существующему названию, состоящему из 6.

Источник

Нельзя присвоить листу имя совпадающее с именем другого листа библиотеки что делать

Однако, не идентичны. Мне нужно предоставить пользователю возможность предварительно выбрать нужные таблицы для экспорта, а не просто отправлять все разом. Колличество нужных таблиц может варьироваться. Имеется два списка. В первый нажатием кнопки выводятся имена всех таблиц. Во второй список кликом отправляются нужные. Соответственно, процедура экспорта обращается ко второму списку.

Проблема: Изначально я забыл присвоить значение переменной cnt. Процедура проходила, но экспортируя только одну таблицу, чьё имя первое в списке. После того как присвоил, при попытке экспорта более одной таблицы выдаёт » ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic » в строке:

Позже пропала. Не смог понять её причину, т.к. если она пропала благодаря каким-то изменениям в коде, то изменения были крайне несущественными (во всяком случае на мой взгляд). Ошибка же приведённая выше актуальна до сих пор.
Прошу помощи.

Код процедуры экспорта:

Код
Public Sub MultiExp(tblName)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim app As Object
Dim wrk As Object
Dim i As Integer
Dim t
Dim j As Integer

‘ tblName = Me![Поле0]
t = tblName(i)

Set db = CurrentDb
Set app = CreateObject(«Excel.Application»)
Set wrk = app.Workbooks.Add
Set rst = db.OpenRecordset(«SELECT * FROM [» & t & «]»)
For i = 0 To UBound(tblName)
If i

Код
Private Sub Кнопка8_Click()
Dim tblName()
Dim cnt As Integer
Dim i As Integer

If Me!Список2.ListCount = 0 Then
MsgBox «blablabla»
Exit Sub
End If

ReDim tblName(0 To cnt)

For i = 0 To cnt
tblName(i) = Me.Список2.ItemData(i)
Next i

MultiExp tblName
End Sub

Сам код представлен в сообщении выше.
Если же в список выбрано одно имя таблицы, экспорт проходит. Но, собственно, всё затевалось для того, чтобы таблиц импортировать можно было более одной

Автор: Akina 3.7.2017, 15:35
Цитата(Ethex @ 3.7.2017, 16:22 )
При попытке экспорта нескольких таблиц в книгу Excell процедура не проходит.

Загрузил и распаковал БД (ту, где три таблицы и одна форма).
В каждую таблицу добавил содержательное поле (имя val, тип текстовое) и по 2 записи.
Открыл форму и нажал кнопку.
Код выполнился без ошибок, данные скопированы в книгу Excel.

Резюме: проблема не воспроизводится.

Цитата(Akina @ 3.7.2017, 15:35 )
Попробуйте после Set wrk = app.Workbooks.Add удалить из книги все листы, кроме одного

Агааась. Не работал ранее с такими методами. Пробую разобраться.

Akina, если вас это не затруднит, посмотрите вторую форму. Если таблиц было три, то вы, скорее всего (если на форме не было списков, то точно) смотрели вариант со статическим массивом (т.е. не мой). И не удивительно что ошибки не возникло. Ошибка при выполнении кода на другом файле (там таблиц шесть).

Цитата(Akina @ 3.7.2017, 15:35 )
В каждую таблицу добавил содержательное поле (имя val, тип текстовое) и по 2 записи.

Необязательно было утруждаться. После экспорта пустой таблицы в первой строке листа появятся имя полей и имя листа изменится.

Если же затруднит, буду признателен если вы об этом сообщите, чтобы не ожидал у моря погоды.
Спасибо.

P.S. Больше не буду прикреплять больше файлов, чем необходимо

Автор: Akina 4.7.2017, 08:17
Цитата(Ethex @ 3.7.2017, 17:40 )
Ошибка при выполнении кода на другом файле

Ну там ошибка очевидная.

Источник

Читайте также:  почему при приеме доксициклина нельзя быть на солнце
Портал про кино и шоу-биз