Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA - wenn .open methode fehlschlägt, weitermachen

Frage Entwicklung VB for Applications

Mitglied: MartinAD

MartinAD (Level 1) - Jetzt verbinden

27.04.2010 um 08:55 Uhr, 9966 Aufrufe, 8 Kommentare

Hallo, ich habe eine Frage zu VBA.

Ich stehe vor der Aufgabe einen ziemlich großen Fileserver mit duzenden von Freigaben zu migrieren. Nun bin ich grade bei einem Laufwerk auf dem tausende von Word Dokumenten liegen. Das Problem ist, das in diesen Dokumenten sehr viele Hyperlinks sind, die als Ziel den absoluten Pfad zum alten Fileserver verwenden (beispiel: \\alterfilserver\freigabe\dokument.doc). Als Lösung für dieses Problem habe ich mir ein vba makro geschrieben welches im gewählten Laufwerk alle doc-dateien ausliest, und jeden einzelnen hyperlink sozusagen umbiegt (beispiel: \\neuerfileserver\freigabe\dokument.doc).

Das Makro funktioniert fast fehlerfrei und ich habe schon sehr viele GigaByte an Daten erfolgreich migriert, nur manchmal schlägt mein makro beim aufruf dieser Zeile fehl:

"wrd.Documents.Open(FileName)"

Die Instanz meines Word Objekts öffnet hier die nächste word datei. Der Fehler ist folgender:

"Laufzeitfehler 6295:
Office hat ein Probleme mit dieser Datei erkannt. Zum Schutz des Computers darf die Datei nicht geöffnet werden."

Der Fehler interessiert mich eigentlich weniger. Es ist nichtmal relevant, das diese Datei geöffnet wird, weil ich weis das im entsprechenden Pfad und generell bei Dateien die solche Fehler werfen, keine bearbeitung nötig ist. Deswegen möchte ich beim auftreten eines solchen Fehlers einfach weitermachen.

Ich habe schon "on error resume next" probiert - trotzdem kommt die fehlermeldung.

Nun meine Frage: Wie kann ich die Open-Anweisung so ändern, das es nur versucht wird, bei fehlschlag aber einfach weitergemacht wird.

try usw. gibt es ja meines wissens in vba nicht!

Danke!
Gruß Martin
Mitglied: 76109
27.04.2010 um 09:42 Uhr
Leider hast Du keinen assagefähigen Code gepostet, anhand dessen man sehen kann ob Du z.B. Set-Anweisungen verwendest....

Von daher wäre eine Möglichkeit zu prüfen, ob die Datei existiert:
01.
Dim Fso As Object 
02.
 
03.
Set Fso = CreateObject("Scripting.FileSystemObject") 
04.
 
05.
If Fso.FileExists(FileName) Then 
06.
    .... 
07.
    "wrd.Documents.Open(FileName)" 
08.
    .... 
09.
End If
Gruß Dieter
Bitte warten ..
Mitglied: MartinAD
27.04.2010 um 10:24 Uhr
Die Dateien die ich öffnen will, existieren ja. Das Problem ist das diese entweder gesperrt sind oder word aus irgendeinem anderen grund denkt diese nicht öffnen zu können. Ich weis garnicht wieviel myriaden an fehlern da word haben kann beim öffnen von dateien, jedenfalls sind es recht viele.

Es geht darum, generell eine vba möglichkeit zu finden wie man es versuchen kann die datei zu öffnen, wenn es fehlschlägt, einfach weitermachen, schematisch so:

versuche worddatei zu öffnen, wenn es klappt dann

hier weitermachen

wenn nicht dann

hier weitermachen
Bitte warten ..
Mitglied: Twinrix
27.04.2010 um 21:37 Uhr
Hi,

funktioniert statt on error resume next eventuell die Fehlerbehandlung?

Also

on error goto fehlerbehandlung

fehlerbehandlung:

if err.number = 6295 resume next
Bitte warten ..
Mitglied: 76109
27.04.2010 um 22:42 Uhr
Hallo MartinAD!

So könnte es funktionieren:
01.
Sub Makro() 
02.
    Dim AlertLevel As Long 
03.
 
04.
    AlertLevel = Application.DisplayAlerts      'Aktuelle Einstellung sichern 
05.
    Application.DisplayAlerts = wdAlertsNone    'Meldungsausgabe ausschalten 
06.
     
07.
    On Error Resume Next 
08.
     
09.
    '..... 
10.
     
11.
    Documents.Open "E:\Test.doc" 
12.
     
13.
    If Err.Number = 0 Then 
14.
        'Mach was 
15.
    Else 
16.
        Err.Clear                               'Mach nix und lösche den Fehler 
17.
    End If 
18.
     
19.
    '..... 
20.
     
21.
    Application.DisplayAlerts = AlertLevel      'Meldungsausgabe wiederherstellen 
22.
End Sub
Funktion:
Die aktuelle Alert-Einstellung (Meldungsausgabe) sichern, ausschalten und am Ende der Prozedur wiederherstellen.
Wenn Err.Number = 0 (Kein Fehler) dann Code ausführen, ansonsten ignorieren und Fehler löschen.

Das Else mit Fehler löschen ist nur von Bedeutung, wenn Documents.Open in einer Schleife läuft. D.h. wenn die Prozedur für jede Datei einzeln aufgerufen wird, dann kann der Else-Teil entfallen.

Gruß Dieter
Bitte warten ..
Mitglied: MartinAD
28.04.2010 um 08:13 Uhr
vielen dank dafür, ich hab zwar jetzt noch ab und zu eine abfrage wenn ein word dokument passwort geschützt ist - die muss ich noch händisch durchklicken, aber ansonsten sieht es ganz gut aus. für mich ist das Problem erstmal "gelöst" - falls jemand weis wie ich das noch abschalten kann, wäre diese info natürlich auch willkommen, meine recherche blieb erfolglos.

vielen vielen dank nochmal für eure hilfe!
Bitte warten ..
Mitglied: 76109
28.04.2010 um 09:14 Uhr
Hallo MartinAD!

Sollte in etwa so funktionieren:
01.
Sub Makro() 
02.
    Dim Doc As Object, Status As Long, AlertLevel As Long 
03.
 
04.
    AlertLevel = Application.DisplayAlerts          'Aktuelle Einstellung sichern 
05.
    Application.DisplayAlerts = wdAlertsNone        'Meldungsausgabe ausschalten 
06.
     
07.
    On Error Resume Next 
08.
     
09.
    Set Doc = GetObject("E:\Test.Doc") 
10.
     
11.
    Status = Doc.ProtectionType 
12.
     
13.
    Doc.Close 
14.
     
15.
    If Status = wdNoProtection Then                 'Nur Dateien ohne Passwortschutz 
16.
 
17.
        Documents.Open "E:\Test.Doc" 
18.
         
19.
        If Err.Number = 0 Then 
20.
           'Mach was 
21.
        Else 
22.
            Err.Clear                               'Mach nix und lösche den Fehler 
23.
        End If 
24.
    End If 
25.
     
26.
    Application.DisplayAlerts = AlertLevel          'Meldungsausgabe wiederherstellen 
27.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: MartinAD
28.04.2010 um 10:28 Uhr
mannomann, genial! danke!! bin sehr sehr dankbar für euren investierten hirnschmalz!!
Bitte warten ..
Mitglied: 76109
28.04.2010 um 13:25 Uhr
Hallo MartinAD!

Zitat von MartinAD:
mannomann, genial! danke!! bin sehr sehr dankbar für euren investierten hirnschmalz!!
Gern geschehen

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
C und C++
Powershell Methode Compare-Object als C-Sharp Methode
gelöst Frage von mayho33C und C++4 Kommentare

Hallo @ All Ich beiße wieder mal an einem Problemchen und hoffe auf eure Unterstützung Ich möchte folgendes Powershell-Scriptchen ...

C und C++
Methode multiple return values
gelöst Frage von mayho33C und C++8 Kommentare

Hallo Community, ich habe wieder mal eine Frage und hoffe auf eure KnowHow! Ich möchte eine Methode erstelle die ...

Netzwerkgrundlagen
Subnetting für Anfänger (einfache Methode)
Anleitung von unixminNetzwerkgrundlagen9 Kommentare

Hallo zusammen! Hier möchte ich meine Anleitung für Anfänger/Auszubildende zur Bewertung veröffentlichen. Warum für Anfänger, weil die Subnetzberechnung vereinfacht ...

Exchange Server
Methoden zum löschen des Nickname Caches
Frage von Noob80Exchange Server6 Kommentare

Server: Windows Server 2008 R2 Exchange 2010 Clients: Win7 Outlook 2010 Problem: Nach einer Namensänderung kommt es intern dazu, ...

Neue Wissensbeiträge
Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 49 MinutenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 23 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 4 TagenInternet18 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement12 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...