MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Microsoft Word (https://www.ms-office-forum.net/forum/forumdisplay.php?f=30)
-   -   vba-Makro funktioniert nicht mehr (https://www.ms-office-forum.net/forum/showthread.php?t=349548)

hajosch 08.02.2018 10:25

vba-Makro funktioniert nicht mehr
 
Hallo,

mein Makro:

Zitat:


Sub allFiles()
'
datei = Dir("H:Temp1") 'Ordnernamen anpassen
While datei > ""
Documents.Open FileName:=datei, ReadOnly:=False, Format:=wdOpenFormatAuto
' Makro-Code oder der Aufruf des entsprechenden Makros
Call DelDoku
datei = Dir
Wend
End Sub

bringt neuerdings den Laufzeitfehler 5174 'Diese Datei wurde nicht gefunden'.

Angezeigt wird die erste Datei im Ordner.

Die Fehlernachricht kommt bei verschiedenen 'Call'-Einträgen, die für sich (auf eine Einzeldatei bezogen) einwandfrei funktionieren.

Was ist hier falsch?

Danke und Gruß hajosch

haklesoft 08.02.2018 10:51

Hallo hajosch,

weder Document.Open noch Deine Subroutinen sind auf wechselnde individuelle Pfade ausgerichtet. Hänge also noch den Pfad vor Datei.

hajosch 08.02.2018 13:59

Hallo haklesoft,

der Pfad ist doch definiert:

datei = Dir("H:Temp1") : das war falsch geschrieben;

im Original heißt es : datei = Dir("H:Temp1") ; mit '' nach 'H:'

Wenn das nicht reicht, schreib mir (vba-Laie) doch bitte die richtigen Zeilen hin.

Danke und Gruß hajosch

czil 08.02.2018 19:40

Das ist zum einen kein Windows Pfad, der geht mit H:\irgendwohin. Und dann gibt dir Dir () dir den Datei Namen zurück, ohne Pfad. Also den Pfad datei = “H:\irgendwohin“ & Dir(H:\irgendwohin)
Dann klappt das auch

hajosch 09.02.2018 09:06

Hallo czil,

so funktioniert das nicht mit einem Laien;

alle Versuche, Deinen Tipp umzusetzen, führten nicht zum Erfolg.

Setze doch bitte Deine Lösung in mein Makro im Beitrag #1 ein.

Luschi 10.02.2018 21:13

Hallo hajosch,

hier mal die Erklärung von haklesoft in die Praxis umgesetzt:
Code:

Sub test()
    Dim sDoc As Document, _
        sDatei As String, sPfad As String, sTyp As String
   
    sPfad = "H:\Daten\MeineBriefe\"
    sTyp = "*.doc?"
    sDatei = Dir(sPfad & sTyp, vbNormal)
    Do While sDatei <> ""
    Set sDoc = Documents.Open(FileName:=sPfad & sDatei, ReadOnly:=False, Format:=wdOpenFormatAuto)
    'tue irgendwas...
    sDoc.Close True
    Loop
End Sub

Gruß von Luschi
aus klein-Paris

hajosch 11.02.2018 09:20

Hallo Luschi,

die Prozedur bringt in Zeile 'Set sDoc = ' den Laufzeitfehler 5981:
'Makrospeicher konnte nicht geöffnet werden':
das bedeutet lt. Google:
'im VBA-Editor ist unter Extras-Verweise ein ungültiger Verweis vermerkt'

Ich habe an der Stelle alle Verweise auf Office 12 = WORD 7 aktiviert.
Welcher Verweis ungültig sein soll, wird nicht angezeigt und kann von mir nicht ermittelt werden.

czil 11.02.2018 09:39

Ich hab mir jetzt deine Ausgangsfrage noch mal durchgelesen. Du meinst ja, dass die Makros schon mal funktioniert haben in der Form.
Wenn das das dann beim Aufruf einer anderen Prozedur zu Fehlern kommt, ist da vielleicht VBA einfach durch Nichteindeutgkeit Nichteindeutgkeit durcheinander. Schreib mal bei dem call das Modul vorneweg. Also Call Modul1.DelDindsbums
Wie das Modul bei dir hslt heißt.

hajosch 11.02.2018 09:58

Ich habe die Zeile gändert in 'Call Modul1.mFuß'. Richtig so?

Die folgende Nachricht kommt:

Makrospeicher konnte nicht geöffnet werden'

czil 11.02.2018 10:20

Das kann ich so kaum beurteilen, denn ich weiß nicht, ob dein Modul so heißt.
Dazu braucht man die Datei selbst.
Die Schrebweise sieht korrekt aus, die Meldung sagt was anderes.

Btw welches Betriebssystem hast du? MAC?

hajosch 11.02.2018 11:46

Windows 10

an dieser Stelle bin ich überfordert.

Bei der Funktion 'Grafik einfügen' hier im Forum wird eine Web-Adresse für meine Grafik erwartet. Wie bekomme ich die?

[IMG]H:\TempBild-Makro1.docx[/IMG]

Ich wollte die Projekt-Anzeige aus dem Makro-Editor einstellen:

Normal
New Makros
This Document
Project (Bild-Makro1)
This Document
Verweis auf Normal

Die Anzeige 'Modul1' erscheint nicht mehr.

Gerhard H 11.02.2018 11:59

Hallo hajosch,

wenn du die Schaltfläche Anhänge verwalten etwas unterhalb dieses Textfensters verwendest (alternativ die Büroklammer-Schaltfläche, falls sichtbar), brauchst du keine Web-Adresse. Du wählst im Dialogfeld dein Bild einfach via Durchsuchen-Schaltfläche und lädst es ins Forum hoch. Es erscheint dann als Anhang in deinem Beitrag.

hajosch 11.02.2018 13:47

Hallo Gerhard ,

trotz vielen Beiträge geht es offensichtlich mit meinem Problem nicht weiter.

Du hast mir schon öfter hervorragend geholfen.

Ist es zuviel verlangt, Dich zu bitten, mir eine Makro-Prozedur (für WORD 2007) zu liefern,
mit ich erreichen kann:

alle doc/docx-Dateien in einem Ordner nacheinander öffnen, jeweils mit call ein Makro anwenden und dann wieder schließen. ?

Längeres Suchen mit Google hat keinen Erfolg gebracht, obwohl ich meine, dass das viele Anwender betrifft.

czil 11.02.2018 14:22

Es wäre für dich besser, du würdest verstehen was du tust.
Zumindest könntest du mal anfangen, die Leute, die dir helfen wollten so zu unterstützen, dass sie das tun können.
Wenn es dich aber schon überfordert, hier ein Dokument hochzuladen, oder wenigstens einen Screenshot, glaube ich nicht, dass es Sinn macht, dir ein fertiges Makro zu liefern.
Du müsstest das schließlich an deinen Pfad anpassen, was dich ja auch schon überfordert.

Würde dir schon gerne geholfen haben, aber unter diesen Umständen bin ich raus.

Gerhard H 11.02.2018 16:10

Hallo hajosch,

wenn ich das Makro von Luschi hernehme und es so erweitere, dass es deinem Wunsch nach Auslagerung eines Teiles des Codes entspricht, und du auch kontrollieren kannst, was geschieht, dann läuft das in meinem Word 2010 anstandslos durch:
Code:

Option Explicit
Dim sdoc As Document

Sub test()
Dim sDatei As String, sPfad As String, sTyp As String
   
    sPfad = "H:\Temp1\"
    sTyp = "*.doc?"
    sDatei = Dir(sPfad & sTyp, vbNormal)
   
    Do While sDatei <> ""
       
        Set sdoc = Documents.Open(FileName:=sPfad & sDatei, ReadOnly:=False, Format:=wdOpenFormatAuto)
        zeigsher
        sdoc.Close True
        sDatei = Dir
    Loop
   
End Sub

Sub zeigsher()
MsgBox sdoc.Paragraphs(1).Range.Text
End Sub

Wenn es bei dir diesen Laufzeitfehler 5981 gibt, dann ist wohl was an deiner Installation faul. Ich seh jedenfalls keinen Grund, warum das in Word 2007 nicht laufen sollte.

Dazu gibt es hier https://support.microsoft.com/de-de/...utomating-word einen Hinweis drauf, dass deine normal.dotm kaputt sein könnte. Also mal umbenennen und dann Word neu starten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.