excel एक्सेल VBA कुंजी बाइंडिंग सूची(ओनके?)




excel-vba shortcut (2)

आप VBA मैक्रो के साथ एक मैक्रो को निर्दिष्ट की गई चाबियाँ सूचीबद्ध कर सकते हैं। यह मुड़ता है, हालांकि शॉर्टकट कुंजी को "सीधे" तक नहीं पहुंचा जा सकता है, यदि आप किसी मॉड्यूल को निर्यात करते हैं, तो कोई भी शॉर्टकट कुंजी निर्यात की गई फ़ाइल में सूचीबद्ध होती है। उस फ़ाइल को तब प्रक्रिया नाम और संबद्ध शॉर्टकट कुंजी वापस लाने के लिए पार्स किया जा सकता है।

निर्यात की गई फ़ाइल में उस पंक्ति की जानकारी है:

विशेषता MacroShortCutKeys .VB_ProcData.VB_Invoke_Func = " a \ n14"

ऊपर बोल्ड जानकारी एक मैक्रो का नाम है, और संबंधित शॉर्टकट कुंजी है मैं अंत में \ n14 के महत्व को नहीं जानता (और मुझे यकीन नहीं है कि यह संगत होगा क्योंकि मैंने इसे बड़े पैमाने पर परीक्षण नहीं किया है

मैक्रो के नीचे चलाना आवश्यक है कि आप विश्वास केंद्र सेटिंग्स में VBA प्रोजेक्ट ऑब्जेक्ट मॉडल तक पहुंच के लिए विकल्प सेट करें; और यह भी कि आप कोड में सूचीबद्ध VBA में संदर्भ सेट करते हैं।

मेरे पास सिर्फ तत्काल खिड़की के परिणाम हैं, लेकिन आप इसे आसानी से एक कार्यपत्रक पर डाल सकते हैं।

निर्यात की गई फ़ाइल को फ़ोल्डर C: \ Temp में संग्रहीत किया जाता है, और जब हम इसके साथ किया जाता है तो फाइल को हटा दिया जाता है यदि C: \ Temp मौजूद नहीं है, तो आपको इसे बनाना होगा। (यह मैक्रो में किया जा सकता था, लेकिन मुझे आलसी मिला)।

अगर मैक्रो में शॉर्टकट कुंजी नहीं है, तो यह सूचीबद्ध नहीं होगा।

संपादित करें केवल नियमित उन शॉर्टकट को सूचीबद्ध करता है जिन्हें Excel कार्यपत्रक पर मैक्रो संवाद बॉक्स का उपयोग करके निर्दिष्ट किया गया था। यह शॉर्टकट कुँजियों को नहीं दिखाएगी जिन्हें एप्लिकेशन। ओके की विधि का उपयोग कर सौंपा गया था। निश्चित रूप से अभी तक उन लोगों को पाने के लिए नहीं

Option Explicit
'MUST set to Trust Access to the VBA Project Object Model
'  in Excel Options
'Set reference to:
'Microsoft Visual Basic for Applications Extensibility
'Microsoft Scripting Runtime
'Microsoft VBScript Regular Expressions 5.5
Sub MacroShortCutKeys()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As CodeModule
    Dim LineNum As Long
    Dim ProcKind As VBIDE.vbext_ProcKind
    Dim sProcName As String, sShortCutKey As String
    Const FN As String = "C:\Temp\Temp.txt"
    Dim S As String
    Dim FSO As FileSystemObject
    Dim TS As TextStream
    Dim RE As RegExp, MC As MatchCollection, M As Match

Set RE = New RegExp
With RE
    .Global = True
    .IgnoreCase = True
    .Pattern = "Attribute\s+(\w+)\.VB_ProcData\.VB_Invoke_Func = ""(\S+)(?=\\)"
End With

Set FSO = New FileSystemObject
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
    Select Case VBComp.Type
        Case Is = vbext_ct_StdModule
            VBComp.Export FN
            Set TS = FSO.OpenTextFile(FN, ForReading, Format:=TristateFalse)
            S = TS.ReadAll
            TS.Close
            FSO.DeleteFile (FN)
            If RE.Test(S) = True Then
                Set MC = RE.Execute(S)
                For Each M In MC
                    Debug.Print VBComp.Name, M.SubMatches(0), M.SubMatches(1)
                Next M
            End If
    End Select
Next VBComp
End Sub

मैं एक्सेल vba लिपियों के एक बड़े सेट के साथ काम कर रहा हूं और उनमें से कुछ Ctrl-key संयोजनों के लिए बाध्य हैं I

मैं एक्सेल के लिए यूजर इंटरफेस में एक समय में एक को कैसे सेट करता हूं: vba स्क्रिप्ट (Alt-F8) की सूची को ऊपर खींचें, एक स्क्रिप्ट चुनें, और विकल्प पर क्लिक करें। उसके बाद आप स्क्रिप्ट को बाइंड कर सकते हैं / को एक Ctrl- कुंजी कॉम्बो में खोल सकते हैं हालांकि, आप एक ही कुंजी में एक से अधिक स्क्रिप्ट बाँध सकते हैं, और Excel एक को चुन सकता है (संभवत: पहले किसी भी तरीके से पाता है) और अन्य बाइंडिंग को अनदेखा कर सकते हैं।

इसलिए, मैं एक स्क्रिप्ट पर कंट्रोल-ए को आवंटित करना चाहता हूं, लेकिन पहले मुझे यह पता लगाना है कि सैकड़ों लिपियों की सूची में से जो अन्य स्क्रिप्ट चल रहा है, वह वर्तमान में बाध्य है।

क्या एक्सेल को वर्तमान कुंजी बाइंडिंग (वीबीए मैक्रो के साथ, मुझे लगता है) की सूची में लाने का एक तरीका है? मैंने Word के लिए एक समाधान देखा है, जो कि "कुंजीबंडिंग" संग्रह की जांच करता है यह एक्सेल में काम नहीं कर रहा है, यद्यपि। क्या एक्सेल में एक अलग ऑब्जेक्ट है?


थोड़ी देर के लिए खोज करने के बाद, मुझे प्रोग्राम की सभी कुंजी बाइंडिंग की सूची प्राप्त करने की कोई संभावना नहीं मिल पाई।

हालांकि, यदि आप मूल रूप से पता लगाना चाहते हैं, तो शॉर्टकट पर कौन सी प्रक्रिया चलती है, लेकिन आप निश्चित नहीं हैं और अपनी व्यक्तिगत कार्यपुस्तिका, ऐड-इन्स आदि से क्रॉल नहीं करना चाहते हैं, तो आप एक गतिशील ब्रेकपॉइंट बना सकते हैं हमेशा निष्पादित VBA कोड की पहली पंक्ति पर रोकें। ऐसा करने के लिए, सरल रूप से Add Watch संवाद का उपयोग करें (सही कोड विंडो में कहीं क्लिक करें) निम्न पैरामीटर दर्ज करें:

उसके बाद, बस उस शॉर्टकट को निष्पादित करें जिसमें आप रुचि रखते हैं - और वीबीई आपको उस रूटीन को दिखाएगा जो इसके लिए बाध्य है ...





hotkeys