VBA-Worddatei überprüfen bzw. speichern
#1
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
Top
#2
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.
Top
#3
eigentlich gibt es zu jedem With ein End With. Kann natürlich sein, das mein Gedanke mit dem With generell falsch ist... Huh
Top
#4
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!
Top
#5
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 Teil
Unzulässiger oder nicht ausreichend definierter Verweis.
Top
#6
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 Huh
Top
#7
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)
Top
#8
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?
Top
#9
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
Top
#10
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)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste