VBA Datei geöffnet aber nicht schließbar

Birfan

Ensign
Registriert
Dez. 2008
Beiträge
133
Moin zusammen,

ich habe öffne mit einer UserForm aus einer ExcelDatei eine weitere Datei und schreibe in ein paar Zellen Werte.

Sub HablgeBut_Click()
'Variablen Deklaration
Dim sFileName, sKstrNr, sName, sVName, sOrt, sStreet, sTelefon, sgas, sstrom, swasser, ssnr, slwl, sSM As String

sKstnr = KstNrBox.Text
sName = NameBox.Text
sVName = VNameBox.Text
sOrt = OrtBox.Text
sStreet = StreetBox.Text
sTelefon = TelBox.Text
snvbgas = nvbgasBox.Text
sstrom = nvbstromBox.Text
swasser = nvbwasserBox.Text
ssnr = nvbsnrBox.Text
slwl = nvblwlBox.Text
stSM = telekomBox.Text

sFileName = "C:\\Hausanschluss.xlsm"



If sKstnr = "" Then
MsgBox "Keine Kostenstelle ausgewählt. Bitte Kostenstelle wählen"
Exit Sub
Else
Workbooks.Open Filename:=sFileName, ReadOnly:=True
Workbooks("Hausanschlusst.xlsm").Worksheets("Datenblatt").Activate
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 2).Value = sOrt
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(3, 2).Value = sStreet
Workbooks("Hausanschluss..xlsm").Worksheets("Datenblatt").Cells(6, 2).Value = sName
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 2).Value = sOrt
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 6).Value = sKstnr
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(13, 2).Value = sgas
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(14, 2).Value = sstrom
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(15, 2).Value = swasser
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(16, 2).Value = ssnr
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(17, 2).Value = stSM
MsgBox "Wertr für Kostenstelle " & sKstnr & " übergeben."
Exit Sub
Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Deactivate

End If


End Sub

irgendwie habe ich da aber noch einen Bock drin. Ich kann die 2.te Datei nicht mehr schließen solange ich die UserForm nicht beende.
Eigenlich würde ich gern im Hintergrund geöffnet lassen und zur Userform zurückkehren.

Iwie habe ich den Gedanken mit Do While aber ich komm noch nicht drauf ...
 
Hi...

Code:
Sub HablgeBut_Click()
      'Variablen Deklaration
       Dim sFileName, sKstrNr, sName, sVName, sOrt, sStreet, sTelefon, sgas, sstrom, swasser, ssnr, slwl, sSM As String
                               
       sKstnr = KstNrBox.Text
       sName = NameBox.Text
       sVName = VNameBox.Text
       sOrt = OrtBox.Text
       sStreet = StreetBox.Text
       sTelefon = TelBox.Text
       snvbgas = nvbgasBox.Text
       sstrom = nvbstromBox.Text
       swasser = nvbwasserBox.Text
       ssnr = nvbsnrBox.Text
       slwl = nvblwlBox.Text
       stSM = telekomBox.Text
     
       sFileName = "C:\\Hausanschluss.xlsm"
       
 
 
       If sKstnr = "" Then
               MsgBox "Keine Kostenstelle ausgewählt. Bitte Kostenstelle wählen"
               Exit Sub
       Else
               Workbooks.Open Filename:=sFileName, ReadOnly:=True
               Workbooks("Hausanschlusst.xlsm").Worksheets("Datenblatt").Activate
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 2).Value = sOrt
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(3, 2).Value = sStreet
               Workbooks("Hausanschluss..xlsm").Worksheets("Datenblatt").Cells(6, 2).Value = sName
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 2).Value = sOrt
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(2, 6).Value = sKstnr
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(13, 2).Value = sgas
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(14, 2).Value = sstrom
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(15, 2).Value = swasser
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(16, 2).Value = ssnr
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Cells(17, 2).Value = stSM
               MsgBox "Wertr für Kostenstelle " & sKstnr & " übergeben."
               Exit Sub
               Workbooks("Hausanschluss.xlsm").Worksheets("Datenblatt").Deactivate
       
       End If
       
       
End Sub
Hat in Zeile 27 (ein t zu viel) und 30 (ein . zu viel) nur hier der Tippfehlerteufel zugeschlagen oder auch bei Dir im VBA?

Btw.:
Dswg. ist's bspw. auch hilfreich solche Code-"Schnipsel" in's passende Tag zu packen. 😉​
 
Naja, per abgebildetem Code wird auch nicht versucht, die Datei zu schließen. Hat das einen Grund?

Protip, den Hausanschluß in eine Variable stecken. Dann kann kein T und auch kein Punkt extra reingeschummelt werden. Dies unter der Annahme, daß sFilename nicht schon genügt. :daumen:

So wie es aussieht würde ich aber auch nicht erwarten, daß es funktioniert. Die XSLM wird readonly geöffnet. Warum dann was reinschreiben versuchen? Gespeichert wird aber auch nicht (auch nicht per Versuch), sodaß die ganze Aktion wie no-op aussieht.

Da das VB ist, gehe ich auch nicht davon aus, daß Fehler tatsächlich geworfen werden.
Da ggfs noch nachhelfen, damit man auch sieht, ob und ggfs was da nicht funktioniert.
 
Danke euch. Ich hatte den Code etwas gekürzt. Da hab ich zu viel gelöscht. Das mit der Variable ist auf jeden Fall schon mal gut, damit der Code übersichtlicher wird.
Die Datei soll eigentlich auch nicht geschlossen werden. Da damit weiter gearbeitet werden soll. Ich kann die Datei halt nicht über das X oben im Fenster schließen, das geht erst wenn das Script geschlossen wird.
 
Zuletzt bearbeitet:
Zurück
Oben