• Microsoft Office 2010+ - wersja 64 i 32 bitowa.
Co to jest 64-bitowy system.
Bardziej właściwe i uniwersalne określenie to „architektura x64”. Jest to model przetwarzania danych porcjami po 64 bitów. W odniesieniu do możliwości adresowania pamięci, 64 bity określają ilość możliwych do zaadresowania komórek. Ponieważ istnieje 264 wariacji 64-bitowego adresu, wynika stąd, że można bezpośrednio zaadresować 18 446 744 073 709 551 616 (16 eksabajtów) komórek pamięci. Bardziej obrazowo zabrzmi ok. 16 miliardów GB pamięci. Jak na razie nie jesteśmy w stanie zbliżyć się do tej wartości.
„Architektura x64” to nie tylko ilość obsługiwanej pamięci. System x64 nie ustępuje systemowi x86 jeśli chodzi o szybkość w aplikacjach 32-bitowych. Jeżeli program (aplikacja) będzie skompilowany w obydwóch wersjach, to wersja 64 bitowa powinna być nieco szybsza. Warto pamiętać, że jeżeli program (aplikacja) będzie napisane w systemie 64 bitowym, to może być uruchomiona tylko na systemie 64-bitowym.
Co wybrać ? Pakiet Microsoft Office 2010+ w wersji 32 bitowej, czy 64 bitowej ?
Microsoft Office 2010+ jest obecnie dostępny w 32 i 64 bitowej wersji. Wraz z wprowadzeniem 64 bitowej wersji pakietu
Microsoft Office 2010+, wprowadzona została nowa wersja Microsoft Visual Basic for Applications 7.0 (VBA 7)
.
32 bitowa wersja pakietu Office 2010+ pozwala nadal używać istniejących 32 bitowych dodatków dla pakietu Office
oraz korzystanie ze „starego” kodu bez konieczności jakichkolwiek modyfikacji w kodzie VBA.
Jeżeli zdecydujemy się na korzystanie z 64 bitowej wersji Microsoft Office, to musimy się liczyć z konsekwencjami migracji na nowy system, w którym nie będą prawidłowo funkcjonowały m.in.:
- Visual Basic for Applications zawierające instrukcję Declare funkcji 32 bitowych. Należy zaktualizować kod,
tak by wszystkie istniejące 32 bitowe odwołania do
wskaźników
iuchwytów
zostały zastąpione 64 bitowymi odpowiednikami. - Biblioteka formantów ActiveX ComCtl zawierająca m.in. kontrolki: ImageCombo, ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, Toolbar, TreeView
- Formanty ActiveX, dodatki COM oraz biblioteki DLL w wersji 32 bitowej. Należy je zastąpić nowymi, 64 bitowymi zamiennikami (o ile takie istnieją).
- Skompilowane bazy danych programu Access w postaci plików MDE oraz ACCDE należy zaktualizować, przetestować i skompilować w wersji 64 bitowej.
- Integracja programu Communicator po zainstalowaniu 64 bitowej wersji pakietu Office zostaną utracone niektóre funkcje programu Microsoft Office Communicator 2007, obejmujące m.in. integrację z programem Outlook.
Jeżeli chcemy korzystać w 64 bitowej wersji Microsoft Office z rozwiązań opartych na funkcjach API
(ang.) Application Programming Interface, (interfejs programowania aplikacji)
to musimy zaktualizować wszystkie istniejące 32 bitowe odwołania do wskaźników (address pointers)
i uchwytów (handlers)
odwołujących się do określonych miejsc w pamięci fizycznej, do 64 bitowych
odwołań tak, by pracowały prawidłowo w wersji 64 bitowej.
W zależności od tego, czy używamy 32 lub 64 bitowej wersji, rozmiar wskaźnika
lub uchwytu
(w bajtach) będzie różny.
W aplikacjach 64 bitowych do przechowywania wskaźników
i uchwytów używana jest 64 bitowa liczba całkowita
typu LongLong lub specjalny typ LongPtr, który jest 8 bajtową
liczbą typu LongLong w 64 bitowej wersji pakietu Office 2010+ i 4 bajtową
liczbą typu Long w wersji 32 bitowej pakietu Office w wersji 2010+ i wyższej.
Wcześniejsze (32 bitowe) VBA nie miało takiego typu do przechowywania wskaźników
i uchwytów
,
więc w przypadku zadeklarowania wskaźnika (uchwytu)
jako typ Long,
wszystkie zmienne 64 bitowe zostałyby „ucięte” do wartości 32 bitowej i wskazywałyby na nieprawidłowy uchwyt.
• Visual Basic for Applications 7.0
Wraz z wprowadzeniem 64 bitowej wersji pakietu Microsoft Office 2010+, wprowadzona została przez Microsoft nowa wersja
Visual Basic for Applications 7.0 (VBA 7). Podstawowe zmiany w VBA 7
to 64-bitowe uchwyty (handlers)
i wskaźniki (address pointers)
, odwołujących się do określonych
miejsc w pamięci fizycznej. W celu ułatwienia pracy programistom wprowadzono nowe typy danych, nowy znak deklaracji
zmiennych (^), nowe funkcje konwersji danych, nowe, uniwersalne, funkcje zwracające wskaźniki
VarPtr, ObjPtr, StrPtr, stałą vbLongLong = 20 określającą typ zmiennej
LongLong oraz dwie stałe kompilacji warunkowej VBA7 i Win64.
- W celu ułatwienia pracy programistom wprowadzono:
- • kwalifikator PtrSafe,
- • dwa nowe typy danych:
- uniwersalny typ LongPtr,
- 64-bitowy typ LongLong,
- • nowy znak deklaracji zmiennych:
- ^ - jako typ LongLong
- • dwie nowe funkcje konwersji danych:
- CLngPtr,
- ClngLng,
- • trzy zmodyfikowane funkcje zwracające wskaźnik typu LongPtr:
- VarPtr,
- ObjPtr,
- StrPtr,
- • stałą:
- vbLongLong,
- • dwie stałe kompilacji warunkowej:
- VBA7,
- Win64.
Poniżej tabelka opisująca dokładniej nowości w VBA 7
Typ | Pozycja | Opis |
---|---|---|
Kwalifikator | PtrSafe | Określa, że deklaracja jest zgodna z 64 bitowymi środowiskami programistycznymi. Atrybut ten jest obowiązkowy w systemach 64 bitowych. |
Typ danych | LongPtr | 8 bajtowa liczba (LongLong) w 64 bitowej wersji pakietu Office 2010+ i 4 bajtowa (Long) w wersji 32 bitowej pakietu Office w wersji 2010+ i wyższej. Typ ten jest zalecany przy deklarowaniu wskaźników i uchwytów, zarówno w środowisku 32 bitowym jak i 64 bitowym. Należy pamiętać, że typ ten jest obsługiwany tylko w VBA 7 (zarówno w 32 bitowym jak i 64 bitowym środowisku). Korzystanie z typu LongPtr umożliwia pisanie przenośnego kodu, który może działać zarówno 32 jak i 64-bitowym środowisku VBA7. |
Typ danych | LongLong | 8 bajtowy typ danych. Przechowuje liczby w przedziale wartości od -9.223.372.036.854.775.808 do 9.223.372.036.854.775.807. Typ ten jest dostępny tylko w 64 bitowym środowisku (w 64 bitowej wersji pakietu Office.) |
Znak deklaracji | ^ | Znak deklaracji zmiennej typu LongLong. |
Operator konwersji | CLngPtr | Konwertuje przekazywane wyrażenie do typu LongPtr. |
Operator konwersji | CLngLng | Konwertuje przekazywane wyrażenie do typu LongLong. |
Funkcja | VarPtr | Zwraca wskaźnik typu LongPtr w wersji 64 bitowych do przekazanej zmiennej, a typu Long w 32 bitowym środowisku. |
Funkcja | ObjPtr | Zwraca wskaźnik typu LongPtr w wersji 64 bitowych do przekazanego obiektu, a typu Long w 32 bitowym środowisku. |
Funkcja | StrPtr | Zwraca wskaźnik typu LongPtr w wersji 64 bitowych do przekazanego ciągu znaków, a typu Long w 32 bitowym środowisku. |
Stała | vbLongLong | = 20 stała określająca typ zmiennej LongLong (tylko w 64 bitowym środowisku). |
Pakiet Microsoft Office w wersji 2010+ lub nowszej zawiera dwie nowe stałe kompilacji warunkowej: | ||
Stała kompilacji | VBA7 | Umożliwia sprawdzenie, czy uruchomiona aplikacja używa nowego VBA 7 (64 bitowego lub 32 bitowego),
czy poprzedniej 32 bitowej wersji VBA (6.0). Zwracana wartość VBA7 = TRUE informuje, że uruchomiona została aplikacja pakietu Office w wersji 2010+ lub nowszej. |
Stała kompilacji | Win64 | Umożliwia sprawdzenie, czy uruchomiona została 32 bitowa, czy 64 bitowa wersja pakietu Microsoft Office. |