64-bit hatası hk

Katılım
4 Nisan 2011
Mesajlar
209
Excel Vers. ve Dili
2010 İNGİLİZCE
arkadaslar 32-bit 2010-ing.excellde makro calısırken 64-bit 2010-ing excellde asağıdaki hatayı alıyorum nasıl düzeltebilirim.
arastırdım As Long kısmını As Longptrsafe olarak değistirince bu sefer "wininet.dll" düzelmiyor. tsk

Option Explicit

Private Declare
InternetGetConnectedStateEx Lib "wininet.dll" _
(ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, _
ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
 
Katılım
4 Nisan 2011
Mesajlar
209
Excel Vers. ve Dili
2010 İNGİLİZCE
tsk göndermis olduğunuz dosyayı sayfa indirmemem izin vermiyor wininet.dll sorununu baska nasıl çözebilirim,
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Öncelikle sorun wininet.dll sorunu değil. Ayrıca ilk mesajdaki araştırmanızı da ya yanlış yapmışsınız, ya da yanlış anlamışsınız.
Olması gerekeni aşağıda verdim. Ama bilmeniz gereken bir nokta daha var; 64Bit API'ler Declare PtrSafe ile başlar ama tüm API'lerde değişken tipi Long olan değişkenlerin, değişken tipini LongPtr yapamazsınız.
Manuel olarak elle değiştirmek yerine, ilgili API'yi Google'da araştırıp, 64Bit için kullanılabilir olan API deklerasyonu ile değiştirmelisiniz. Doğrusu budur.



Bu API'yi kullanabilirsiniz;
Kod:
Public Declare PtrSafe Function InternetGetConnectedState _
        Lib "wininet.dll" (lpdwFlags As LongPtr, _
        ByVal dwReserved As long) As Boolean
 
Katılım
4 Nisan 2011
Mesajlar
209
Excel Vers. ve Dili
2010 İNGİLİZCE
üstad vermis olduğun apının deklerasyonu nasıl bulabilirim arastırdım fakat asağıdaki örnekten baska bulamadım, yardımların rica olunur,


Public Declare Function InternetGetConnectedState _
Lib "wininet.dll" (lpdwFlags As Long, _
ByVal dwReserved As Long) As Boolean

Public Declare PtrSafe Function InternetGetConnectedState _
Lib "wininet.dll" (lpdwFlags As LongPtr, _
ByVal dwReserved As long) As Boolean
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,001
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif olrarak aşağıdaki kodu deneyiniz.

Kod:
Option Explicit

#If VBA7 And Win64 Then
    Private Declare PtrSafe Function InternetGetConnectedState _
            Lib "wininet.dll" (lpdwFlags As LongPtr, _
            ByVal dwReserved As Long) As Boolean
#Else
    Private Declare Function InternetGetConnectedState _
            Lib "wininet.dll" (lpdwFlags As Long, _
            ByVal dwReserved As Long) As Boolean
#End If

Sub Test()
    MsgBox InternetGetConnectedState(0&, 0&)
End Sub
 
Katılım
4 Nisan 2011
Mesajlar
209
Excel Vers. ve Dili
2010 İNGİLİZCE
asağıdaki kısımda hata var sanırım kırmızı ile uyarıyor

#Else
Private Declare Function InternetGetConnectedState _
Lib "wininet.dll" (lpdwFlags As Long, _
ByVal dwReserved As Long) As Boole Option Explicit




mevcut hali asağıdaki gibidir,

Option Explicit

#If VBA7 And Win64 Then
Private Declare PtrSafe Function InternetGetConnectedState _
Lib "wininet.dll" (lpdwFlags As LongPtr, _
ByVal dwReserved As Long) As Boolean
#Else
Private Declare Function InternetGetConnectedState _
Lib "wininet.dll" (lpdwFlags As Long, _
ByVal dwReserved As Long) As Boolean
#End If

Sub Test()
MsgBox InternetGetConnectedState(0&, 0&)
End Sub

Public Function CheckInternetConnection() As Boolean
Dim Aux As String * 255
Dim Kontrol As Long
Kontrol = InternetGetConnectedStateEx(Kontrol, Aux, 254, 0)
If Kontrol = 1 Then
CheckInternetConnection = True
Else
CheckInternetConnection = False
End If
End Function
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,001
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kırmızı ile uyarı vermesi önemli değil. Kodun bu halini hem 32 bit hem de 64 bit sistemde deneyip sonucu gözlemleyiniz.
 
Katılım
4 Nisan 2011
Mesajlar
209
Excel Vers. ve Dili
2010 İNGİLİZCE
korhan bey,

alternatif olarak verdiğiniz kodları denedim fakat .ProgressBar1 hatası vermektedir, ek'li dosyayı sanırım üyelikten dolayı açamadığım icin deneyemiyorum,


DoEvents
BEKLEME.ProgressBar1.Value = (SATIR_SAYISI / TOPLAM_SATIR_SAYISI) * 100
BEKLEME.Label2.Caption = Format((SATIR_SAYISI / TOPLAM_SATIR_SAYISI) * 100, "% 0")

Kontrol = Weekday(X, vbMonday)
If Kontrol > 5 Then
Y = X - (Kontrol - 5)
Else
Y = X
End If
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Sn. mosmos2009, bahsettiğiniz hata için size yanıt vermiştim.
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Sayın Murat hocam bir kaç sorum olacak terimleri anlamak için PtrSafe ne iş yapar; bu kodda yani ne işe yarar, ayrıca aşağıda örnekteki gibi # ile başlayan kodlar var burada # işaretinin amacı yada ne işe yaradığı ve 32 bittete 64 bittede örneğin user32 ise hedef budara kodun 64 bitte çalışmasını sağlayan nedir ? bu kodlların yaptığı kısaca nedir ne yapıyorda 64 bitte çalışmayan kodu çalışır hale getiriyor bu konularda aydınlatıcı öğretici bilgi paylaşırsanız çok memnun olurum teşekkürler.


#If VBA7 And Win64 Then
Private Declare PtrSafe Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
#Else
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
#End If
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Sistem sizden o şekilde Declare etmenizi istiyor. Yapacak bir şey yok. ;)
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Tamam hocam orada bir sıkıntı yok ama bana # işaretiyle başlayan kodlar yabancı ayrıca PtrSafe terimide yabancı bu terimlerin ve # işaretinin özelliği ne işe yaradığı nı öğrenmek istedim sadece bil amaçlı. ayrıca yukarıda örnekte verdiğim kod ne yapıyorda macro 64 bitte çalışmaya balıyor sistemde ne değişiyor merak ettiğimden size sormak istedim.
 
Katılım
7 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
turkce
Sayın zorbey eklemiş oldugunz dosya birkaç defa denememe rağmen dosya bulunamadı uyarısı veriyor alternatıf başka link eklemenizi rica ederım
Saygılar
 
Katılım
7 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
turkce
ekli dosyada Ptrsafe yazıldığı halde makrolar calısmıyor. merkez bankasının sayfa değiskiliğinden dolayı calısmıyor olabilirmi, ayrıca windows için herhangi bir dosya yüklemek gerekirmi,

Private Declare
InternetGetConnectedStateEx Lib "wininet.dll" _
(ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, _
ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
 
Üst