Clever-Excel-Forum

Normale Version: VBA Userform öffnen ohne excel sichtbar zu starten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi zusammen

Ich habe folgendes Problem:
Mehrere Mitarbeiter sollen ein Formular ausfüllen welche ich über eine Excel VBA Userform erstellt habe. Diese Daten werden dann direkt in Excel in eine "Datenbank" eingelesen.
Jetzt hätte ich allerdings gerne das sie nur das Formular bearbeiten können ohne das sie die Excel Datenbank öffnen.

Ich habe soweit ein code gefunden (https://groups.google.com/forum/#!topic/...JpiB7uOoaY) und dieser im Editor eingegeben und als .vbs abgelegt. Leider erhalte ich allerdings eine Fehlermeldung beim öffnen.

Code:
Dim objExcel
Dim objWshShell
Set objExcel = WScript.CreateObject("Excel.Application")
Set objWshShell = CreateObject("WScript.Shell")
objExcel.Visible = FALSE
objExcel.DisplayAlerts = FALSE

'Excel Datei öffnen
objExcel.WorkBooks.Open "C:\Windows\Desktop\Test.xls"

'Ein Excel-Makro starten
objExcel.Run "Test"

'Excel schließen
objExcel.WorkBooks.Close
Set objExcel = Nothing
Set objWshShell = Nothing

Was muss ich unter:
Code:
'Ein Excel-Makro starten
objExcel.Run "Test"
 eingeben?

ich hätte gerne das sich automatisch die UserForm1 öffnet..

Vielen Dank :)
Hallo,

in einem Modul, lege z.B. die Aufrufprozedur an, zum Beispiel ...

Code:
Sub UserformExternAufrufen()
 
  UserForm1.Show
 
End Sub

Angenommen, Deine Datei heißt Test.xlsb, in Deinem VBS-Script, dann den Dateinamen mit angeben ...

Code:
objExcel.Run "Test.xlsb!UserformExternAufrufen"

Gruß
Hi noch einmal 

Nächstes Problem; wenn alle 4 Formulare ausgefüllt sind werden per Knopdruck alle eingaben in die Excel eingetragen, das Funktioniert wenn ich das Makro mit geöffneter Excel starte einwandfrei, allerding mit diesem Code leider nicht...
Wo muss ich der Code anpassen das das Funktioniert?   Huh
Im Userform oder in der .vbs Datei?

Der Code im UserForm4:
Code:
Option Explicit

Private Sub Bestätigen_Click()

'erste Freie Zeile ausfindig machen
Dim Last As Integer
Worksheets("Datenbank").Activate
Last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

'Userform1
Cells(Last, 1).Value = UserForm1.TextBox_NameVorname
Cells(Last, 3).Value = UserForm1.TextBox_Sachbearbeiter
Cells(Last, 5).Value = UserForm1.TextBox_Objektname
Cells(Last, 8).Value = UserForm1.TextBox_Bauherr
Cells(Last, 9).Value = UserForm1.TextBox_BauleitungGU
Cells(Last, 10).Value = UserForm1.TextBox_Architekt
Cells(Last, 11).Value = UserForm1.TextBox_Ingenieur
Cells(Last, 13).Value = UserForm1.TextBox_Spetzielles

If UserForm1.CheckBox_WandSchalung = True Then Cells(Last, 14).Value = "R"
If UserForm1.CheckBox_Deckenschalung = True Then Cells(Last, 15).Value = "R"
If UserForm1.CheckBox_Armierung = True Then Cells(Last, 16).Value = "R"
If UserForm1.CheckBox_Mauerwerk = True Then Cells(Last, 17).Value = "R"
If UserForm1.CheckBox_FBFolie = True Then Cells(Last, 18).Value = "R"
If UserForm1.CheckBox_Dämmung = True Then Cells(Last, 19).Value = "R"
If UserForm1.CheckBox_Elemente = True Then Cells(Last, 20).Value = "R"
If UserForm1.CheckBox_KanalisationWerkleitungen = True Then Cells(Last, 21).Value = "R"

Cells(Last, 2).Value = UserForm1.ComboBox_Abteilung1
Cells(Last, 4).Value = UserForm1.ComboBox_Abteilung2
Cells(Last, 6).Value = UserForm1.ComboBox_Ort
Cells(Last, 7).Value = UserForm1.ComboBox_PLZ
Cells(Last, 12).Value = UserForm1.ComboBox_ProjektStatus

Cells(Last, 22).Value = UserForm1.DTPicker_Auftragserteilung
Cells(Last, 23).Value = UserForm1.DTPicker_StartFKOMP
Cells(Last, 24).Value = UserForm1.DTPicker_Abgabedatum

'Userform2
Cells(Last, 34).Value = UserForm2.TextBox_Summe
Cells(Last, 35).Value = UserForm2.TextBox_KalkStd
Cells(Last, 46).Value = UserForm2.TextBox_FerienSommer
Cells(Last, 47).Value = UserForm2.TextBox_FerienWinter
Cells(Last, 52).Value = UserForm2.TextBox_Sonstiges

If UserForm2.CheckBox_Bauprogramm = True Then Cells(Last, 25).Value = "R"
If UserForm2.CheckBox_Grobprogramm = True Then Cells(Last, 26).Value = "R"
If UserForm2.CheckBox_Etappierung = True Then Cells(Last, 27).Value = "R"
If UserForm2.CheckBox_InstallationLogistik = True Then Cells(Last, 28).Value = "R"
If UserForm2.CheckBox_BauablaufVideo = True Then Cells(Last, 29).Value = "R"
If UserForm2.CheckBox_Mengenüberprüfung = True Then Cells(Last, 30).Value = "R"
If UserForm2.CheckBox_DefinitionPauschale = True Then Cells(Last, 31).Value = "R"
If UserForm2.CheckBox_NPKNr = True Then Cells(Last, 32).Value = "R"
If UserForm2.CheckBox_Kalkulation = True Then Cells(Last, 33).Value = "R"
If UserForm2.CheckBox_Potential = True Then Cells(Last, 49).Value = "R"
If UserForm2.CheckBox_AGBs = True Then Cells(Last, 50).Value = "R"
If UserForm2.CheckBox_Ergänzung = True Then Cells(Last, 51).Value = "R"
If UserForm2.CheckBox_Kranoptik = True Then Cells(Last, 36).Value = "R"
If UserForm2.CheckBox_Personalplanung = True Then Cells(Last, 37).Value = "R"
If UserForm2.CheckBox_LeistungsabhängigeKosten = True Then Cells(Last, 38).Value = "R"
If UserForm2.CheckBox_SchalungBewehrungBeton = True Then Cells(Last, 39).Value = "R"
If UserForm2.CheckBox_Mauerwerk = True Then Cells(Last, 40).Value = "R"
If UserForm2.CheckBox_Planlieferprogramm = True Then Cells(Last, 41).Value = "R"
If UserForm2.CheckBox_Elementlieferprogramm = True Then Cells(Last, 42).Value = "R"
If UserForm2.CheckBox_Zahlungsplan = True Then Cells(Last, 43).Value = "R"
If UserForm2.CheckBox_TerminplanBL = True Then Cells(Last, 48).Value = "R"

Cells(Last, 44).Value = UserForm2.DTPicker_RohbauStart
Cells(Last, 45).Value = UserForm2.DTPicker_RohbauEnde


'Userform3
If Userform3.CheckBox_BimModell = True Then Cells(Last, 53).Value = "R"
If Userform3.CheckBox_Architektenpläne = True Then Cells(Last, 54).Value = "R"
If Userform3.CheckBox_Ingenieurpläne = True Then Cells(Last, 55).Value = "R"
If Userform3.CheckBox_Etappierungspläne = True Then Cells(Last, 56).Value = "R"
If Userform3.CheckBox_Aushubplan = True Then Cells(Last, 57).Value = "R"
If Userform3.CheckBox_Kanalisation = True Then Cells(Last, 58).Value = "R"
If Userform3.CheckBox_Umgebungsplan = True Then Cells(Last, 59).Value = "R"
If Userform3.CheckBox_InstallationLogistik = True Then Cells(Last, 60).Value = "R"
If Userform3.CheckBox_MateriallisteStückliste = True Then Cells(Last, 61).Value = "R"
If Userform3.CheckBox_LeistungverzeichnisDevis = True Then Cells(Last, 62).Value = "R"
If Userform3.CheckBox_Werkvertrag = True Then Cells(Last, 63).Value = "R"
If Userform3.CheckBox_Grobterminplan = True Then Cells(Last, 64).Value = "R"
If Userform3.CheckBox_Bauablauf = True Then Cells(Last, 65).Value = "R"
If Userform3.CheckBox_BesondereBestimmungen = True Then Cells(Last, 66).Value = "R"
If Userform3.CheckBox_AGBs = True Then Cells(Last, 67).Value = "R"
If Userform3.CheckBox_Auflagen = True Then Cells(Last, 68).Value = "R"
If Userform3.CheckBox_GeologischesGutachten = True Then Cells(Last, 69).Value = "R"
If Userform3.CheckBox_Nutzungsvereinbarung = True Then Cells(Last, 70).Value = "R"
If Userform3.CheckBox_Kontrollplan = True Then Cells(Last, 71).Value = "R"
If Userform3.CheckBox_ARGLogo = True Then Cells(Last, 72).Value = "R"

UserForm4.Hide

End Sub

Private Sub Zurück_Click()
    UserForm4.Hide
    Userform3.Show
End Sub
Hallo,

was ist ein VBS Script? Wo stellt man das genau ein?

Code:
objExcel.Run "Test.xlsb!UserformExternAufrufen"

Gruß
Marcus
Hallo,

Die Datei muss mit dem Script gespeichert werden.

Statt:
Code:
objExcel.WorkBooks.Close


so:

Code:
objExcel.Workbooks("Test.xls").Close True
Code:
Private Sub Workbook_open()
   application.visible=false
   Useform1.show
End sub

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(listbos1.List) + 1, UBound(listbos1.List, 2)) = listbox1.List
  Application.visible=true
End Sub
(03.03.2020, 12:34)atilla schrieb: [ -> ]Hallo,

Die Datei muss mit dem Script gespeichert werden.

Statt:
Code:
objExcel.WorkBooks.Close


so:

Code:
objExcel.Workbooks("Test.xls").Close True

Hi Atilla
Hat so funktioniert :D Vielen Dank