में एक बटन के रूप में एक एक्सेल उपयोगकर्ताफॉर्म प्रदर्शित करना मैं टास्कबार में एक्सेल बटन को छिपाना चाहता हूं और अपने उपयोगकर्ताफॉर्म के लिए एक अलग बटन प्रदर्शित करना चाहता हूं ताकि यह अपने आप किसी एप्लिकेशन की तरह महसूस हो। मुझे पता है कि इसमें बहुत कुछ शामिल किया गया है लेकिन मुझे एक विशिष्ट समस्या के साथ परेशानी हो रही है: जब मैं इसे चलाता हूं तो मेरा कोड ठीक काम करता है, लेकिन अगर मैं इसे सामान्य रूप से चलाने देता हूं। जब मैं अंतिम पंक्ति AppActivate को 2 एक अलग बटन टास्कबार में दिखाई देता है, और अंतिम पंक्ति में कदम,टास्कबार
Option Explicit
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long) _
As Long
Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) _
As Long
Private Declare Function DrawMenuBar _
Lib "user32" (_
ByVal hWnd As Long) _
As Long
Private Declare Function FindWindowA _
Lib "user32" (_
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE As Long = (-16)
Private Const WS_EX_APPWINDOW = &H40000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Sub UserForm_Activate()
Dim lFrmWndHdl As Long
Dim lStyle As Long
lFrmWndHdl = FindWindowA(vbNullString, Me.Caption)
lStyle = GetWindowLong(lFrmWndHdl, GWL_STYLE)
lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_MINIMIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
SetWindowLong lFrmWndHdl, GWL_STYLE, (lStyle)
lStyle = GetWindowLong(lFrmWndHdl, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_APPWINDOW
SetWindowLong lFrmWndHdl, GWL_EXSTYLE, lStyle
DrawMenuBar lFrmWndHdl
AppActivate ("Microsoft Excel")
ThisWorkbook.Application.Visible = False
End Sub
कोड के माध्यम से कदम: यहाँ कोड है, जो मैं Userform1 के वर्ग मॉड्यूल में रखा है टास्कबार में एक्सेल कार्यपुस्तिका के लिए मूल बटन छुपाता है। तब मुझे केवल एक उपयोगकर्ताफॉर्म के साथ छोड़ दिया जाता है जिसे किसी सामान्य एप्लिकेशन की तरह टास्कबार में अधिकतम या छोटा किया जा सकता है। समस्या यह है कि अगर मैं कोड के माध्यम से उपयोगकर्ताफॉर्म लोड करता हूं तो उपयोगकर्ताफॉर्म के लिए अलग बटन टास्कबार में दिखाई नहीं देता है, इसलिए टास्कबार में कोई एक्सेल बटन नहीं दिखता है।
अगर आप '' DoEvents' DrawMenuBar lFrmWndHdl' –
के बाद और भी 'AppActivate (" माइक्रोसॉफ्ट एक्सेल ") के बाद क्या होता है' –
मुझे लगता है कि कोशिश की है। यह मदद नहीं करता है। मैंने application.wait भी कोशिश की है। –