Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten 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
Antworten 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!
Antworten 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.
Antworten 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
Antworten 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)
Antworten 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?
Antworten 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
Antworten Top
#10
Eigenzitat:
(14.01.2018, 09: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)
Antworten Top


Gehe zu:


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