الأمر غريب فعلاً ...🤔... فقد قمت بالتجربة على نسخة أوفيس 2010 - 32 ، وبعد إلغاء السطور الثلاثة بقيت عملية النسخ واللصق تعمل ..
ولكن إليك الحل السليم بعد تجربته على أكثر من إصدار بإذن الله تعالى ..
أولاً سنضيف تعريف الثابت التالي داخل المديول :-
Public Const WS_EX_NOACTIVATE As Long = &H8000000
ثم نعدل حدث النموذج بحذف أسطر الشفافية القديمة ونستبدلها بالثابت الذي قمنا بتعريفه WS_EX_NOACTIVATE ، ليصبح :-
Private Sub UserForm_Activate()
#If VBA7 Then
Dim Style As LongPtr
Dim ExStyle As LongPtr
#Else
Dim Style As Long
Dim ExStyle As Long
#End If
Dim ScreenWidth As Long
Dim FormWidthPixels As Long
Dim RightX As Long
hWndForm = FindWindow(vbNullString, Me.Caption)
If hWndForm <> 0 Then
Style = GetWindowLongPtr(hWndForm, GWL_STYLE)
Style = Style And Not WS_CAPTION
Style = Style And Not WS_SYSMENU
SetWindowLongPtr hWndForm, GWL_STYLE, Style
DrawMenuBar hWndForm
ExStyle = GetWindowLongPtr(hWndForm, GWL_EXSTYLE)
SetWindowLongPtr hWndForm, GWL_EXSTYLE, ExStyle Or WS_EX_NOACTIVATE
ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
FormWidthPixels = Me.Width * 1.33
RightX = ScreenWidth - FormWidthPixels
SetWindowPos hWndForm, HWND_TOPMOST, RightX, 100, 0, 0, SWP_NOSIZE
End If
End Sub
والنقطة الثالثة وهي كيفية الإستدعاء للنموذج بحيث نستدعيه بدون قيود :-
Private Sub Workbook_Open()
us.Show vbModeless
End Sub
بهذه الطريقة سيعمل شريط الأدوات العائم بكفاءة تامة وبدون شفافية ، وسينفذ الأوامر مباشرة داخل إكسل وجميع برامج أوفيس والتطبيقات الخارجية بدون أي تعليق أو فقدان للتركيز . فالمشكلة كانت في فقدان التركيز للنموذج . حيث يتم منع النموذج من سحب التركيز نهائياً عند النقر عليه ، وبالتالي تظل الخلية أو النص المحدد في وورد أو إكسل محتفظاً بالتركيز ويتم النسخ واللصق فوراً .
بحث-لصق-تسخ.xlsb