Microsoft Excel

Herbers Excel/VBA-Archiv

Hilfe (dringend!) notwendig bei autom. Codeänderun

Betrifft: Hilfe (dringend!) notwendig bei autom. Codeänderun von: Felix Staab
Geschrieben am: 08.09.2004 08:28:07

Hi,

brauche dringend Hilfe bei einem Code der x-Dateien öffnet, nach einem Programmierfehler sucht und diesen herauslöscht.

Habe soweit schon alles fertig nur brauche ich Hilfe um im Code eines jeden Sheets nachzusehen ob sich dort vielleicht dieser Codeschnipsel versteckt haben könnte.

Für Antworten bin ich sehr dankbar.

Mit besten Grüßen


Felix


For iCounter = 1 To ActiveWorkbook.Sheets.Count
'-------------In der nächsten Zeile ist der Fehler.
'-------------Wie bezeichne ich diese Zeile richtig?
With ActiveWorkbook.VBProject.VBComponents(Sheets(iCounter)).CodeModule
For iCZCounter = 1 To .CountOfLines
If .Lines(iCZCounter, 1) Like "*jjjtjjtu*" Then
.ReplaceLine iCZCounter, ""
Exit For
End If
Next iCZCounter
End With
Next iCounter

  


Betrifft: AW: Hilfe (dringend!) notwendig bei autom. Codeänderun von: Nepumuk
Geschrieben am: 08.09.2004 09:03:18

Hallo Felix,
versuch es so:


For iCounter = 1 To ActiveWorkbook.Sheets.Count
    With ThisWorkbook.VBProject.VBComponents(Sheets(iCounter).CodeName).CodeModule
        For iCZCounter = 1 To .CountOfLines
            If .Lines(iCZCounter, 1) Like "*jjjtjjtu*" Then
                .DeleteLines iCZCounter
                Exit For
            End If
        Next
    End With
Next


Gruß
Nepumuk


  


Betrifft: AW: Hilfe (dringend!) notwendig bei autom. Codeänd von: Felix Staab
Geschrieben am: 08.09.2004 09:35:16

Also - zum einen Danke Nepomuk - Damit hast du mir schon einmal einige weitergeholfen, aber...

Das Problem liegt glaube ich ein wenig tiefer...
Ein Kollege hat eine Tabelle erstellt dabei hat er wohl nicht aufgepasst und in dieser Tabelle im Quelltext "jjjtjjtu" eingetippt.
Im Quelltext dieser Tabelle ist keinerlei Art von Code zu finden sondern einzig und allein dieser Tippfehler.
Starte ich nun das Makro meldet er mir (und das wohl auch nicht zu unrecht) einen Objektorientieren oder Anwendungsfehler. Ich vermute das liegt daran, dass dieser Tippfehler in keinem Modul.
Wie bekomme ich diesen Code nun dennoch weg, sollte er wirklich vorhanden sein in der geöffneten Datei?


  


Betrifft: AW: Hilfe (dringend!) notwendig bei autom. Codeänd von: Nepumuk
Geschrieben am: 08.09.2004 09:40:32

Hallo Felix,
jetzt versteh ich nur Bahnhof. Lade mal die Mappe auf den Server. Daten müssen keine drin sein.
Gruß
Nepumuk


  


Betrifft: Dateien von: Felix Staab
Geschrieben am: 08.09.2004 09:56:28

Anbei die Korrekturdatei: https://www.herber.de/bbs/user/10651.xls
und ein Screenshot über den Tippfehler:


  


Betrifft: AW: Dateien von: Nepumuk
Geschrieben am: 08.09.2004 11:13:37

Hallo Felix,
du kannst keine With - Anweisung die sich auf unterschiedliche Objekte beziehen ineinander schachteln. So geht's:


Option Explicit

Sub Korrigiere()
    Dim lCounter As Long, sFilename As String, myVBComponents As Object
    Dim iCounter As Integer, iCZCounter As Integer, bol_oldStatus As Boolean
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        bol_oldStatus = .DisplayStatusBar
        .DisplayStatusBar = True
    End With
    With Worksheets("Tabelle1")
        .Columns(1).ClearContents
        .Cells(1, 1) = "Änderungen wurden an folgenden Dateien durchgeführt:"
    End With
    With Application.FileSearch
        .LookIn = "C:\Daten\"
        .Filename = "*Q*.xls"
        .SearchSubFolders = True
        .Execute
        For lCounter = 1 To .FoundFiles.Count
            Cells(lCounter + 1, 1) = .FoundFiles(lCounter)
        Next
    End With
    Worksheets("Tabelle1").Columns(1).AutoFit
    For lCounter = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        sFilename = Dir(Cells(lCounter, 1))
        Application.StatusBar = "Bearbeitet wird " & sFilename
        Workbooks.Open Cells(lCounter, 1)
        With Workbooks(sFilename)
            With .VBProject
                For Each myVBComponents In .VBComponents
                    If .Type = 100 And .Name <> Workbooks(sFilename).CodeName Then
                        With myVBComponents.CodeModule
                            For iCZCounter = 1 To .CountOfLines
                                If .Lines(iCZCounter, 1) Like "*jjjtjjtu*" Then
                                    .DeleteLines iCZCounter
                                    Exit For
                                End If
                            Next
                        End With
                    End If
                Next
            End With
            .Close True
        End With
    Next
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .StatusBar = False
        .DisplayStatusBar = bol_oldStatus
    End With
End Sub


Gruß
Nepumuk


  


Betrifft: Frage immer noch offen von: Felix Staab
Geschrieben am: 08.09.2004 13:33:44

Hi,

Fehler tritt immer noch auf Laufzeitfehler '1004'
Fehlermeldung: "Die Methode VBProjekt für das Objekt Workbook ist fehlgeschlagen"
(Zeile 58) With Workbooks(sFilename)
(Zeile 59) With .VBProject
(Zeile 60) For Each myVBComponents In .VBComponents

*grübelnd am Kopfe kratzt*


  


Betrifft: AW: Frage immer noch offen von: Nepumuk
Geschrieben am: 08.09.2004 14:07:28

Hallo Felix,
das Programm ist getestet unter Excel2000 Windows2000 und hat einwandfrei funktioniert. Ändere mal diese Zeile:

If .Type = 100 And .Name <> Workbooks(sFilename).CodeName Then

so:

If myVBComponents.Type = 100 And myVBComponents.Name <> Workbooks(sFilename).CodeName Then

Gruß
Nepumuk


  


Betrifft: Der Programmatische Zugriff... von: Felix Staab
Geschrieben am: 08.09.2004 15:07:58

Laufzeitfehler '1004'

Der Programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher.

(selber Fehler wie der vorhergehende in der Zeile 59)

Vielen Dank übrigens, dass du weiterhin so eifrig dabei bist und mir hilfst :)


  


Betrifft: Korrektur: Makro läuft unter 97 problemlos... von: Felix Staab
Geschrieben am: 08.09.2004 15:12:53

Warum aber eigentlich unter Excel2003 nicht?

Und vielen Dank nochmals für deine Nerven und deine Geduld...


  


Betrifft: AW: Korrektur: Makro läuft unter 97 problemlos... von: Nepumuk
Geschrieben am: 08.09.2004 16:29:36

Hallo Felix,
in Excel XP musst bei "Extras" - "Makros" - "Sicherheit" - "Vertrauenswürdige Quellen" - "Zugriff auf Visual Basic-Projekt vertrauen" ein Häkchen rein.
Gruß
Nepumuk


  


Betrifft: Danke :) von: Felix Staab
Geschrieben am: 09.09.2004 15:19:15

Vielen Dank - jetzt klappt alles :)


  


Betrifft: Frage noch offen... von: Felix Staab
Geschrieben am: 08.09.2004 09:41:22

Hab doch glatt vergessen das Häckchen zu setzen :)