Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - как пакетно назначить имена для клеток excel?

Ответить
Настройки темы
2010 - как пакетно назначить имена для клеток excel?

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Мне нужно определенному диапазону клеток размером 50 столбцов на 2000 строк присвоить произвольные имена. Как это можно сделать? Может кто скриптом VBA подсобит?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 00:18, 21-01-2012

 

Модератор


Moderator


Сообщения: 16848
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


Поясните:
Цитата Pozia:
определенному диапазону »
единственное число
Цитата Pozia:
произвольные имена »
множественное....
Идею (цель) - подробнее

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Отправлено: 01:03, 21-01-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Если из эксель скопировать клетку и вставить ее через специальную вставку в ворд - получится связь. Изменив значение клетки в эксель - меняется значение в ворд. Так вот если клетку в эксель куда то перенести - связь теряется. Если клетке эксель предварительно дать имя, и затем сделать связь, то так связь ворд эксель не потеряется, так как ворд будет ссылаться не на координату а на имя клетки, которое является уникальным для листа.
Далее. У меня есть файл эксель с большими расчетами, состоящий примерно из 2000 строк и 50 столбцов. Вот для этого диапазона клеток мне нужно задать каждой клетке произвольное имя - допустим в формате "_******", где * - цифра произвольная. Вот это мне и нужно сделать.

В нете нашел вот такой скрипт:
HTML код: Выделить весь код
Sub CopyFromExcel() 'Связывание таблиц Word и Excel по ячейкам. Необходимо выделить ячейки в Excel и ' соответствующиие им ячейки в Word Dim objExcel, c, i 'Если ошибка - В пункте меню Tools -> References отметить ' Microsoft Excel Object Library Set objExcel = GetObject(, "Excel.Application.11") For Each c In Selection.Cells i = i + 1 objExcel.Selection.Cells(i).Copy c.Select Selection.PasteExcelTable True, True, True Next c End Sub

который позволяет быстро скопировать клетку эксель в ворд создав связь. Работает так - выделяем клетку в ворд, выделяем в эксель, запускаем скрипт - ссылка готова. Но он почему то не работает. Выскакивает ошибка - Run-time error '429': ActiveX component can't create object. Вот если бы его починить, и дописать возможность автоматического присваивания произвольного имени клетке эксель при создании связи ворд эксель - это было бы самым шикарным вариантом... Такое можно осуществить?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:17, 21-01-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Попробуйте убрать привязку к конкретной версии и обращаться по VersionIndependentProgID:
Код: Выделить весь код
Set objExcel = GetObject(, "Excel.Application")
либо указать ProgID, соответствующий Вашей версии Microsoft Office.

P.S. У меня не получилось вставить связь, когда ячейке Excel присвоено имя (Microsoft Office 2003).
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:58, 21-01-2012 | #4


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата Iska:
Попробуйте убрать привязку к конкретной версии и обращаться по VersionIndependentProgID:
Код:
Set objExcel = GetObject(, "Excel.Application") »
после этого у меня появилась другая ошибка:
Код: Выделить весь код
Run-time error '438': Object doesn't support this property or method

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 11:51, 21-01-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Pozia, как я уже писал:
Цитата Iska:
P.S. У меня не получилось вставить связь, когда ячейке Excel присвоено имя (Microsoft Office 2003). »
У Вас, насколько я понимаю, Microsoft Office 2010. Посему: опишите подробно, как Вы назначаете имя отдельной ячейке в Excel, как вставляете связь на эту ячейку в Microsoft Word. Если у меня сие получится воспроизвести — двинемся дальше, если нет — я отойду в сторону.

Отправлено: 21:08, 21-01-2012 | #6


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата Iska:
У Вас, насколько я понимаю, Microsoft Office 2010 »
да. но и в 2003 все работает практически также. Описываю как сделать именно в 2003. Ставим курсор на любую клетку в эксель, в поле где показывается координата выбранной клетки (левы верхний угол) просто вписываем нужное имя и нажимаем ввод. Так назначается имя клетки. Далее вписываем что либо в выбранную клетку и копируем содержимое в буфер обмена. В ворд выбираем Правка -> Специальная вставка. В окошке ставим птичку связать. Выбираем Неформатированный текст, жмем Ок. Все. Теперь если мы изменим что то в клетке эксель, в ворде тоже произойдет изменение. И если клетку в эксель мы перенесем в другое место, ворд все равно ее найдет. Вот примерно это и нужно реализовать макросом. И желательно имя клетки давать случайное как я писал ранее в формате "_******", где * - цифра произвольная. Спасибо за помощь.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 00:27, 22-01-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Pozia:
Выбираем Неформатированный текст, жмем Ок. Все. »
У меня как раз с этим проблема:
Цитата:
Не удается получить данные для связи Excel.Sheet.8
про которую я и писал выше.

читать дальше »
Была. Главное — правильно сформулировать запрос на английском языке. После этого была быстро найдена следующая статья базы знаний: Description of the Excel 2003 hotfix package: April 8, 2008, описывающая данную проблему буквально, а также дающая хотфикс для её устранения.


Pozia, попробуйте так:
Код: Выделить весь код
Option Explicit

Sub CopyFromExcel()
    Dim objExcel As Excel.Application
    Dim strAddress As String
    Dim strNewName As String
    
    Dim i As Long
    
    Set objExcel = GetObject(, "Excel.Application")
    
    With objExcel.Selection
        If .Worksheet.Type = xlWorksheet Then
            i = .Worksheet.Names.Count + 1
            
            Do
                strNewName = "_" & CStr(i)
                
                If Not NameExists(.Worksheet, strNewName) Then
                    Exit Do
                Else
                    i = i + 1
                End If
            Loop
            
            .Worksheet.Names.Add strNewName, "=" & .Address(, , xlR1C1, True)
            .Copy
            
            Selection.PasteSpecial , True, , , wdPasteText
            
            .Application.CutCopyMode = False
        End If
    End With
    
    Set objExcel = Nothing
End Sub

Function NameExists(objWorksheet As Excel.Worksheet, strName As String) As Boolean
   On Error Resume Next
   
   NameExists = Len(objWorksheet.Names(strName).Name) <> 0
End Function
Основной макрос — «CopyFromExcel()». Также потребуется задать ссылку на «Microsoft Excel Object Library».
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:58, 23-01-2012 | #8


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Iska, Спасибо. Буду пробовать днем. А что значит
Цитата Iska:
потребуется задать ссылку на «Microsoft Excel Object Library». »
?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 07:52, 23-01-2012 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Pozia:
А что значит… »
См. выше:
Цитата Pozia:
В нете нашел вот такой скрипт:
Код: Выделить весь код
…
В пункте меню Tools -> References отметить Microsoft Excel Object Library
…
»
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:12, 23-01-2012 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - как пакетно назначить имена для клеток excel?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как назначить разделителем для FOR конец строки? NordWest Скриптовые языки администрирования Windows 2 13-11-2011 21:12
Разное - Как назначить программу для открытия файлов одного типа fonarik Microsoft Windows 2000/XP 1 09-10-2010 11:08
Установка - Кардридер. Установка с нуля. Как назначить C: для системы при включеном кардридере?? yurfed Microsoft Windows 2000/XP 2 17-09-2008 11:10
назначить действие для файлов в firefox graverman Программное обеспечение Linux и FreeBSD 1 26-11-2007 17:00
k3b: Назначить устройство для записи? SVlads Общий по FreeBSD 27 28-03-2006 12:39




 
Переход