Makale VBA Versiyonları

Murat OSMA

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,253
En iyi yanıt
9
Puanları
113
Konum
İstanbul
Web sitesi
excelarsivi.com
Ad Soyad
Murat OSMA
[BGCOLOR=rgb(184, 49, 47)]Versiyon 6.5[/BGCOLOR]

Office 2007 ile birlikte sunuldu.
vba6-min.png

[BGCOLOR=rgb(184, 49, 47)]Versiyon 7.0[/BGCOLOR]

Office 2010 ile birlikte sunuldu ve hem 32 bit hem de 64 bit için destek sağlamakta.


Yenilikler:

DefType - DefLngPtr
vartype sabiti vbLongLong

LongLong Veri Türü
LongLong
adında yeni bir veri türünün tanıtımı
Bu, -9,223,372,036,854,775,808 ve 9,223,372,036,854,775,807 arasındaki değerleri içeren bir 8 baytlık (64 bit) işaretli tam sayıdır.
Bu yalnızca 64 bit kurulumlarda kullanılabilir. Excel yalnızca 15 basamak hassasiyeti sağlar, böylece bu şekilde büyük bir sayı kaydedilemez.

Yeni bir sanal tür sabitidir - vbLongLong
Bu, Office 2010'un yalnızca 64-bit sürümlerinde kullanılabilen bir 8 baytlık veri türüdür.
LongLong tipi bildirim karakteri (^) dir.
LongLong değerinin, en uzun Long değerinden daha büyük olduğunu bildirmesi gerekiyor.

CLngLng Fonksiyonu
Bu yeni veri tiplerine eşlik etmek için yeni bir dönüşüm işlevi de vardır CLngLng Ayrıca DefLngLng'nin yeni bir DefType ifadesi de vardır.

LongPtr Veri Türü
LongPtr
adlı yeni bir veri türünün tanıtımı.
Bu veri türü, 32 bit yüklemede Long ve 64 bit yüklemede LongLong olur.
Bu, yeni kod için bir işaretçi veya tanıtıcı bildirmenin önerilen yoludur, ancak 64 bit sürümünde çalışması gerekiyorsa eski kod için de kullanılabilir.
Sadece VBA7 çalışma zamanında 32-bit ve 64-bit'te desteklenir.
LongPtr için gerektiren tek şey, işlev argümanları veya bellekteki adresleri temsil eden döndürme değerleridir.

CLngPtr İşlevi
Ayrıca yeni bir dönüşüm fonksiyonu CLngPtr.
DefLngPtr
'ın yeni bir DefType ifadesi de vardır.
LongPtr kullanan herhangi bir kod, hem 32 bit hem de 64 bit üzerinde çalışacaktır.

PtrSafe Anahtar Kelime
32 bit
ofisinde bir işaretçi 32 bit değişken olmalıdır. 64 bitlik bir ofiste de bir işaretçi 64 bit değişken olmalıdır.
Bir API bildirirken, PtrSafe anahtar sözcüğünü API bildirimine eklemelisiniz.

Public Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongLong
Bir değişkeni LongPtr olarak bildiren herhangi bir kod, hem 32 bit hem de 64 bit ofisinde başarıyla geçirilebilir.
Public Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongLong

VBA7 Derleyici Sabit
Kodun hem 32 bit hem de 64 bit ofisinde çalışmasına izin vermek için iki yeni derleyici sabiti eklendi.
Office 64 bit sürümü varsa, Win64 sabiti doğrudur, Win32 sabitleri de 64 bit ofis için doğrudur.
VBA7 sabit Office 2010 veya daha sonraki için doğrudur #If VBA7 ve Win64 sonra #Else #End If

Win64 Derleyici Sabit
VarPtr İşlevi

Varyant dönüştürücüdür. 64 bit sürümlerde bir LongPtr ve 32 bit uzun sürümleri (4 bayt) döndürür.

ObjPtr İşlevi
Nesne dönüştürücüdür. 64 bit sürümlerde bir LongPtr ve 32 bit uzun sürümleri (4 bayt) döndürür.

StrPtr İşlevi
Dize dönüştürücüdür. 64 bit sürümlerde bir LongPtr ve 32 bit uzun sürümleri (4 bayt) döndürür.

DefLngPtr
Bir dizi değişken için varsayılan veri türünü LongPtr olarak ayarlar.

DefLngLng
LongLong
olarak bir dizi değişken için varsayılan veri tipini ayarlar.

Office 2010, hem 32 bit hem de 64 bit sürümlerinde kullanılabilir.
64-bit Office'i çalıştırırken bazı yeni özellikleri barındırmak için yeni bir VBA sürümü (VBA 7.0) eklendi.

Neden 64 bit:
Excel
, Microsoft Office'in 64 bit sürümü ile çok daha büyük çalışma sayfalarını işleyebilir.

64 bit Ofis çalıştırıyorsanız iki temel sorun:
1) VBA daha önce bir işaretçi veri tipine sahip değildi ve bu nedenle geliştiriciler, işaretçileri ve tutamaçları saklamak için 32-bit değişkenleri kullandılar. Bu değişkenler şimdi Declare deyimlerini kullanırken API çağrıları tarafından döndürülen 64 bitlik değerleri kesmektedir.
2) Office 2010'daki 64 bit işlemler, 32 bit ikili dosyaları yükleyemez.
Hem üçüncü taraf hem de Microsoft tarafından sağlanan mevcut 32 bit ActiveX denetimleri, 64 bit Office ile uyumlu değildir.
Bu MSComCtl (TabStrip, Araç Çubuğu, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox)
ve MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar) denetimlerinin ortak denetimlerini içerir.

Microsoft Office Kod Uyumluluk denetçisi eklentisi:
Microsoft Office Code Compatibility Inspector user's guide

1) Var olan Windows API bildirimlerini güncellemeniz gerekir (Declare)
Windows'un 64 bit sürümündeyseniz, ancak Office'in 32 bit sürümü kullanıyorsanız, aşağıdakine benzer API çağrılarını bildirebilirsiniz. .

PHP:
#If Win64 Then
    Declare PtrSafe Function GetTickCount64 Lib "kernel32"() As LongLong
#Else
    Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#End If

Windows'un 64 bit sürümündeyseniz ve Office'in 64 bit sürümü kullanıyorsanız, API çağrılarını şu şekilde bildirebilirsiniz:

PHP:
#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

Office 2010 (32 bit veya 64 bit) ve Office'in önceki sürümlerinde çalışan kod:
Hem yeni hem de eski Office sürümlerinde çalışabilen kod yazmak için, yeni VBA7 ve Win64 koşullu Derleyici Sabitler'in bir birleşimini kullanabilirsiniz.
VBA7 koşullu derleyici sabiti, kodun VB editörünün (Office 2010'da gönderdiği VBA sürümü) 7. sürümünde çalışıp çalışmadığını belirlemek için kullanılır. Win64 koşullu derleme sabiti, Office'in hangi sürümünün (32 bit veya 64 bit) çalıştığını belirlemek için kullanılır.

PHP:
#If VBA7 Then
'  Kod VBA7 editoründe çalışır.
     #If Win64 Then
     '  Kode Microsoft Office'in 64-bit versionlarında çalışır.
     #Else
     '  Kode Microsoft Office'in 32-bit versionlarında çalışır.
     #End If
#Else
' Kod, VBA sürüm 6 veya daha önceki sürümlerinde çalışır.
#End If

#If VBA7 Then
    Declare PtrSafe Sub...
#Else
    Declare Sub...
#End If


[BGCOLOR=rgb(184, 49, 47)]Versiyon 7.1[/BGCOLOR]

Office 365, Office 2016 ve Office 2013 sürümleri için sunuldu.

vba7-min.png
 
Son düzenleme:
Üst Alt