Изменение Имени Контролла

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

stepankobzey
Сообщения: 6
Зарегистрирован: 23 янв 2008, 05:28

Здраствуйте,
есть такая проблема. На форме есть много контролов, которые нужно переименовать под свои нужди, соответствено 700 контролов рукачи переименововать - неинтересно. Есть кусок кода получений с одного туториала, но чтото он неработает:

Код: Выделить всё

Sub ChangeControls()    
    Dim ctl As Control
    Dim uf As VBIDE.VBComponent
    Dim vbp As VBProject 
    Set vbp = Application.VBE.VBProjects("SalesInfoSheet")    
    Set uf = vbp.VBComponents("UOrders") 
    For Each ctl In uf.Designer.Controls
        Select Case ctl.Left
            Case 6
                ctl.Name = "mybutton" & CLng(((ctl.Top - 30) / 18) + 1)
                Next ctl    
End Sub
точнее неработает uf.Designer.Controls -> ексель говорит, что в uf.Designer нет свойства Controls и на етом всьо тормозит.

Если ктото знает как ето исправить, или какието другие варианти помогите пожалуста
Версия Excel 2003 или Excel 2007. Спасибо
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте stepankobzey.
в коде ошибки синтаксиса, (не закрыт Select) !
Имя проекта действительно "SalesInfoSheet", а форрмы "UOrders", к которым идет обращение в скрипте?
Set vbp = Application.VBE.VBProjects("SalesInfoSheet") - подключение к проекту VB, "Версия Excel 2003 или Excel 2007" - как понимать VB или VBA?
В VB править форму (файл frm) можно с помощью текстового редактора.

Думаю Вам стоит пересмотреть "свои нужди", 700 контролов размещенных на форме, это не есть хорошо. Только для того что бы задать им имена - создается специальный скрипт(!), Пожалейте пользователей.
Евгений.
stepankobzey
Сообщения: 6
Зарегистрирован: 23 янв 2008, 05:28

Спасибо Евгений за ответ,
действительно не закрыт Select, моя ошибка, удалил при редактировании поста, на самом деле она существует, eто пример VBA, пробивал на Excel 2003 и Excel 2007. Пример очень хороший, но не работает. Вот для примера ещо один:

Код: Выделить всё

Sub RenameControls() 
    Dim vbpTemp As VBProject 
    Dim frmTemp As VBComponent 
    Dim cntTemp As MSForms.Control      
    Set vbpTemp = Application.VBE.ActiveVBProject 
    Set frmTemp = vbpTemp.VBComponents.Item("Userform1")      
    For Each cntTemp In frmTemp.Designer.Controls 
        If TypeOf cntTemp Is MSForms.TextBox Then 
            Select  Case UCase(cntTemp.Name) 
            Case "TEXTBOX1" 
                cntTemp.Name = "txtUsername" 
            Case "TEXTBOX2" 
                cntTemp.Name = "txtDepartment" 
            Case "TEXTBOX3" 
                cntTemp.Name = "txtAccount" 
            End Select 
        End If 
    Next      
End Sub 
вроде всьо ОК, но вот frmTemp.Designer.Controls -> ексель говорит, что в frmTemp.Designer нет свойства Controls и на етом всьо тормозит. Викидает runtime error '424' -> Object required. И подсвечивает "For Each cntTemp In frmTemp.Designer.Controls ". Но смотрю что другие пользовались, и коментируюют что работает. А у меня нет. Ета функция визиваетса один раз при визове форми для переименования TEXTBOX, что им легко било присвоить значение ячеек екселя. Пробивал вручную редактировать фаил екселя, но он после етого неработает. Пожалуста если кто знает как заставить ету функуцию работать, ПОМОГИТЕ. Спасибо большие
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Ваш последний код у меня замечательно отработал и изменил название всех 3-х TextBox'ов. Я лишь подключил библиотеку "Microsoft Visual Basic for Applications Extensibility 5.3" в Tools-References. У меня Office 2003. Проверял в Excel
stepankobzey
Сообщения: 6
Зарегистрирован: 23 янв 2008, 05:28

Ваш последний код у меня замечательно отработал и изменил название всех 3-х TextBox'ов. Я лишь подключил библиотеку "Microsoft Visual Basic for Applications Extensibility 5.3" в Tools-References. У меня Office 2003. Проверял в Excel

Спасибо, за ответ,
но почемуто у меня проблема остайотса. Пробивал и на разних машинах и на Excel-х. Библиотека "Microsoft Visual Basic for Applications Extensibility 5.3" подключена. При попитке запустить код на рабочей машине, получаю Runtime Error '91'-> Object Variable or With block not set и подсвечиваетса For Each cntTemp In frmTemp.Designer.Controls. Что же у меня не так? Подскажите пожалуста. Спасибо за помощь
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

У меня подключены след. библиотеки

1) Visual Basic for Application
2) Microsoft Excel 11.0 Object Library
3) OLE Automation
4) Microsoft Office 11.0 Object Library
5) Microsoft Form 2.0 Object Library
6) Microsoft Visual Basic for Applications Extensibility 5.3

Подключены ли они у вас? Если ДА, то снимите галочки с них и поставьте заново.
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Вот, посмотрите
Вложения
RenameControls.zip
(11.09 КБ) 24 скачивания
stepankobzey
Сообщения: 6
Зарегистрирован: 23 янв 2008, 05:28

Особая благодарность обявляетса тобарищу Pavel55 за помощь и терпение проявленое в ходе боевих дествий с VBA. Также товарищу Teslenko_EA обявляетса благодарность, за хороший ответ. Проблема била решина. Все оказалось просто. Я визивал функцию переименования, с самой USERFORM, тогда как ее следовало визивать, з рабочего листа(что прекрасно показано в примере Pavel55), пока форма закрита. Все гениальное просто. :) Тему можно щитать закритой. Все товарищам мойо многократное УРА...
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Pavel55 писал(а):У меня подключены след. библиотеки

1) Visual Basic for Application
2) Microsoft Excel 11.0 Object Library
3) OLE Automation
4) Microsoft Office 11.0 Object Library
5) Microsoft Form 2.0 Object Library
6) Microsoft Visual Basic for Applications Extensibility 5.3

Подключены ли они у вас? Если ДА, то снимите галочки с них и поставьте заново.
А почему у меня не все эти библиотеки?
4) Microsoft Office 11.0 Object Library только 10.0
5) Microsoft Form 2.0 Object Library - нет
stepankobzey
Сообщения: 6
Зарегистрирован: 23 янв 2008, 05:28

попробуй переустанови офис и скачай обновдения
Ответить