Office 2010'un Visual Basic for Applications 7.0 ile birlikte geldiğini fark ettim. Ancak, hangi değişikliklerin yapıldığı konusunda fazla belge bulamıyorum. Herhangi bir değişiklik ya da farklılıkları açıklayan kaynakların bir özeti var mı?VBA 6.0 ve VBA 7.0 arasındaki farklar nelerdir?
cevap
VBA6 ile VBA7 arasında değişen bir sürü lot yok. VBA7, hem Office hem de Windows'ın 64 bit sürümlerini desteklemek için tanıtıldı (bu farklılıkların ne olduğuna bakın). İşte anahtar değişiklikler şunlardır:
64-bit desteği, öncelikle API aramalar için. Bu, hem sizin OS/Ofis versiyonu hem de başkaları (yani Ofisi birisi 2003/WinXP)
Eğer Windows'un 64 bit sürümünde ise ile kod çalışması için kullanılır, ancak Office'in 32-bit sürüm üzerindeyseniz, aşağıdaki gibi numaralı API çağrılarını bildirebilirsiniz. . :
#If Win64 Then Declare PtrSafe Function GetTickCount64 Lib "kernel32"() As LongLong #Else Declare PtrSafe Function GetTickCount Lib "kernel32"() As Long #End If
Eğer Windows'un 64 bit sürümünde ise, ve Office'in 64 bit sürümünde üzerinde, API gibi çağrıları ilan edebilir. Bunu desteklemek için
#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
vardır:
üç yeni anahtar (2 veri türleri ve 1 modifiye edici):
LongPtr
,LongLong
vePtrSafe
Tek yeni işlev:
CLngLng()
(ör. Int64) yukarıda kullanıldığı gibiyeni derleme sabitleri:
VBA7
veWin64
VBA7, Office'in 64 bit sürümleriyle uyumludur.
MSDN'de Bu parça Office 2010 için VBA 7 değişikliklere daha vardır:
Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. – Marco13
Elbette doğru, ama bu konvansiyonlar gerçekten kodlanmış önce, bunun SO'nun nispeten erken dönemlerinden bir cevap olduğunu unutmayın. Kabul edilen cevabı düşünün ve bu oldukça fazla şeyleri kapsar :) – Lunatik
Bu yorum, bir inceleme sırasında otomatik olarak eklenmiştir (yalnızca bağlantıya yönelik yanıtlar düşük kaliteli inceleme kuyruğunda olma eğilimindedir) – Marco13
T Burada başka değişiklikler de var ... Alanında bulunan kullanıcılara 2007'de düzgün bir şekilde çalışan kodun artık çalışmıyor ve hataları gösterdiğine inanıyorum.
Örnek, bu VBA6 çalışır (Excel 2007)
PRINT STRING$(80,"=")
mynewdata = MID$(mydata, 15,4)
Bu bir görsel mola olarak "=" karakterlerden oluşan bir çizgi yazdırır sonra MyData bakar, üstünden atlar karakterler ve alır, sonuç mynewdata içinde depolanır. VBA7'de başarısız olur (Excel 2010).
Potansiyel bir çözüm buldunuz...
PRINT VBA.STRING$(80,"=")
mynewdata = VBA.MID$(mydata, 15,4)
VEYA
PRINT VBA.STRING(80,"=")
mynewdata = VBA.MID(mydata, 15,4)
değişikliklerin tam listesi hala yararlı olacaktır ... ve/veya bir dosya dönüştürücü.
- 1. Vba
- 2. RDD'lerin dilimleri ve bölümleri arasındaki farklar nelerdir?
- 3. Yüzey Görünümü ve TextureView arasındaki farklar nelerdir?
- 4. StringTemplate ve FreeMarker arasındaki temel farklar nelerdir?
- 5. OllyDbg ve WinDbg arasındaki farklar nelerdir?
- 6. R.styleable, R.style ve R.attr arasındaki farklar nelerdir?
- 7. Osql, isql ve sqlcmd arasındaki farklar nelerdir?
- 8. 'require`,' import` ve `use` arasındaki farklar nelerdir?
- 9. Model, ModelMap ve ModelAndView arasındaki farklar nelerdir?
- 10. Bildirim ve pynotify arasındaki farklar nelerdir?
- 11. .Net'de ConcurrentQueue ve BlockingCollection arasındaki farklar nelerdir?
- 12. Esnek büyüme ve genişlik arasındaki farklar nelerdir?
- 13. arasındaki fark nedir? = Ve = Excel'de VBA
- 14. VBA
- 15. VBA
- 16. VBA
- 17. VBA
- 18. VBA
- 19. VBA
- 20. VBA
- 21. VBA
- 22. VBA
- 23. VBA
- 24. VBA:
- 25. Farklı yollarda clang arasındaki farklar nelerdir?
- 26. Derleyici ile bağlayıcı arasındaki farklar nelerdir?
- 27. Perl değişken bildirimi içinde $, @,% arasındaki farklar nelerdir?
- 28. Recordset VBA ve C#
- 29. SAS IOM ve VBA
- 30. VBA ve GetRawInputDeviceList
@Todd Sadece işaret etmek istiyorum, LongPtr bir takma addır ve 64 bit veya 32 bit kelime kullanıldığında doğru veri tipini işaret eder. Bu yüzden LongPtr, 64 bitlik ofis ve Long 32bit ofisinde LongLong'a işaret ediyordu. Aşağıdaki ifade hem 32 hem de 64bit ofisinde çalışacaktır. PtrSafe İşlevini Bildir GetTickCount Lib "kernel32"() LongPtr – Syler
@Syler, bu iyi bir nokta. Henüz test etmedim ama söylediklerini anlamışsın. –