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

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Конвертация кода VBA 2003 в 2010\макросы

Ответить
Настройки темы
2010 - Конвертация кода VBA 2003 в 2010\макросы

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


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


Конфигурация

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


Изменения
Автор: victor21043
Дата: 08-03-2016
Уважаемые пользователи,
При переводе в формат word-docm 2010 из word 2003 перестаёт работать код макроса ( VBA)
В чём может быть причина?
Благодарю,
Вот два образца:

Отправлено: 12:04, 29-02-2016

 

Ветеран


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

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


Цитата victor21043:
PS Буду благодарен,если вы добавите вспл.подсказку .tooltiptext="xxx" к "button" »
В объектной модели 2003 такое свойство у элемента управления CommandButton отсутствует.

Отправлено: 12:36, 29-02-2016 | #2



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

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


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


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

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


У кого есть на WORD 2010 2013 2016

Последний раз редактировалось victor21043, 08-03-2016 в 19:34.


Отправлено: 16:39, 29-02-2016 | #3


Динохромный


Contributor


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

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


Не уверен, что это справедливо для word, при переходе с excell 2003 на 2010 была аналогичная проблема - код не запускался. Помогло копирование текста кода из старого в новый чистый созданный файл (у меня речь шла про надстройку, в вашем случае - вместо конвертирования).
Возможно - распостраненность подобной проблемы может подтверждаться существованием программы, которая делает это автоматически: Excel VBA Code Cleaner
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:32, 01-03-2016 | #4


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


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

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


Cпасибо, копирование кода в чистый новый файл не помогло

Последний раз редактировалось victor21043, 08-03-2016 в 19:35.


Отправлено: 10:24, 02-03-2016 | #5


Ветеран


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

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


Цитата victor21043:
Получается, для каждой новой версии word нужно заново писать макросы... »
Крайне редко. В большинстве случаев код работает без изменений или после небольшой доработки под новую объектную модель. У меня лично один код с небольшими изменениями прошёл реинкарнацию от Office 4.5 через Office 97 и Office 2000 до Office 2003.

Отправлено: 10:51, 02-03-2016 | #6


Динохромный


Contributor


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

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


Цитата victor21043:
Получается, для каждой новой версии word нужно заново писать макросы... »
victor21043, я очень слабо представляю объектную модель Word, но насколько я понимаю - изменить нужно только обращение к полю, которое вы хотите скрыть (выделено в коде красным).
По крайней мере у меня в таком варианте поле скрывается и отображается.
Код
Код: Выделить весь код
Public Sub Button_click()  'проц. можно вызывать в люб. модуле
     Dim Start 'явное объявление литерально
     
     Start = Timer
     Do While Timer < Start + 0.7 ' 1 sec delay
         'итеративный цикл с предусловием
         DoEvents 'DoEvents передает управление операционной системе
     Loop       ' а сама функция возвращает число открытых форм в VB-приложении
     
     With Button
         
         .Caption = IIf(.Caption Like "+*", ">> Сlose", "+ English")
         'iif возвращает одно из двух значений, в зависимости от проверяемого условия
         Shapes.Range(Array("Поле 1")).Visible = .Caption Like ">> *"
         'MsgBox "English" & vbCrLf & "CV", vbInformation, "",
         
     End With
     
 End Sub

Цитата Iska:
один код с небольшими изменениями прошёл реинкарнацию »
У меня код при переходе с 2003 на 2010 не имел ни одного изменения по тексту, при этом не работал вообще никак. Спасло только перекопирование текста кода. Заработало без внесения каких-либо изменений по коду. Как я понял - кроме текста кода сохраняется большое количество служебной информации, которая также может содержать ошибки, из-за которых код может работать не вполне правильно. Речь правда про Excel.

Отправлено: 11:44, 02-03-2016 | #7


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


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

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


Поле 1 Кто это такой? Переменная?
Компонент с указанным именем не найден
Цитата:
По крайней мере у меня в таком варианте поле скрывается и отображается.
Спасибо,

Последний раз редактировалось victor21043, 08-03-2016 в 19:35.


Отправлено: 15:03, 02-03-2016 | #8


Динохромный


Contributor


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

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


Цитата victor21043:
Поле 1 Кто это такой? Переменная? »
victor21043, я беру ваш файл под названием "режим огран функц 2010.docm", в исходном состоянии кнопка не скрывает поле.
Соответственно "Поле 1" - это имя вашего текстового поля (у вас оно обозначено как Shape(1)).

Замените в своем коде Me.Shapes(1).Visible на Me.Shapes(2).Visible, и все должно заработать.

Либо замените строку Me.Shapes(1).Visible = .Caption Like ">> *" на Shapes.Range(Array("Поле 1")).Visible = .Caption Like ">> *", также все должно работать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 02-03-2016 | #9


Ветеран


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

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


a_axe, посмотрите, нет ли там возможности простого именного доступа к объекту, т.е. — «Shapes.Item("Поле 1")» (мне нечем проверять)?!
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:37, 02-03-2016 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Конвертация кода VBA 2003 в 2010\макросы

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - добавление кода в VBA код страницы Excel corbis Программирование и базы данных 0 01-06-2015 02:29
VBA - [решено] Удаление или выделение всех объектов WordArt в Word 2010 / VBA Mahavira Программирование и базы данных 1 15-04-2014 14:53
2010 - Макросы в WORD 2010 (Авто вставка одинаковых данных в нужные clop1000 Microsoft Office (Word, Excel, Outlook и т.д.) 3 10-02-2013 23:13
VBA - *VBA* | Помогите написать макросы для Excel'я ove Программирование и базы данных 76 24-08-2010 16:24
VBA - Excel 2003 SQL запрос с VBA begemotuk Программирование и базы данных 1 08-08-2007 21:19




 
Переход