Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Word Dateien öffnen und EIgenschaften übergeben

Word Dateien öffnen und EIgenschaften übergeben
22.07.2014 14:21:29
ela
Hallo,
ich möchte Worddateien Metadaten mitgeben.
Dazu benutze ich folgenden Code, der für Excel auch prima funktioniert.
Bei PowerPoint will er die Datei erst nicht öffnen und gibt mir einen Fehler aus. Öffne ich die jeweilige Datei per Hand und schließe sie wieder. Und gehe im Debug-Modus weiter, dann funktioniert es auf einmal.
Bei Word wird die Datei gar nicht erst geöffnet und somit auch keine Eigenschaften übergeben.
An was kann das liegen?
Hier der benutzte Code:
Option Explicit

Sub DocuPropertiesInMSDocs()
Dim objPPApp As Object  ' PowerPoint Application
Dim objPPFile As Object ' PowerPoint Document
Dim objWWApp As Object  ' WinWord Application
Dim objWWFile As Object ' WinWord Document
Dim wbXL As Workbook    ' Excel  _Workbooks
Dim sDirName As String  ' Verzeichnis
Dim sFileName As String ' Dateiname
dim quelldatei as string
dim jahr as integer
dim monat as string
jahr = 2014
monat = "01"
quelldatei = C:\datei.doc
'WIndows Word Objekt erstellen
Set objWWApp = CreateObject("Word.Application")
' Powerpoint Objekt erstellen
Set objPPApp = CreateObject("PowerPoint.Application")
'Word
If InStr(quelldatei, ".doc") Or InStr(quelldatei, ".docx") Then
'öffnet die hochzuladende datei
On Error Resume Next
Set objWWFile = objWWApp.Documents.Open(quelldatei)
If Err.Number  0 Then
Workbooks(wbname).Worksheets(4).Cells(fehler, 5) = "Fehler! Word Datei  _
konnte nicht geöffnet werden!"
'aufruf der fehlerprozedur
mistake
End If
On Error GoTo 0
With objWWFile
On Error Resume Next
'Jahr hinzufügen
.CustomDocumentProperties.Add _
Name:="Jahr", LinkToContent:=False, _
Type:=msoPropertyTypeString, Value:=jahr
'Monat hinzufügen
.CustomDocumentProperties.Add _
Name:="Monat", LinkToContent:=False, _
Type:=msoPropertyTypeString, Value:=monat
'Titel hinzufügen
'                    .BuiltinDocumentProperties
'                    objWWFile("Title") = bericht
.Save
.Close
On Error GoTo 0
End With
End If
'Power Point
If InStr(quelldatei, ".ppt") Or InStr(quelldatei, ".pptx") Then
Set objPPFile = objPPApp.Presentations.Open(quelldatei)
With objPPFile
On Error Resume Next
'Jahr hinzufügen
.CustomDocumentProperties.Add Name:="Jahr", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=jahr
'Monat hinzufügen
.CustomDocumentProperties.Add Name:="Monat", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=monat
If Err.Number  0 Then
'Eintrag in Fehlerdokumenmt
Workbooks(wbname).Worksheets(4).Cells(fehler, 5) = "Fehler! Eigenschaft  _
konnte nicht gesetzt werden!"
'aufruf der fehlerprozedur
mistake
End If
On Error GoTo 0
.Save
.Close
End With
End If
Set objPPApp = Nothing
set objWWApp = Nothing
End sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Dateien öffnen und EIgenschaften übergeben
22.07.2014 17:58:29
fcs
Hallo Ela,
bei Word-Dateien gibt es das Problem, dass das Ändern/Einfügen der CustomProperties den Saved-Status des Worddokuments nicht ändert. Deshalb passiert in der .Save-Anweisung nichts und die Datei wird ohne Änderungen gespeichert. Ich hab eine Pseudo-Änderung(Textmarke einfügen und wieder löschen) eingebaut, dann funktioniert es.
Powerpoint funktioniert bei mir unter Office 2010.
Die Fehlerbehandlung ist bei dir etwas undurchsichtig und nicht immer günstig gemacht.
Wenn eine Datei nicht geöfnet werden kann, dann sollten die weiteren Zeilen nicht ausgeführt werden, sondern eine definierte Stelle zum Beenden der Bearbeitung der Datei angesprungen werden.
Fehler beim Einfügen der zusätzlichen CustomProperties treten auf, wenn im Dokument der Name schon vorhanden ist. Deshalb kann man nach Prüfung den Wert trotzdem zuweisen.
Die angelegten Application-Objekte sollten unbedingt mit Quit beendet werden, sonst geistern sie im Hintergrund von Windows und müllen den Arbeitsspeicher zu - dies gilt insbesondere für Word.
Gruß
Franz
Sub DocuPropertiesInMSDocs()
Dim objPPApp As Object  ' PowerPoint Application
Dim objPPFile As Object ' PowerPoint Document
Dim objWWApp As Object  ' WinWord Application
Dim objWWFile As Object ' WinWord Document
Dim wbXL As Workbook    ' Excel  _Workbooks
Dim sDirName As String  ' Verzeichnis
Dim sFileName As String ' Dateiname
Dim quelldatei As String
Dim jahr As Integer
Dim monat As String
jahr = 2014
monat = "01"
quelldatei = "D:\Test\datei.doc"
'WIndows Word Objekt erstellen
Set objWWApp = CreateObject("Word.Application")
'objWWApp.Visible = True
' Powerpoint Objekt erstellen
Set objPPApp = CreateObject("PowerPoint.Application")
'objPPApp.Visible = True
'Word
If InStr(quelldatei, ".doc") Or InStr(quelldatei, ".docx") Then
'öffnet die hochzuladende datei
On Error Resume Next
Set objWWFile = objWWApp.Documents.Open(quelldatei)
If Err.Number  0 Then
Workbooks(wbname).Worksheets(4).Cells(Fehler, 5) = _
"Fehler! Word Datei konnte nicht geöffnet werden!"
'aufruf der fehlerprozedur
Mistake
GoTo Beenden
End If
On Error GoTo 0
With objWWFile
On Error Resume Next
'Jahr hinzufügen
.CustomDocumentProperties.Add _
Name:="Jahr", LinkToContent:=False, _
Type:=msoPropertyTypeString, Value:=jahr
If Err.Number  0 Then
Err.Clear
.CustomDocumentProperties("Jahr") = jahr
End If
'Monat hinzufügen
.CustomDocumentProperties.Add _
Name:="Monat", LinkToContent:=False, _
Type:=msoPropertyTypeString, Value:=monat
If Err.Number  0 Then
Err.Clear
.CustomDocumentProperties("Monat") = monat
End If
'Titel hinzufügen
'                    .BuiltinDocumentProperties
'                    objWWFile("Title") = bericht
'Pseudoänderung, damit Dokument als geändert erkannt wird und Save  _
funktioniert
.Bookmarks.Add ("XYZZXY")
.Bookmarks("XYZZXY").Delete
.Save
.Close
Set objWWFile = Nothing
On Error GoTo 0
End With
End If
'Power Point
If InStr(quelldatei, ".ppt") Or InStr(quelldatei, ".pptx") Then
Set objPPFile = objPPApp.Presentations.Open(quelldatei)
If Err.Number  0 Then
'Eintrag in Fehlerdokumenmt
Workbooks(wbname).Worksheets(4).Cells(Fehler, 5) = _
"PP-Datei konnte nicht geöffnet werden!"
'aufruf der fehlerprozedur
Mistake
GoTo Beenden
End If
With objPPFile
On Error Resume Next
'Jahr hinzufügen
.CustomDocumentProperties.Add Name:="Jahr", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=jahr
If Err.Number  0 Then
Err.Clear
.CustomDocumentProperties("Jahr") = jahr
End If
'Monat hinzufügen
.CustomDocumentProperties.Add Name:="Monat", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=monat
If Err.Number  0 Then
Err.Clear
.CustomDocumentProperties("Monat") = monat
End If
If Err.Number  0 Then
'Eintrag in Fehlerdokumenmt
Workbooks(wbname).Worksheets(4).Cells(Fehler, 5) = _
"Fehler! Eigenschaft konnte nicht gesetzt werden!"
'aufruf der fehlerprozedur
Mistake
End If
On Error GoTo 0
.Save
.Close
Set objPPFile = Nothing
End With
End If
Beenden:
'ggf. noch offene Dateien speichenr und schliessen
If Not objWWFile Is Nothing Then
objWWFile.Save: objWWFile.Close
End If
If Not objPPFile Is Nothing Then
objPPFile.Save: objPPFile.Close
End If
'Anwendungen beenden
objPPApp.Quit
objWWApp.Quit 'wichtig besonders bei Word, da die Applicationen sonst unsichtbar im  _
Hintergrund läuft
Set objPPApp = Nothing
Set objWWApp = Nothing
End Sub

Anzeige
AW: Word Dateien öffnen und EIgenschaften übergeben
23.07.2014 09:58:04
ela
Hallo Franz,
danke für die schnelle hilfe.
Hab meinen Code dementsprechend abgeändert.
Mein Problem ist aber immer noch, dass die der befehl
Set objWWFile = objWWApp.Documents.Open(quelldatei)
die Word datei nicht öffnet.
Stattdessen bekomme ich angezeit dass Microsoft Officeauf die Beendigung einer OLE-Aktion in einer anderen Anwednung wartet.
Was hat das zu bedeuten? Klappt es deshalb nicht?
Viele Grüße und vielen lieben Dank
Ela

AW: Word Dateien öffnen und EIgenschaften übergeben
23.07.2014 10:44:46
fcs
Hallo Ela,
wahrscheinlich wird in der ausgeblendeten Word-Anwendung irgendein Fehlerdialog angezeigt und wartet auf Benutzereingaben. Deshalb dann irgendwann die Fehlermeldung bzgl OLE-Aktion.
Setze den Visible-Status der kreierten Wordanwendung auf True solange du noch am Testen bist. Hatte ich auch so eingebaut und zum Schluss in einen Kommentar umgewandelt.
Grundsätzlich könntest du folgende Probleme haben:
a) Der Inhalt der Variablen "quelldatei" wird nicht korrekt zusamengebaut
___z.B.: das "\" zwischen Verzeichnis und Dateiname fehlt
___Das könntest du prüfen mit
If Dir(quelldatei)= "" then
Msgbox "Datei """ & quelldatei  & """ existiert nicht! Upps was nun?",, _
"Prüfung Dateiname"
Else
Msgbox "Datei """ & quelldatei  & """ existiert! Weiter geht es",, _
"Prüfung Dateiname"
End If
b) Die Datei ist irgendwo in Bearbeitung/geöffnet oder auch nicht Ordnungsgemäß geschlossen worden.
Meines Wissens fragt Word dann ob eine Kopie der Datei öffnen soll oder Abbrechen.
Gruß
Franz

Anzeige
AW: Word Dateien öffnen und EIgenschaften übergeben
23.07.2014 16:34:59
ela
hallo Franz,
b) ist mein Fall.
Aber wie kann ich das dann lösen?
Hab das Objekt mal auf visible gesetzt hilft nichts.
Hab eine neue Word-test datei erstellt. aber da passiert auch nichts.
Und mit Poerpoint ist das auch eher wie eine Suche nach der Nadel im heuhaufen. Sehr selten findet mein Programm die Nadel. Ich habe aber keine Ahnung wieso. Ich verschiebe nichts und ändere nichts. Manchmal klappts. Öfter aber nicht :D
Bin ein wenig am verzweifeln.
Vielen lieben Dank
Grüße
Ela

AW: Word Dateien öffnen und EIgenschaften übergeben
24.07.2014 13:39:33
fcs
Hallo ela,
da die Makros bei mir mit den Anpassungen funktionieren kann ich jetzt nicht konkret weiterhelfen.
Wie man jetzt die "störischen" Dateien wieder in einen Normalzustand versetzen kann weiß ich nicht. Meines Wissens wird der Status geöffnet/geschlossen auf Betriessystemebene verwaltet und da kenn ich mich nicht so doll aus.
Wenn du möchtest, dann kannst du deine Exceldatei und 2 bis 4 Word- und Powerpointdateien an die E-Mailadresse in meinem Profil schicken - sensible Daten ggf. vorher neutralisieren/löschen. Dann schau ich mir das mal an. Wahrscheinlich muss die Fehlerbehandlung noch optimiert werden.
Gruß
Franz
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige