2013-12-16 9 views
6

से एक्सेल मैक्रो के केवल उपयोगकर्ताफॉर्म को कैसे खोलें I बैच फ़ाइल के माध्यम से एक्सेल मैक्रो का UserForm1 खोलने का प्रयास कर रहा हूं। मैं इसे खोलने में सक्षम हूं लेकिन इसके साथ एक्सेल भी खोला जा रहा है। मैं केवल उपयोगकर्ताफॉर्म 1 को एक्सेल नहीं खोलना चाहता हूं।बैच फ़ाइल

मैं बैच फ़ाइल में UserForm1

Sub open_form() 
    UserForm1.Show 
End Sub 

खोलने के लिए एक मैक्रो लिखा है: नीचे मेरी दृष्टिकोण है

@echo off 
cd "c:\Test\" 
openFormTest.xlsm 

ऊपर दृष्टिकोण रखकर जब मैं बैच फ़ाइल दोनों चल रहा हूँ UserForm1 और एक्सेल खुले हो रहे हैं, लेकिन मैं केवल UserForm1 खोलना चाहता हूं। कृपया मुझे बाहर करने में मदद

उत्तर

10

आपको UserFormmodeless मोड में दिखाने की आवश्यकता है और फिर एप्लिकेशन को छुपाएं।

इस

Sub open_form() 
    Application.Visible = False 
    UserForm1.Show vbModeless 
End Sub 

और कोशिश या तो एक बटन में आप इसे वापस सही पर सेट करने की जरूरत है या आप UserForm_QueryClose घटना

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Application.Visible = True 
    ThisWorkbook.Close SaveChanges:=False 
End Sub 
+1

आवेदन। दृश्य = झूठी सभी खुली एक्सेल कार्यपुस्तिका, कोई सुझाव छिपाएगा? – Michael

5

कई कारण हैं (जैसे बिना क्रिया अपवाद के रूप में Application.Visible से पहले अपने कोड दुर्घटनाग्रस्त True पर रीसेट है) है कि यह यह करने के लिए एक अच्छा विचार नहीं है, लेकिन मैं आप इन पर विचार किया है मान लेंगे:

Private Sub UserForm_Initialize() 
    Application.Visible = False 
End Sub 

Private Sub UserForm_Terminate() 
    Application.Visible = True 
End Sub 

Private Sub Workbook_Open() 
    UserForm1.Show vbModeless 
End Sub 
+0

+ 1 मुझे यह करने के लिए मारो :) –

+1

एक सुझाव हालांकि :) आपसे किसी और मोडहीन मोड में प्रपत्र दिखाने की जरूरत है फॉर्म भी छिपाएगा। –

+0

@leemo जैसा कि आपने कहा है कि यह एक अच्छा विचार नहीं है, क्या मुझे पता है कि आप इस सम्मान में क्या कह रहे हैं – Samraan

2

मामले में किसी को एक userform चलाना चाहता है "एक जैसे उपयोग कर सकते हैं "एक स्टैंड अकेले आवेदन:

जिन मुद्दों का सामना करना पड़ रहा था:

  1. मैं वर्कबुक_ ओपन इवेंट का उपयोग नहीं करना चाहता था क्योंकि एक्सेल केवल पढ़ने में बंद है।
  2. बैच कमांड सीमित है कि तथ्य यह है कि (मेरे ज्ञान के लिए) यह मैक्रो को कॉल नहीं कर सकता है।

मैं पहली बार है, जबकि आवेदन छुपा (ऊपर अपनी टिप्पणी के आधार पर) मेरी userform शुरू करने के लिए एक मैक्रो लिखा है:

Sub open_form() 
Application.Visible = False 
frmAddClient.Show vbModeless 
End Sub 

मैं तो इस मैक्रो शुरू करने के लिए एक vbs बनाया (एक रिश्तेदार पथ के साथ यह कर मुश्किल कर दिया गया है):

dim fso 
dim curDir 
dim WinScriptHost 
set fso = CreateObject("Scripting.FileSystemObject") 
curDir = fso.GetAbsolutePathName(".") 
set fso = nothing 

Set xlObj = CreateObject("Excel.application") 
xlObj.Workbooks.Open curDir & "\Excels\CLIENTES.xlsb" 
xlObj.Run "open_form" 

और मैं अंत में VBS निष्पादित करने के लिए एक बैच फ़ाइल किया था ...

@echo off 
pushd %~dp0 
cscript Add_Client.vbs 

ध्यान दें कि मैं भी शामिल किया है में "वापस दिखाई पर सेट करें" मेरी Userform_QueryClose:

Private Sub cmdClose_Click() 
Unload Me 
End Sub 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    ThisWorkbook.Close SaveChanges:=True 
    Application.Visible = True 
    Application.Quit 
End Sub