Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2017, 12:35   #1
odeon16
Пользователь
 
Регистрация: 02.01.2017
Сообщений: 14
По умолчанию Выполнение макросов на 64х разрядных системах.

Добрый день, гуру экселя.
Подскажите ответ на следующий непростой для меня вопрос.

Часто сталкиваюсь с тем, что некоторые макросы - не выполняются на 64х разрядных системах.

Подскажите универсальную строчку кода, которая бы позволила запускаться макросу - на 64х разрядных системах ?
odeon16 вне форума Ответить с цитированием
Старый 16.03.2017, 12:46   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
msgbox 1
универсально
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2017, 12:46   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
#If VBA7 Then
Public Declare PtrSafe  Function bla-bla-bla
#Else
Public Declare  Function bla-bla-bla
#End If
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.03.2017, 13:09   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Нашёл вот такую "строку".
Но думаю что и это не унивесально... в отличие от примера выше
Код:
#If Win64 Then
    #If VBA7 Then    ' Windows x64, Office 2010
        Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As LongLong) As LongLong
        Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongLong, ByVal nCmdShow As Integer) As Integer
        Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongLong, ByVal wMsg As LongLong, ByVal wParam As Integer, ByVal lParam As Any) As LongLong
        Declare PtrSafe Function GetParent Lib "user32" (ByVal hwnd As LongLong) As LongLong
        Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongLong, ByVal wCmd As LongLong) As LongLong
        Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongLong
        Declare PtrSafe Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As LongLong, lpdwprocessid As LongLong) As LongLong
        Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As LongLong, ByVal hwndChildAfter As LongLong, ByVal lpszClass As String, ByVal lpszWindow As String) As LongLong
    #Else    ' Windows x64,Office 2003-2007
        Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As LongLong) As LongLong
        Declare Function ShowWindow Lib "user32" (ByVal hwnd As LongLong, ByVal nCmdShow As Integer) As Integer
        Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongLong, ByVal wMsg As LongLong, ByVal wParam As Integer, ByVal lParam As Any) As LongLong
        Declare Function GetParent Lib "user32" (ByVal hwnd As LongLong) As LongLong
        Declare Function GetWindow Lib "user32" (ByVal hwnd As LongLong, ByVal wCmd As LongLong) As LongLong
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongLong
        Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As LongLong, lpdwprocessid As LongLong) As LongLong
        Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As LongLong, ByVal hwndChildAfter As LongLong, ByVal lpszClass As String, ByVal lpszWindow As String) As LongLong
    #End If
#Else
    #If VBA7 Then    ' Windows x86, Office 2010
        Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
        Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Integer) As Integer
        Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
        Declare PtrSafe Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
        Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
        Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
        Declare PtrSafe Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long
        Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
    #Else    ' Windows x86, Office 2003-2007
        Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
        Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Integer) As Integer
        Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
        Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
        Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
        Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long
        Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
    #End If
#End If
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.03.2017, 13:16   #5
odeon16
Пользователь
 
Регистрация: 02.01.2017
Сообщений: 14
По умолчанию

Ясно.
Всем спасибо за советы.
odeon16 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение различных макросов Дмитрий_Костенко Microsoft Office Excel 26 09.04.2015 10:58
Последовательное выполнение макросов mr_eas Microsoft Office Excel 2 02.10.2013 10:53
Выполнение инпутбокса вне макросов tibhar940 Microsoft Office Excel 14 21.09.2012 00:34
Автоматический запуск макросов с листа на котором указан перечень макросов с параметрами и без Neoli Microsoft Office Excel 2 09.03.2009 14:31
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12