Zauważyłem, że Office 2010 pochodzi z Visual Basic for Applications 7.0. Jednak nie mogę znaleźć wiele dokumentacji na temat zmian, które zostały wprowadzone. Czy ktoś ma podsumowanie zmian lub jakiekolwiek zasoby opisujące różnice?Jakie są różnice między VBA 6.0 a VBA 7.0?
Odpowiedz
Nie wiele zmieniło się między VBA6 a VBA7. VBA7 został wprowadzony do obsługi 64-bitowych wersji Office i Windows (zobacz poniżej, na czym polegają te różnice). Oto najważniejsze zmiany:
64-bitowego, głównie dla API połączeń. Jest to zarówno używany do pracy kod z OS/wersja pakietu Office, a także innych (tzn ktoś w pakiecie Office 2003/WinXP)
Jeśli jesteś w wersji 64-bitowej Windows, ale są w 32-bitowej wersji pakietu Office , można zadeklarować wywołania API jak poniżej. .
#If Win64 Then Declare PtrSafe Function GetTickCount64 Lib "kernel32"() As LongLong #Else Declare PtrSafe Function GetTickCount Lib "kernel32"() As Long #End If
Jeśli jesteś w wersji 64-bitowej Windows i są w 64-bitowej wersji Urzędu, można zadeklarować wywołań API jak: .
#If VBA7 Then Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (_ ByVal lpClassName As String, _ ByVal lpWindowName As String) As LongPtr #Else Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _ lpClassName As String, ByVal lpWindowName As String) As Long #End If
W tym wspiera, są:
trzy słowa kluczowe (2 typy danych i 1 modyfikator):
LongPtr
,LongLong
iPtrSafe
Jedna nowa funkcja:
CLngLng()
(tj. Int64)Nowe stałe kompilacji użyte powyżej:
VBA7
iWin64
VBA7 jest zgodny z 64-bitowymi wersjami pakietu Office.
Ten kawałek na MSDN ma więcej na temat zmian w VBA 7 dla pakietu Office 2010:
Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać odnośnik. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – Marco13
Oczywiście masz rację, ale pamiętaj, że była to odpowiedź ze stosunkowo wczesnych dni SO, zanim takie konwencje zostały naprawdę skodyfikowane. Pomyśl o zaakceptowanej odpowiedzi, a ta prawie całkiem pokrywa sprawy :) – Lunatik
Ten komentarz został automatycznie wstawiony podczas sprawdzania (tylko link-only-end zazwyczaj kończy się kolejką o niskiej jakości). – Marco13
T tutaj są również inne zmiany ... Mam użytkowników w polu raportu, że kod, który działał poprawnie w 2007 r. nie działa i pokazuje błędy.
Przykład ten działa w VBA6 (Excel 2007)
PRINT STRING$(80,"=")
mynewdata = MID$(mydata, 15,4)
To wypisuje linię wykonaną z "=" znaków jako wizualny przerwy, a potem patrzy na MyData, przeskakuje znaków i dostaje z nich, wynik jest przechowywany w mynewdata. Nie powiedzie się w VBA7 (Excel 2010).
znalazłem potencjalne obejście ...
PRINT VBA.STRING$(80,"=")
mynewdata = VBA.MID$(mydata, 15,4)
LUB
PRINT VBA.STRING(80,"=")
mynewdata = VBA.MID(mydata, 15,4)
Pełną listę zmian nadal będzie pomocny ... i/lub konwerter plików.
- 1. Jakie są różnice między postem a stroną
- 2. Jakie są różnice między przerwą a wyjściem?
- 3. Jakie są różnice między MPI a OpenMP?
- 4. Jakie są różnice między typedef a używaniem?
- 5. Jakie są różnice między programem a aplikacją?
- 6. Różnica między Thisworkbook.name a Activeworkbook.name w VBA
- 7. Jakie są różnice między java 1.5 a java 1.6
- 8. Jakie są różnice między widokiem snapshot a widokiem dynamicznym?
- 9. Jakie są różnice między & a &&, | i || w R?
- 10. Jakie są różnice między Visual Studio Code a Visual Studio?
- 11. Jakie są różnice między gradle assemble a gradle build taks?
- 12. Jakie są różnice między rzutami a ponownymi rzutami w Swift?
- 13. Jakie są podstawowe różnice między instancją a obiektem klasy?
- 14. Jakie są różnice między trybem binarnym MD5 a trybem tekstowym?
- 15. Jakie są różnice między Tibco EMS a Rendezvous
- 16. Jakie są różnice w JIT między Javą a .Net
- 17. Jakie są duże różnice między wtyczką IntelliJ + Ruby a RubyMine?
- 18. Jakie są różnice między powłoką logowania a powłoką interaktywną?
- 19. Jakie są różnice między Hazelcast Jet a Apache Flink?
- 20. Jakie są różnice między PECL i PEAR?
- 21. Jakie są różnice między Haskell i PureScript?
- 22. Jakie są różnice między Conda i Anaconda
- 23. Jakie są różnice między @dynamic i @synthesize?
- 24. Jakie są różnice między LinFu.DynamicProxy i Castle.DynamicProxy?
- 25. Jakie są różnice między możliwościami obliczeniowymi CUDA?
- 26. Jakie są różnice między utf8_general_ci i utf8_unicode_ci?
- 27. Jakie są możliwe przyrostki po nazwie zmiennej w VBA?
- 28. Różnice między GWT a Vaadin
- 29. W C++, jakie są różnice między static_cast <double> (a) i double (a)?
- 30. Cudzysłów w VBA
@ Todd Chcę tylko zwrócić uwagę, LongPtr jest aliasem i wskazuje na prawidłowy typ danych podczas korzystania z 64-bitowego lub 32-bitowego słowa. Zatem LongPtr wskazywałby LongLong na 64-bitowe biuro i Long na 32-bitowe biuro. Poniższa instrukcja będzie działać zarówno w biurze 32-bitowym, jak i 64-bitowym. Zadeklaruj funkcję PtrSafe GetTickCount Lib "kernel32"() Jako LongPtr – Syler
@Syler, to dobra uwaga. Nie testowałem jeszcze tego, ale ma to sens, co powiedziałeś. –