Registriert seit: 15.10.2016
Version(en): 2010
Hallo,
wieder einmal plagt mich ein VBA-Problem.
Per Schaltfläche wird eine bestimmte Worddatei geöffnet. Das funktioniert soweit ganz gut.
Nun wollte ich eine If-Anweisung einfügen, die folgendes bewirkt:
Sollte die angeforderte Datei nicht vorhanden sein (was bisher ein Fehler ausgelöst hat),
soll eine bestimmte Worddatei geöffnet werden und unter einem bestimmten Namen an einen bestimmten Ort gespeichert werden. Dabei bleibt die Worddatei geöffnet.
Habe jetzt durch das ganze probieren und testen voll den Faden verloren :(
Code:
Private Sub kontrolle_Click()
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = True
WordApp.WindowState = -4143
WordApp.Activate
.Documents.Open Filename:=ThisWorkbook.Path & "\" & wsSource.Range("Z" & strRows) & ".docx"
End With
'bis hier funktioniert es
If Not Dir(ThisWorkbook.Path) = wsSource.Range("Z" & strRows) & ".docx" Then
WordApp.Activate
.Documents.Open Filename:=ThisWorkbook.Path & "\" & "leer.docx"
With wdDialogFileSaveAs
.Name = ThisWorkbook.Path & "\" & wsSource.Range("Z" & strRows) & ".docx"
.Show
End With
End Sub
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
12.01.2018, 16:14
(Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2018, 16:14 von Käpt'n Blaubär.)
Hallo,
wenn ich das richtig interpretiere, dann gibt es kein "With" zum letzten "End With"
bzw. sind die diversen "With's" in dem nicht funktionierenden Teil falsch eingesetzt.
Registriert seit: 15.10.2016
Version(en): 2010
eigentlich gibt es zu jedem With ein End With. Kann natürlich sein, das mein Gedanke mit dem With generell falsch ist...
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
13.01.2018, 10:52
(Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2018, 10:53 von GMG-CC.)
Nööö, aber es fehlt offensichtlich das/ein End If
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 15.10.2016
Version(en): 2010
Code:
Private Sub kontrolle_Click()
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = True
WordApp.WindowState = -4143
WordApp.Activate
.Documents.Open Filename:=ThisWorkbook.Path & "\" & wsSource.Range("Z" & strRows) & ".docx"
End With
'bis hier funktioniert es
If Not Dir(ThisWorkbook.Path) = wsSource.Range("Z" & strRows) & ".docx" Then
WordApp.Activate
.Documents.Open Filename:=ThisWorkbook.Path & "\" & "leer.docx"
With wdDialogFileSaveAs
.Name = ThisWorkbook.Path & "\" & wsSource.Range("Z" & strRows) & ".docx"
.Show
End With
ActiveWorkbook.Save
End If
ActiveWorkbook.Close
If CloseMode = 0 Then
Workbooks("test.xls").Close SaveChanges:=False
End
End If
End Sub
Ja Stimmt, es hat leider nicht den ganzen Code hier eingefügt.
Er meldet folgenden Fehler für das "
.Documents" im zweiten TeilUnzulässiger oder nicht ausreichend definierter Verweis.
Registriert seit: 15.10.2016
Version(en): 2010
Code:
Sub kontrolle_Click()
Dim strFile As String
Dim WordApp As Object
strFile = ThisWorkbook.Path & "\" & wsSource.Range("Z" & strRows) & ".docx"
If Dir(strFile) = "" Then
With WordApp
.Visible = True
.WordApp.WindowState = -4143
.WordApp.Activate
.Documents.Open Filename:=strFile
End With
Else
With WordApp
.Visible = True
.WordApp.WindowState = -4143
.WordApp.Activate
.Documents.Open Filename:=ThisWorkbook.Path & "\leer.docx"
.Documents.SaveAs
.Name = strFile
.Show
End With
End If
End Sub
Habe es jetzt nochmal komplett neu gemacht.
Nun kommt aber Laufzeitfehler 91
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Moin!
Nun, die Fehlermeldung lautet ja Objektblockvariable oder With-Blockvariable nicht festgelegt.
Ich sehe nicht, wie die Variable wsSource gefüllt wird.
Noch eine Anmerkung:
Du solltest nicht .WindowState = -4143 nehmen, sondern den "sprechenden" Konstantennamen.
Erstens ist der Code dann lesbarer und zweitens muss VBA die Bedeutung der "kryptischen" Zahl nicht erst übersetzen.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 15.10.2016
Version(en): 2010
14.01.2018, 10:57
(Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2018, 10:57 von barthi.)
Guten Morgen :)
wsSource habe ich in einem Modul als Option Explicit:
Public wsSource As Worksheet
Muss ich das im Sub nochmal erwähnen?
Es ist im Endeffekt eine Bestimmte Zeile, von der aus dann dort Spalte "Z" eingefügt werden soll.
-4143 müsste xlMaximized sein oder?
Registriert seit: 11.04.2014
Version(en): Office 2007
Auch Hallo,
in deinem Code vom 14.01.18 9:29 wenn ich es richtig sehe wird der Variablen WordApp nichts zugewiesen. Das es dann knallt ist klar.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
14.01.2018, 11:08
(Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2018, 11:09 von RPP63.)
Eigenzitat:
(14.01.2018, 10:43)RPP63 schrieb: Ich sehe nicht, wie die Variable wsSource gefüllt wird.
Vielleicht lädst Du mal den aktuellen Stand der Datei hoch.
Edit:
Siehe Stefan!
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)