حل مشکل ماژول ها در 64 و 32 بیتی
با سلام خدمت اساتید و دوستان عزیز
من یک فایل دارم که از ماژول های این سایت استفاده کرده ام و در سیستم 32 بیتی بدون هیچ مشکلی جواب می دهد ولی در سیستم 64 بیتی به متن ماژول ها ایراد می گیرد
مثل:
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
برای حل این مشکل راه حلی وجود دارد که فایل هم در سیستم 32 بیتی و هم در 64 بیتی جواب دهد
با تشکر
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
برادر بعد از declare باید اثن رو اضافه کنی ptrsafe
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
سلام
سعی کنید در برنامه هایتان جهت استفاده از رفرنسهای خارجی و استفاده از عبارت Declare از عبارات شرطی پیش پردازنده استفاده کنید.تا در سیستمهای 64بیتی به مشکل برنخورید
در مثال بالا:
#If Win64 Then
Declare PtrSafe Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#Else
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#End If
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
با سلام و تشکر
چون فایل من روی شبکه بود از راه حلی که دو فرمول 32 و 64 استفاده کردم و جواب داد .
1 ضمیمه
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
ممنون از پاسختون استاد امیری گرامی
من این شرط رو در استفاده کردم اما نمیدونم چرا خطا میگیره و بعد از قرار دادن PtrSafe بعد از Declare همون خط رو به رنگ قرمز در میاره
تصویر و کد استفاده شده را ضمیمه کردم ممنون میشم ملاحظه بفرمایین
If Win64 ThenPublic Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Else
Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
End If
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
سلام
دوست عزیز کلمه public را از سطر دوم و چهارم حذف کن
#If Win64 Then
Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
ممنون جناب عربی گرامی
ولی سطرهایی که با Public و حتی Declare شروع میشن هم همین شرایط رو دارن و به رنگ قرمز در میان
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
نقل قول:
چون فایل من روی شبکه بود از راه حلی که دو فرمول 32 و 64 استفاده کردم و جواب داد .
فایل من هم روی شبکه است . دوستمون از چه روشی استفاده کردن
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
سلام دوست گرامی
دستوراتی که نوشتی درسته فقط
از علامت # قبل از if و else و end if استفاده کن مشکلت حل میشه
1 ضمیمه
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
با تشکر از دوست گرامی amir91
من گفته شما رو هم اجرا کردم ولی مشکل همچنان حل نشده
ممنون میشم یه نمونه از کارهای خودتون رو ضمیمه کنید
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
#If Win64 Then
Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
دستور بالا را در برنامه خود paste کن
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
نقل قول:
نوشته شده توسط
G.hemati
ممنون از پاسختون استاد امیری گرامی
من این شرط رو در استفاده کردم اما نمیدونم چرا خطا میگیره و بعد از قرار دادن PtrSafe بعد از Declare همون خط رو به رنگ قرمز در میاره
تصویر و کد استفاده شده را ضمیمه کردم ممنون میشم ملاحظه بفرمایین
If Win64 ThenPublic Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Else
Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
End If
سلام
علت اینکه جملات دارای PtrSafe به رنگ قرمز میشوند اینست که در ورژن VBA مورد نظر تعریف نشده است و این هیچ مشکلی ایجاد نمی کند، چون در سیستم های 32 بیتی کامپایلر این قسمت را نمی خواند.
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
با سپاس از شما استاد عزیز (به قول یکی از گزارشگران فوتبال " چقدر خوبین شما ") :قهقهه:
فقط اگه بیزحمت نقش علامت # اول IF و ٍElse رو بگین، ممنون میشم و اگه این علامت نباشه مشکلی پیش میاد
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
نقل قول:
نوشته شده توسط
G.hemati
با سپاس از شما استاد عزیز (به قول یکی از گزارشگران فوتبال " چقدر خوبین شما ") :قهقهه:
فقط اگه بیزحمت نقش علامت # اول IF و ٍElse رو بگین، ممنون میشم و اگه این علامت نباشه مشکلی پیش میاد
سلام
علامت # مشخصه دستورات پیش پردازنده است که در VB کمتر استفاده میشود و مثلا در C بیشتر دیده می شود.
در مورد مثال خودمان زمانی که کامپایلر به دستور #If می رسد بسته به شرط یکی از گزینه ها را انتخاب می کند وآن را کامپایل می کند و از سایر خطوطی که در عبارات #If است صرف نظر میکند .
چنانچه از عبارات If مرسوم استفاده کنیم تمام جملات کامپایل خواهند شد.
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
نقل قول:
نوشته شده توسط
AbbasSediqi
برادر بعد از declare باید اثن رو اضافه کنی ptrsafe
خیلی کارت درسته بهت ایمان آوردم دمت گرم با یه کلمه کارمو راه انداختی ایییییییییییییییییییول
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
سلام من از روشهای پست ۲ و پست ۹ امتحان کردم درست نشد.
روش پست ۹ رو میرم موقع اجرای ماژول بالون این رو میگه؛
https://uupload.ir/files/1b5q_1_thumb.png
روش پست ۲ هم کلاً ایرادی نمیگیره ولی ماژول اجرا نمیکنه
امکان هست فایل بزارم برام اصلاح کنید؟؟
یک سوال تو قسمت محیط vba منوی بالا tools و refrences کار خاصی نباید بکنم؟؟
نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی
سلام، دوستان اگه در این باره توضیح بدهند که:
آیا اصلا نیاز هست که یک فایل اکسس محدود به نسخه 32 یا 64 بیتی بشه؟
و شاید به اجبار باید با توجه به نسخه ویندوز در برخی ماژولها از کدهای 32 یا 64 بیتی استفاده کرد؟