اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

ظاهرا هناك خلل في نسخة الاوفيس المستخدمة ، فجرب ان تعمل لها تحديث ، او جرب نسخة اخرى فيها جميع تحديثات الاوفيس 🙂

 

جعفر

قام بنشر

تم التوصل الى الخلل 

في هذه الدالة apiGetUserName

 

 

بالذات هذا السطر 

nSize As Long

لازم يكون 

nSize As LongPtr

 

طلبي الان هو التعديل في الكود بخيث يعمل على النواتين

Option Compare Database
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As LongPtr) As Long

#Else
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #End If

Function fOSUserName() As String
' Returns the network login name




Dim lngLen As Long, lngx As Long

Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngx = apiGetUserName(strUserName, lngLen)
    If (lngx > 0) Then
        fOSUserName = Left$(strUserName, lngLen - 1)
    Else
        fOSUserName = vbNullString
    End If
End Function

بالذات في هذه الدالة

 

Function fOSUserName() As String
' Returns the network login name




Dim lngLen As Long, lngx As Long

Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngx = apiGetUserName(strUserName, lngLen)
    If (lngx > 0) Then
        fOSUserName = Left$(strUserName, lngLen - 1)
    Else
        fOSUserName = vbNullString
    End If
End Function

 

لانها ظهرت اخطاء في هذه الاسطر 

 

 lngx = apiGetUserName(strUserName, lngLen)


   

وهذا السطر


       

 fOSUserName = Left$(strUserName, lngLen - 1)

 

 

 

قام بنشر

جرب هذا

احذف هذه الاسطر
#If VBA7 Then
Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As LongPtr) As Long

#Else
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    #End If


واستبدلها بهذا
Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

 

فيه تعديل في السطر الاخير ، فلا تستعمل السطر اللي عندك ، وانما اعمل نسخ للسطر الذي كتبته لك اعلاه 🙂

 

جعفر

قام بنشر

نعم ، حسب بيانات مايكروسوفت في الملف Win32API_PtrSafe والمرفق في اول مشاركة لي 🙂

 

جعفر

قام بنشر
في ٤‏/٥‏/٢٠٢٢ at 20:52, عبدالله المجرب said:

هل تقصد ان الدالة بوضعها التالي 

Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

ستعمل على النواتين

 

جربت هذا الحل والى الان الامور تمام 

سلمت استاذ جعفر 

شكرا لك وكل عام والجميع بخير

قام بنشر
26 دقائق مضت, عبدالله المجرب said:

جربت هذا الحل والى الان الامور تمام 

الحمدلله 🙂

 

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
×
×
  • اضف...

Important Information