2013-12-16 20 views
6

Bir excel makrosunun UserForm1 dosyasını toplu iş dosyası aracılığıyla açmaya çalışıyorum. Bunu açabiliyorum ama excel de bununla birlikte açılıyor. Sadece UserForm1'in excel'i açmasını istiyorum. Ben toplu Dosya UserForm1Toplu iş dosyasından bir excel makrosunun yalnızca UserForm'u Nasıl Açılır

Sub open_form() 
    UserForm1.Show 
End Sub 

açmak için bir makro yazdım

: Aşağıda benim yaklaşımdır

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

yukarıdaki yaklaşımla, ben hem toplu dosyasını çalıştırıyorum zaman UserForm1 ve excel açılıyor, ancak yalnızca UserForm1'i açmak istiyorum. Lütfen bana yardım

cevap

10

UserForm'u modeless modunda göstermeniz ve ardından uygulamayı gizlemeniz gerekir.

bu

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

ve denemek ya bir düğmesini geri true ayarlamanız gerekir yoksa UserForm_QueryClose olay

birisi bir userform koşmak istiyor durumda
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Application.Visible = True 
    ThisWorkbook.Close SaveChanges:=False 
End Sub 
+1

Application.Visible = false, tüm açık excel çalışma kitabını, herhangi bir öneriyi gizleyecek mi? – Michael

5

Bunun birkaç nedeni vardır bunu yapmak için iyi bir fikir olmadığını (örneğin işlenmeyen istisna olarak Application.Visible önce kodunuzu çökmesini True sıfırlanır) ama bu kabul var varsayıyoruz:

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 Beni ona yendi :) –

+1

Bir öneri olsa :) Başka engelleyici olmayan modda formu göstermek gerekir formu da gizleyecektir. –

+0

@leemo Söylediğiniz gibi iyi bir fikir değil, bu açıdan ne demek olduğunu biliyor olabilirim bu – Samraan

2

"hem kullanabilirsiniz "bağımsız bir uygulama:

Sorunlar ben bakıyordu:

  1. Yalnızca excel kilitlendiğinden, Workbook_Open Etkinliğini kullanmak istemedim.
  2. Yığın komutu, (bilgimle) makronun çağıramayacağı gerçeğiyle sınırlıdır. Uygulamayı gizleme (yukarıdaki açıklamalara dayanarak) ise

Öncelikle benim userform başlatmak için bir makro yazdım: Daha sonra bu makro başlatmak için vbs yarattı

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

(göreli yol ile yapıyor) zor olmuştur:

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" 

Ve sonunda VBS yürütmek için bir toplu iş dosyası yaptılar ...

@echo off 
pushd %~dp0 
cscript Add_Client.vbs 
Ben de bir "geri görünür olarak ayarla" dahil ettik

Not benim 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 
İlgili konular