Не работает макрос в excel на mac

Тема совместимости макросов для Win Excel и Mac Excel не нова. В этой статье попробуем разобраться, какие правила следует соблюдать, чтобы добиться возможности работать с файлами Excel как под Windows, так и под MacOS.

Правило первое: откажитесь от кириллицы, в идеале — везде (в тексте кода, названиях модулей, в формах и т.д.). Если это никак невозможно, то откажитесь хотя бы от русских заглавных букв. Дело в том, что у Windows и MacOS различаются кодировки, поэтому заглавные русские буквы коверкаются при открытии файла в разных ОС.

Так выглядит кодовая таблица русских букв на Windows А так выглядит кодовая таблица русских букв на MacOS

Нетрудно догадаться, что если файл создан в Win Excel, а потом открыт в Mac Excel (или наоборот), заглавные русские буквы в макросах, на формах, в именах модулей будут выглядеть кракозябрами

А вот так выглядит форма с русскими заглавными буквами, которую всего лишь раз открыли на Mac Excel

Правило второе, вытекающее из первого: присвойте листам кодовые имена, записанные латиницей. Кодовое имя листа — это имя модуля листа.
Изменить его можно в свойствах:

    

К слову, кодовое имя листа очень удобно использовать в макросе для обращения к листу.
То же самое следует сделать и с модулем книги.

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

Правило четвёртое: в модулях листов и модуле книги размещайте только макросы событий соответственно листа и книги, остальные макросы должны находиться в стандартных модулях

Отдельно надо сказать про формы. В Mac Excel 2011 был инструмент для создания и редактирования форм, в Mac Excel 2016 этого инструмента попросту нет. То есть файлы с уже созданными формами открываются и работают, но редактировать форму мы не сможем. На формы также распространяется правило НЕиспользования кириллицы.

Что касается самого кода, то тут следует помнить, что Mac Excel не умеет работать с некоторыми объектами, например, со словарями  (Dictionary), с регулярными выражениями (RegExp) и др.

Кроме того, многие приёмы по-разному реализуются для Win Excel и Mac Excel. Например, совершенно по-разному реализована возможность открытия файла через диалог.
Более того, различия могут быть также между версиями Mac Excel. Например, если в макросе предполагается использовать путь к файлу, то в Mac Excel до 2011 включительно системным разделителем является двоеточие
Macintosh HD:Users:elena:Desktop:test.xlsm

А в Mac Excel 2016 системным разделителем будет слэш
/Users/elena/Desktop/test.xlsm

Таким образом, если мы хотим, чтобы наш файл с макросами работал и под Windows, и под MacOS, да ещё и в разных версиях Mac Excel, можно использовать такую конструкцию

Public Sub Test()
    'проверка ОС
    #If Mac Then
        'проверка версии Mac Excel
        If Val(Application.Version) < 15 Then
            'здесь часть макроса для Mac Excel до 2011 включительно
            MsgBox "используется Mac Excel 2011 или старше"
        Else
            'здесь часть макроса для Mac Excel 2016
            MsgBox "используется Mac Excel 2016"
        End If
    #Else
        'здесь часть макроса для Win Excel
        MsgBox "используется Win Excel"
    #End If
End Sub

Скачать файл-пример

Всем добрый день,

Если кто то сможет помочь, буду безмерно благодарен.

Код
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = False
    Dim wsSh As Worksheet
    Sheets(sWarning).Visible = -1
    For Each wsSh In ThisWorkbook.Sheets
        If wsSh.Name <> sWarning Then wsSh.Visible = 2
    Next wsSh
    Application.ScreenUpdating = 1
End Sub
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets(sMainSheet).Visible = -1
    ThisWorkbook.Sheets(sWarning).Visible = 2
    Application.ScreenUpdating = 1
    frmIndicateUser.Show
End Sub

Не работает этот макрос на MAC Excel 2011, на Windows все работает без проблем. То есть при открытии книги, вылезает Userform на Windows но не работает на Маке. Весь этот макрос прописан в «Эта Книга» в VBAProject,

Если кто то знает почему не работает, или кк сделать чтоб работало, буду благодарен

Включить или отключить макрос в Office для Mac

В целях предотвращения заражения системы вирусами, содержащимися в макросах, при попытке открытия документа с макросом по умолчанию в Office для Mac отображается предупреждающее сообщение. Это сообщение отображается независимо фактического наличия вируса в макросе. Отображение предупреждающего сообщения можно отключить, но в этом случае следует открывать документы только из известных и доверенных источников.

Какую Office для Mac набор приложений вы используете?

Щелкните меню Word, Excelили PowerPoint меню.

Щелкните Настройки.

Нажмите кнопку Конфиденциальность & безопасности

Чтобы разрешить запуск всех макроса, выберите radio button Enable all macros (Включить все макросы).

Внимание: Это позволит запускать все макросы (как хорошая, так и плохая) без дополнительных предупреждений. Выберите этот параметр только в том случае, если вы уверены, что не будете открывать вредоносные или опасные файлы.

Чтобы получать запрос при каждом обнаружении макроса, выберите Отключить все макрос с уведомлением. Этот параметр установлен по умолчанию.

Чтобы отключить все макрос без уведомления, выберите Отключить все макросы без уведомления. Макрос не будет запускаться, и вы больше не будете получать запросы.

В меню Word выберите пункт Параметры.

В ок Параметры личные службы щелкните Безопасность .

Выполните одно из следующих действий:

Необходимые действия

Включите макросы при открытии файлов

Снимите флажок Предупреждать перед открытием файла, содержащего макросы.

Примечание: Если отключить защиту от вирусов в макросах, возникает риск заражения, которое может привести к серьезному повреждению данных.

См. предупреждающее сообщение при открытии файла с макросом

Убедитесь, что флажок Предупреждать перед открытием файла, содержащего макросы установлен.

PowerPoint

В меню PowerPoint выберите пункт Параметры.

На панели инструментов щелкните Общие .

Выполните одно из следующих действий:

Необходимые действия

Включите макросы при открытии файлов

Снимите флажок Включить защиту от макровирусов.

Примечание: Если отключить защиту от вирусов в макросах, возникает риск заражения, которое может привести к серьезному повреждению данных.

См. предупреждающее сообщение при открытии файла с макросом

Убедитесь, что флажок Включить защиту от макровирусов установлен.

Excel

В меню Excel выберите пункт Параметры.

В разделе Общий доступ и конфиденциальность щелкните Безопасность .

Выполните одно из следующих действий:

Необходимые действия

Включите макросы при открытии файлов

Снимите флажок Предупреждать перед открытием файла, содержащего макросы.

Примечание: Если отключить защиту от вирусов в макросах, возникает риск заражения, которое может привести к серьезному повреждению данных.

См. предупреждающее сообщение при открытии файла с макросом

Убедитесь, что флажок Предупреждать перед открытием файла, содержащего макросы установлен.

Включение и отключение макросов в программе Microsoft Excel

Макросы в Microsoft Excel

Макросы – это инструмент для создания команд в приложении Microsoft Excel, которые позволяют значительно сократить время на выполнение задач, автоматизировав процесс. Но, в то же время, макросы являются источником уязвимости, которой могут воспользоваться злоумышленники. Поэтому, пользователь на свой страх и риск должен решить применять данную возможность в конкретном случае, или нет. Например, если он не уверен в благонадежности открываемого файла, то лучше макросами не пользоваться, ведь они могут послужить причиной заражения компьютера вредоносным кодом. Учитывая это, разработчики предоставили возможность пользователю самому решать вопрос включения и отключения макросов.

Включение и отключение макросов через меню разработчика

Основное внимание мы уделим процедуре включения и отключения макросов в самой популярной и распространённой на сегодня версии программы — Excel 2010. Потом, более бегло поговорим о том, как это сделать в других версиях приложения.

Включить или отключить макросы в Microsoft Excel можно через меню разработчика. Но, проблема состоит в том, что по умолчанию данное меню отключено. Чтобы его включить, переходим во вкладку «Файл». Далее, кликаем по пункту «Параметры».

Переход в параметры Microsoft Excel

В открывшемся окне параметров, переходим в раздел «Настройка ленты». В правой части окна данного раздела устанавливаем галочку около пункта «Разработчик». Жмем на кнопку «OK».

Включение режима разработчика в Microsoft Excel

После этого, на ленте появляется вкладка «Разработчик».

Переходим во вкладку «Разработчик». В самой правой части ленты расположен блок настроек «Макросы». Чтобы включить или отключить макросы, кликаем по кнопке «Безопасность макросов».

Переход в раздел безопасности макросов в Microsoft Excel

Открывается окно центра управления безопасностью в разделе «Макросы». Для того, чтобы включить макросы, переставляем переключатель в позицию «Включить все макросы». Правда, данное действие разработчик не рекомендует выполнять в целях безопасности. Так что, всё выполняется на свой страх и риск. Жмем на кнопку «OK», которая расположена в нижнем правом углу окна.

Включение макросов в Microsoft Excel

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

  1. Отключить все макросы без уведомления;
  2. Отключить все макросы с уведомлением;
  3. Отключить все макросы, кроме макросов с цифровой подписью.

В последнем случае, макросы, у которых будет иметься цифровая подпись, смогут выполнять задачи. Не забываем жать на кнопку «OK».

Отключение макросов в Microsoft Excel

Включение и отключение макросов через параметры программы

Существует ещё один способ включения и отключения макросов. Прежде всего, переходим в раздел «Файл», и там жмем на кнопку «Параметры», как и в случае включения меню разработчика, о чем мы говорили выше. Но, в открывшемся окне параметров, переходим не в пункт «Настройка ленты», а в пункт «Центр управления безопасностью». Кликаем по кнопке «Параметры центра управления безопасностью».

Переход в параметры центра управлением безопасностью в Microsoft Excel

Открывается то же самое окно Центра управления безопасностью, в которое мы переходили через меню разработчика. Переходим в раздел «Параметры макросов», и там включаем или отключаем макросы тем же способом, как делали это в прошлый раз.

Параметры макросов в Microsoft Excel

Включение и отключение макросов в других версиях Excel

В других версиях программы Excel процедура отключения макросов несколько отличается от указанного выше алгоритма.

В более новой, но менее распространенной версии программы Excel 2013, несмотря на некоторую разницу в интерфейсе приложения, процедура включения и отключения макросов происходит по тому же алгоритму, который был описан выше, а вот у более ранних версий он несколько отличается.

Для того, чтобы включить или отключить макросы в программе Excel 2007, нужно сразу кликнуть по логотипу Microsoft Office в верхнем левом углу окна, а затем в нижней части открывшейся страницы нажать на кнопку «Параметры». Далее, открывается окно Центра управления безопасностью, и дальнейшие действия по включению и отключению макросов практически ничем не отличаются от описанных для Excel 2010.

В версии Excel 2007 достаточно просто последовательно перейти по пунктам меню «Сервис», «Макрос» и «Безопасность». После этого, откроется окно, в котором нужно выбрать один из уровней безопасность работы макросов: «Очень высокая», «Высокая», «Средняя» и «Низкая». Эти параметры соответствуют пунктам параметров макросов более поздних версий.

Как видим, включить макросы в последних версиях программы Excel несколько сложнее, чем это было в предыдущих версиях приложения. Это связано с политикой разработчика на увеличение уровня безопасности пользователя. Таким образом, макросы может включить только более или менее «продвинутый» пользователь, который способен объективно оценить риски от выполняемых действий.

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.

КАК ЗАПУСТИТЬ МАКРОСЫ EXCEL В MAC IWORK — ВОКРУГ-ДОМ — 2022

Видео: Как включить макросы в Microsoft Excel (Июнь 2022).

Если вы часто используете электронные таблицы, вы, вероятно, использовали мини-программу для автоматизации функций в вашей электронной таблице. Эти пользовательские макросы (или сценарии) часто программируются в электронных таблицах Microsoft Excel, поскольку они могут выполнять сложные вычисления, которые не могут выполнять простые формулы электронных таблиц. Макросы написаны на языке программирования Visual Basic для приложений (VBA). К сожалению, приложение Apple для работы с электронными таблицами Numbers не может читать макросы, написанные на VBA. Однако, если у вас Apple iWork 09, есть несколько вариантов, которые вы можете попробовать, если по-прежнему хотите использовать макросы в своих таблицах.

Шаг 1

Используйте AppleScript для создания макросов электронных таблиц. Это встроенный язык сценариев Mac OS X. Все приложения iWork ’09, включая Numbers, поддерживают использование AppleScript.

Шаг 2

Переключитесь на использование предыдущей версии Excel для Mac. Excel 2004 поддерживает использование макросов VBA.

Шаг 3

Преобразуйте электронную таблицу Numbers ’09 в формат электронной таблицы Windows Excel. Откройте таблицу Numbers и нажмите «Файл», затем «Сохранить как». Выберите «Сохранить копию как» и выберите «Документ Excel» во всплывающем меню. Теперь вы можете применить макросы к электронной таблице, открыв электронную таблицу с версией Excel для Windows.

Как найти скрытые макросы в электронной таблице Excel

Как найти скрытые макросы в электронной таблице Excel

Макросы являются мощной функцией в Microsoft Excel и позволяют программно управлять несколькими функциями Excel. Приложения, которые могут занимать сотни ячеек вычислений .

Как переместить макросы Excel на другой компьютер

Как переместить макросы Excel на другой компьютер

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

Благодарю, будем пробовать — заочно, у меня винда, у человека Мак, но он в макросах не спец.
Пока нашел такое, поменял под себя:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub SelectFile1()
   ' The user selects a file, the full name of the selected file is written to cell B2.
   Dim FN As String, Title As String, FileFormats As String, AllowMultiSelect As Boolean, InitialView As String
 
   '1. Dialog settings.
   Title = "ВЫБЕРИТЕ ВХОДНОЙ ФАЙЛ"
   FileFormats = "{""org.openxmlformats.spreadsheetml.sheet""}"   ' xlsx only
   AllowMultiSelect = False
   InitialView = MacScript("return (path to desktop folder) as String")
 
   '2. Displaying the dialog.
   If FileDialog(FN, Title, FileFormats, AllowMultiSelect, InitialView) = True Then ThisWorkbook.Sheets(1).Range("B2").Value = FN
End Sub

Функция FileDialog в отдельном модуле:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Option Explicit
Option Base 1
 
Function FileDialog(FNs, Title As String, FileFormats As String, AllowMultiSelect As Boolean, InitialView As String) As Boolean
   ' The function displays a dialog for selecting files.
 
   ' The function will return False in these cases:
       '1) the user refused to select files.
 
   ' Version: 23 August 2021.
 
   Dim i As Long, Script As String, Selected
 
   '1. Enclosing parameters with quotation marks.
   Title = """" & Title & """"
   InitialView = """" & InitialView & """"
 
   '2. Enclosing parameters with spaces.
   Title = " " & Title & " "
   FileFormats = " " & FileFormats & " "
   InitialView = " " & InitialView & " "
 
   '3. Creating a script.
   ' Mac 2011.
   If Val(Application.Version) < 15 Then
      If AllowMultiSelect = False Then
         Script = _
             "set theFile to (" & _
                 "choose file of type" & FileFormats & _
                 "with prompt" & Title & _
                 "default location alias" & InitialView & _
                 "without multiple selections allowed" & _
             ") as string" & vbNewLine & _
             "return theFile"
      Else
         Script = _
             "set applescript's text item delimiters to {ASCII character 10} " & vbNewLine & _
             "set theFiles to (" & _
                 "choose file of type" & FileFormats & _
                 "with prompt" & Title & _
                 "default location alias" & InitialView & _
                 "with multiple selections allowed" & _
             ") as string" & vbNewLine & _
             "set applescript's text item delimiters to """" " & vbNewLine & _
             "return theFiles"
       End If
   ' New versions.
   Else
      If AllowMultiSelect = False Then
         Script = _
             "set theFile to (" & _
                 "choose file of type" & FileFormats & _
                 "with prompt" & Title & _
                 "default location alias" & InitialView & _
                 "without multiple selections allowed" & _
             ") as string" & vbNewLine & _
             "return posix path of theFile"
      Else
         Script = _
             "set theFiles to (" & _
                 "choose file of type" & FileFormats & _
                 "with prompt" & Title & _
                 "default location alias" & InitialView & _
                 "with multiple selections allowed" & _
             ")" & vbNewLine & _
             "set thePOSIXFiles to {}" & vbNewLine & _
             "repeat with aFile in theFiles" & vbNewLine & _
             "set end of thePOSIXFiles to POSIX path of aFile" & vbNewLine & _
             "end repeat" & vbNewLine & _
             "set {TID, text item delimiters} to {text item delimiters, ASCII character 10}" & vbNewLine & _
             "set thePOSIXFiles to thePOSIXFiles as text" & vbNewLine & _
             "set text item delimiters to TID" & vbNewLine & _
             "return thePOSIXFiles"
       End If
   End If
 
   '4. Displaying the dialog.
   On Error Resume Next
   Selected = MacScript(Script)
   On Error GoTo 0
 
   '5. If the user refused to select files.
   If Selected = "" Then Exit Function
 
   '6. Writing the full file name to a variable.
   If AllowMultiSelect = False Then
      FNs = Selected
   '7. Writing full file names to an array.
   Else
      Selected = Split(Selected, Chr(10))
      ReDim FNs(UBound(Selected) + 1)
      For i = 0 To UBound(Selected)
         FNs(i + 1) = Selected(i)
      Next i
   End If
 
   '8.
   FileDialog = True
End Function

Насколько я понял, взято у Рона де Бруна (www.macexcel.com). Покопался там, с сохранением вопрос: из https://www.macexcel.com/examp… ileformat/ понял, что на маке надо непременно указывать формат, умолчания нет (как в 2007 — если ничего не говорить, будет xlsx). Константа для xlsx = 51, однако для Excel 2011 и Excel 2016 версии 15 надо прибавлять 1, то есть 52. У человека 16.54, тогда я 51 задаю?

И второе:

Visual Basic
1
2
3
4
         If Dir(FN1) = "" Then
            MsgBox "Не найден входной файл", vbCritical + vbOKOnly, "Внимание"
            Exit Sub
         End If

На винде пучком, даже если задан файл с пробелами: D:TestWeebОтчёт по оферте №6713101 от 03.01.2022.xlsx
А на маке, говорит человек, дает ошибку. Если без пробелов (D:TestWeebОтчёт№6713101.xlsx) — то нормально. Не понимаю…
Нашел по этой теме (https://sqlite.in/?qa=468061/d… l-2011-vba), что надо (в каких случаях?) указывать константу для Dir:

Visual Basic
1
strFile = Dir(strPath, MacID("TEXT"))

Но какую для xlsx? И надо ли или в чем вопрос?
Сложно, когда Мака для тестов нет. Если у вас, уважаемый SlavaRus, есть возможность проверить, было бы хорошо.



0



  • Remove From My Forums
  • Question

  • добрый день, не работают макросы на mac, при открытие excel файла пишет, что «Открытая книга содержит автоматические связи с данными в другой книге» ну и дальше при игнорировании связей дальше выдает некоторые ошибки. На windows
    такой проблемы нет. и у коллеги на mac вроде тоже нет. у меня office 365

Понравилась статья? Поделить с друзьями:
  • Не работает макрос в excel 2016
  • Не работает макрос в excel 2010
  • Не работает макрос vba в excel
  • Не работает курсор в excel это
  • Не работает контроль в excel