Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung VB for Applications

Mitglied: jo4884

jo4884 (Level 1) - Jetzt verbinden

20.04.2010 um 10:40 Uhr, 6221 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Microsoft Office
gelöst Makro wird beim öffnen Vorlage nicht ausgeführt (8)

Frage von Sunny89 zum Thema Microsoft Office ...

Outlook & Mail
Outlook 2013 stürzt beim Senden ab (8)

Frage von ForgottenRealm zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...