Совместимость макросов Excel для Windows и MacOS
Тема совместимости макросов для Win Excel и Mac Excel не нова. В этой статье попробуем разобраться, какие правила следует соблюдать, чтобы добиться возможности работать с файлами Excel как под Windows, так и под MacOS.
Правило первое: откажитесь от кириллицы, в идеале - везде (в тексте кода, названиях модулей, в формах и т.д.). Если это никак невозможно, то откажитесь хотя бы от русских заглавных букв. Дело в том, что у Windows и MacOS различаются кодировки, поэтому заглавные русские буквы коверкаются при открытии файла в разных ОС.
Нетрудно догадаться, что если файл создан в Win Excel, а потом открыт в Mac Excel (или наоборот), заглавные русские буквы в макросах, на формах, в именах модулей будут выглядеть кракозябрами А вот так выглядит форма с русскими заглавными буквами, которую всего лишь раз открыли на Mac Excel
Правило второе, вытекающее из первого:
присвойте листам кодовые имена, записанные латиницей. Кодовое имя листа - это
имя модуля листа.
К слову, кодовое имя листа очень удобно использовать в макросе
для обращения к листу.
Правило третье, вытекающее из первого: если Вы собираетесь макросом копировать, перемещать, переименовывать файлы, путь к файлу тоже должен содержать только латинские буквы.
Правило четвёртое: в модулях листов и модуле книги размещайте только макросы событий соответственно листа и книги, остальные макросы должны находиться в стандартных модулях
Отдельно надо сказать про формы. В Mac Excel 2011 был инструмент для создания и редактирования форм, в Mac Excel 2016 этого инструмента попросту нет. То есть файлы с уже созданными формами открываются и работают, но редактировать форму мы не сможем. На формы также распространяется правило НЕиспользования кириллицы.
Что касается самого кода, то тут следует помнить, что Mac Excel не умеет работать с некоторыми объектами, например, со словарями (Dictionary), с регулярными выражениями (RegExp) и др.
А в Mac Excel 2016 системным разделителем будет слэш
Таким образом, если мы хотим, чтобы наш файл с макросами работал и под Windows, и под MacOS, да ещё и в разных версиях Mac Excel, можно использовать такую конструкцию view plainprint? 1. Public Sub Test() 2. 'проверка ОС 3. #If Mac Then 4. 'проверка версии Mac Excel 5. If Val(Application.Version) < 15 Then 6. 'здесь часть макроса для Mac Excel до 2011 включительно 7. MsgBox "используется Mac Excel 2011 или старше" 8. Else 9. 'здесь часть макроса для Mac Excel 2016 10. MsgBox "используется Mac Excel 2016" 11. End If 12. #Else 13. 'здесь часть макроса для Win Excel 14. MsgBox "используется Win Excel" 15. #End If 16. End Sub |
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.