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 Makro stürzt ab

Mitglied: jo4884

jo4884 (Level 1) - Jetzt verbinden

20.04.2010 um 10:40 Uhr, 6814 Aufrufe, 4 Kommentare

Hi bin noch sehr ungeübt im umgang mit VBA Programmierung und habe folgendes Problem,
wo ich nicht mehr weiter komme.

Ich öffne ein Worddokument. In diesem Dokument ist ein Button vorhanden.
Beim klicken auf diesen Button wird eine Userform aufgerufen in der man ein Dokument (Word) auswählen kann, welches nach verschiedenen Stichworten durchsucht werden soll.
Es kann unterschieden werden zwischen .doc und .docx .
Das habe ich folgendermaßen gelöst:

If Right(Textdokument, 5) = ".docx" Then
Windows(Textdokument).Activate
Else:
If Right(Textdokument, 4) = ".doc" Then
Windows(Textdokument & " [Kompatibilitätsmodus]").Activate

Das Makro prüft Quasi von Rechts den Dateipfad und kann somit die Versionen erkennen.

Mein eigentliches Problem ist jetzt das von Zeit zu Zeit (meistens beim ersten Start des Programms) mir ein Fehler ausgegeben wird, das das angeforderte Element nicht in der Sammlung vorhanden ist (Laufzeitfehler 5941).
Wenn ich es danach noch mal ausführe funktioniert es.
Kann ich das vorher irgendwie Abfangen?

Gruß an alle
Mitglied: TheEternalPhenom
20.04.2010 um 11:31 Uhr
Hallo jo4884,

Zu erste einmal Else mit einem dopple Punkt?
Habe ich etwas verpasst in VBA oder nur ein Übertragungsfehler?

Poste bitte einmal das gesamte Programm nicht immer ist der Fehler in der Zeile, welche VBA als verkehrt markiert zu suchen.

Dann wäre noch interessant zu wissen ob du die einzelnen Zeilen schon getestet hast.
Ich meine also jede Zeile als eigenes Makro getestet.


Und dann noch einen Tipp.

If Right(Textdokument, 5) = ".docx" Then

Versuche das Ergebnis von "Right(Textdokument, 5) " in eine Variable zu packen und dann erst die Abfrage zu gestalten. Gleiches gilt auch für den vergleichs Wert.

Ich hatte es in letter Zeit, dass genau bei solchen Zeile die Deklarierung nicht funktionierte o.ä. Probleme auftraten. Am besten die Variablen dann auch noch gleich deklarieren.

Gruß

duffman521
Bitte warten ..
Mitglied: jo4884
20.04.2010 um 12:14 Uhr
Also ich denk mal das die Formatierung wieder Falsch ist, Sorry.
An sich funktioniert es ja. Nur ab und zu gibt er mir diesen Fehler aus.
01.
Private Sub Stichwortsuche_Click()
02.
' Makro sucht Schlüsselwörter
03.
'
04.
 Dim y As Integer
05.

06.
If TextBox1.Value <> "" Then                                   
07.
      Documents.Open FileName:=Textdokument, ReadOnly:=False    
08.
              
09.
    If Right(Textdokument, 5) = ".docx" Then     
10.
       Windows(Textdokument).Activate           
11.
          
12.
        Dim oDoc As Document
13.
        Set oDoc = ThisDocument
14.
        
15.
        Set rDoc = ThisDocument                                     
16.
        a = rDoc.Tables(1).Rows.Count                               
17.
        For i = 2 To a                                             
18.
            b = Left(rDoc.Tables(1).Cell(i, 1).Range.Text, _
19.
            Len(rDoc.Tables(1).Cell(i, 1).Range.Text) - 2)
20.
            c = Left(rDoc.Tables(1).Cell(i, 2).Range.Text, _
21.
            Len(rDoc.Tables(1).Cell(i, 2).Range.Text) - 2)
22.
           
23.
  
24.
        Selection.HomeKey Unit:=wdStory
25.
        Selection.Find.ClearFormatting
26.
        With Selection.Find
27.
            .Text = (b)                                 
28.
            .Replacement.Text = ""
29.
            .Forward = True
30.
            .Wrap = wdFindStop
31.
            .Format = False
32.
            .MatchCase = False
33.
            .MatchWholeWord = True
34.
            .MatchWildcards = False
35.
            .MatchSoundsLike = False
36.
            .MatchAllWordForms = False
37.
        End With
38.
      
39.
        Do While Selection.Find.Execute
40.
          Selection.Comments.Add Range:=Selection.Range, Text:=(c) 
41.
   
42.
          y = y + 1
43.
        Loop
44.
        Next
45.
          
46.
          
47.
    Else:
48.
        If Right(Textdokument, 4) = ".doc" Then                               
49.
           Windows(Textdokument & " [Kompatibilitätsmodus]").Activate
50.
            
51.
            Set rDoc = ThisDocument
52.
            a = rDoc.Tables(1).Rows.Count                             
53.
            For i = 2 To a
54.
                b = Left(rDoc.Tables(1).Cell(i, 1).Range.Text, _
55.
                Len(rDoc.Tables(1).Cell(i, 1).Range.Text) - 2)          
56.
                c = Left(rDoc.Tables(1).Cell(i, 2).Range.Text, _
57.
                Len(rDoc.Tables(1).Cell(i, 2).Range.Text) - 2)         
58.
           
59.
            Selection.HomeKey Unit:=wdStory                
60.
            Selection.Find.ClearFormatting
61.
            With Selection.Find
62.
                .Text = (b)                                         
63.
                .Replacement.Text = ""
64.
                .Forward = True
65.
                .Wrap = wdFindStop
66.
                .Format = False
67.
                .MatchCase = False
68.
                .MatchWholeWord = True
69.
                .MatchWildcards = False
70.
                .MatchSoundsLike = False
71.
                .MatchAllWordForms = False
72.
            End With
73.
      
74.
            Do While Selection.Find.Execute
75.
            Selection.Comments.Add Range:=Selection.Range, Text:=(c)        
76.
             y = y + 1
77.
            Loop
78.
            Next
79.
                       
80.
                Else: MsgBox "Falsches Dateiformat"
81.
                      Windows(Textdokument).Close             
82.
           End If 
83.
      End If
84.
   
85.
Else:
86.
     
87.
End If
88.
End Sub
89.

90.
Private Sub Textdokument_auswählen_Click()
91.
' Textdatei wählen.
92.
 
93.
    Dim fd As FileDialog
94.

95.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
96.

97.
    With fd
98.
        .AllowMultiSelect = False
99.
        If (VerzeichnisUnused) Then
100.
            .InitialFileName = Textdokument.Path & "\" 
101.
            VerzeichnisUnused = False
102.
        End If
103.
        
104.
        If .Show = -1 Then
105.
            Datei = True
106.
                    
107.
            Textdokument = .SelectedItems(1)
108.
            TextBox1.Value = Textdokument
109.

110.
        Else
111.
        End If
112.
    End With
113.
    Set fd = Nothing
114.
End Sub

[Edit] Mal versuchsweise in Codetags gesetzt. [/Edit]
Bitte warten ..
Mitglied: TheEternalPhenom
20.04.2010 um 12:35 Uhr
Du sagst ab und zu.

Wann genau?

Kannst du die Fehlermeldung provozieren?

Kommt die Meldung zum Beispiel nur, wenn dein *.Docx Datei genutzt wird, Sonderzeichen im Dateinamen sind oder dieser zulange ist?


Ich schau mir mal das Makro an ob ich vllt. etwas sehe. 4 Augen sehen bekanntlich mehr als 2 Stück.
Bitte warten ..
Mitglied: jo4884
20.04.2010 um 13:21 Uhr
Also provozieren kann ich die Fehlermeldung nicht.
Meistens kommt sie wenn das Programm zum ersten mal nach einem Programmneustart läuft.
An den Dateien kann es Glaube ich nicht liegen, denn zum testen verwende ich immer die beiden
gleichen Dateien.
Wenn ich nach der Fehlermeldung auf Debuggen oder Beenden klicke und die selbe Datei erneut aufruf,
dann funktioniert es.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel-Makro
gelöst Frage von yuki13Microsoft Office7 Kommentare

Hallo Zusammen!! :-) Ich bin nicht so fit in Excel Makros und wollte mich hier erkundigen, ob mir jemand ...

Microsoft Office
Excel Makro Hilfe
gelöst Frage von freshman2017Microsoft Office8 Kommentare

Moin Moin! Ich würde gerne mit Excel - Kombinationen für Artikelnummern erstellen. Könnte hierbei bereits heraus finden, dass ein ...

Microsoft Office
Microsoft Office Makro
gelöst Frage von Hanspeter92Microsoft Office2 Kommentare

Hallo zusammen, Ich möchte ein Makro erstellen, das in allen Word-Dokumenten in einem Ordner eine Kopf-und eine Fusszeile einfügt. ...

Microsoft Office
Outlookregel via Makro
Frage von wauzziMicrosoft Office2 Kommentare

Hallo Experten ! Ich habe im Büro ein kleines Problem und hoffe Ihr könn mir hierbei helfen: Wir bekommen ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 2 TagenWindows 71 Kommentar

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 5 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 6 TagenMicrosoft Office8 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 8 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Installation
Windows10 Home Neuinstallation - Raketentechnik
Frage von spacyfreakWindows Installation13 Kommentare

"Kannst du den Rechner von der Tante von WindowsXP auf Windows10 Home upgraden" haben sie gefragt? "Sicher, was kann ...

Utilities
Teamviewer 9.x "out of date" ??
gelöst Frage von keine-ahnungUtilities13 Kommentare

Moin at all, mein topaktueller teamviewer (alles 9.x - releases) verweigert seit heute die Arbeit und bemeckert: "the remote ...

Windows 10
Windows 10 verwendet FritzBox per IPv6 als DNS-Server an Stelle des per DHCP vergebenen DNS-Servers
Frage von Datax87Windows 1010 Kommentare

Hallo, ich habe ein kleines Problem mit der Namensauflösung (DNS) unter Windows 10. Mir ist heute aufgefallen, dass ich ...

Voice over IP
Anbindung Telekom Cloud PBX mit Sophos SG330
gelöst Frage von macomarVoice over IP7 Kommentare

Hallo an alle, wir beabsichtigen mit unserer alten Siemens Telefonanlage auf Telekom Cloud PBX umzusteigen. Da wir eine Verwaltung ...