Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1124to1128
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mit VBA Code VBA Zeilen änden | Herbers Excel-Forum

mit VBA Code VBA Zeilen änden
03.01.2010 16:56:56
Claudia

Hallo liebe Excel Helfer,
ein frohes neues Jahr allen hier im Forum.
Wir haben in unserer Firma an vielen Aussendienstmitarbeitern Programme ausgegeben, die aber zum Teil sehr unterschiedlich geändert worden sind. Jetzt soll eine ganz bestimmte Zeile (nur ist diese nirgends an der gleichen Stelle) geändert werden. Das Prog ist geschützt, VBA Passwort ist bekannt.
Ich habe hier im Archiv schon gesucht und einiges gefunden, komme aber nicht weiter und bitte um Hilfe.
Es soll ein kleines Prog geschrieben werden (update.xls) welches sich im gleichen Verzeichniss wie die Ursprungsdatei befinden müsste (Preise.xls)
Jetzt muss update.xls in Preise.xls folgendes ändern
von .Caption = "Preise 2009"
nach .Caption = "aktuelle Preisliste"
Hier das was ich gefunden und gebastelt habe aber irgendiwe überhaupt nicht funktioniert:

Sub aufheben() 'VBA-Kennwort in Preise.xls aufheben
Workbooks.Open Filename:="Preise.xls"
SendKeys "%{F11} %Xi{TAB 9}" & "Passwort" & "{tab}{enter}{enter} %q"
With Workbooks("Preise.xls").VBProject
End Sub
' in ein Modul
Const SuchZeile = ".Caption = ""Preise 2009"""
Const NeueZeile = ".Caption = ""aktuelle Preisliste"""
Sub VBAZeileÄndern()
Set VBE = ...... 'die gesuchten Zeilen stehen im Ursprungsprogramm in Diese Arbeitsmappe
' ob de Code ab hier wirklich richtig ist wage ich dann zu bezweifeln
With VBE
For x = 1 To .countoflines
i = .countoflines
If Trim(.Lines(x, 1)) = NeueZeile Then
.ReplaceLine x, SuchZeile
Exit Sub
End If
If Trim(.Lines(x, 1)) = SuchZeile Then
.ReplaceLine x, NeueZeile
Exit Sub
End If
Next x
End With
End Sub
Wer kann mir bitte helfen
Liebe Grüße
Claudia

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mit VBA Code VBA Zeilen änden
03.01.2010 17:38:33
Uduuh
Hallo,
das wird hakelig.
1. ist die Sendkeys-Reihenfolge von der Excelversion abhängig.
2. muss dem Zugriff auf des VBA-Projekt vertraut werden. Diese Einstellung kann man nur manuell vornehmen
Gruß aus’m Pott
Udo

AW: mit VBA Code VBA Zeilen änden
03.01.2010 18:34:50
Claudia
Hallo Udo,
die Excel Versionen sind alle 2003 und der Zugriff auf des VBA-Projekt kann ich den Mitarbitern ja per Mail erklären, das diese das entsprechend einstellen.
Kannst Du mir weiterhelfen?
Gruß
Claudia
AW: mit VBA Code VBA Zeilen änden
03.01.2010 20:46:10
Claudia
Hallo Udo,
die Excel Versionen sind alle 2003 und der Zugriff auf des VBA-Projekt kann ich den Mitarbitern ja per Mail erklären, das diese das entsprechend einstellen.
Kannst Du mir weiterhelfen?
Gruß
Claudia
Anzeige
AW: mit VBA Code VBA Zeilen änden
04.01.2010 16:07:19
Herbert Grom
hi udo,
hast du meine email noch nicht gelesen? bitte melde dich! danke!
sorry claudia!
gruß herbert
AW: mit VBA Code VBA Zeilen änden
04.01.2010 02:25:27
dan
Hallo,
hier ein Versuch :-).
Der Code versucht alle Zeilen im VBProject finden und etsaetzen. Bin mir nicht sicher, ob das so in Ordnung ist?
Auch die SendKeys sind manchmal problematisch, also ich kann nicht garantieren, dass diser Code auch bei Dir funktioniert.
Gruss dan, cz.
' <<< add VBA extensibility reference >>>
Option Explicit
Private Const SuchZeile = ".Caption = ""Preise 2009"""
Private Const NeueZeile = ".Caption = ""aktuelle Preisliste"""
Public Sub aufheben() 'VBA-Kennwort in Preise.xls aufheben
Dim AltKey As String
Dim CtrlKey As String
Dim preiseWorkbook As Workbook
Dim preiseWorkbookVBProject As VBIDE.vbProject
On Error GoTo Err_aufheben
Set preiseWorkbook = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Preise.xls")
Set preiseWorkbookVBProject = preiseWorkbook.vbProject
AltKey = "%"
CtrlKey = "^"
SendKeys AltKey & "{F11}", True    'Open VB Editor
SendKeys AltKey & "T", False       'Select Tools toolbar
SendKeys "e", False                'Select VBAProject Properties
SendKeys "psw", False             'Enter password into dialog box, <<< change "psw' to your  _
own password >>>
SendKeys "{ENTER}", False          'Press OK, Project properties dialog should show up
SendKeys CtrlKey & "{PGDN}", False 'Change tab-page to Protection
SendKeys "{ENTER}", True          'Press OK to unprotect the project
If (preiseWorkbookVBProject.Protection = vbext_pp_none) Then
Call ReplaceCaption(preiseWorkbookVBProject, SuchZeile, NeueZeile)
SendKeys AltKey & "{F11}", False   'Close VB Editor
Else
MsgBox "Protection removal failed."
End If
Exit Sub
Err_aufheben:
MsgBox Err.Description, vbOKOnly, "Error in Sub aufheben"
End Sub

Private Sub ReplaceCaption(ByRef preiseWorkbookVBProject As VBIDE.vbProject, ByVal oldText As  _
String, ByVal newText As String)
Dim vb_component As VBComponent
Dim codeModuleLine As Long
For Each vb_component In preiseWorkbookVBProject.VBComponents
With vb_component.CodeModule
For codeModuleLine = 1 To .CountOfLines
If Trim(.Lines(codeModuleLine, 1)) = oldText Then
.ReplaceLine codeModuleLine, newText
End If
Next codeModuleLine
End With
Next
End Sub

Anzeige
AW: mit VBA Code VBA Zeilen änden
04.01.2010 12:03:30
Claudia
Hallo Dan,
danke für Deine Bemühung, aber funktioniet leider nicht.
Habe noch mal auf offen gestellt, vielleicht hat noch jemand eine Idee.
Gruß
Claudia
AW: mit VBA Code VBA Zeilen änden
04.01.2010 12:56:25
dan
Hallo Claudia,
wie verhaelt sich der Code wenn es auf Deinem PC lauft? Bekommst Du irgenwelche Meldungen (error message-boxes)?
Du hast (nehme ich an) einen deutschen Excel, dort sind die 'shortcut keys' anders. Also man muss den Code dem entsprechend aendern. Erst dann koennten die SendKeys funktionieren.
Gruss, dan
AW: mit VBA Code VBA Zeilen änden
04.01.2010 13:08:06
Rudi Maintaire
Hallo,
für deutsches XP:
SendKeys AltKey & "{F11}", True 'Open VB Editor
SendKeys AltKey & "x", False 'Select Tools toolbar
SendKeys "i", False 'Select VBAProject Properties
SendKeys "psw", False 'Enter password into dialog box, <<< change "psw' to your own password >>>
SendKeys "{ENTER}", False 'Press OK, Project properties dialog should show up
SendKeys CtrlKey & "{PGDN}", False 'Change tab-page to Protection
SendKeys "{ENTER}", True 'Press OK to unprotect the project
für 2003 evtl nochmal anpassen.
Gruß
Rudi
Anzeige
AW: mit VBA Code VBA Zeilen änden
04.01.2010 16:41:06
Herbert Grom
Hallo Claudia,
vielleicht kann ich Dir bei Deinem Problem helfen. Versuche es mal damit:


Sub ModulZeileTauschen()
    Dim iCounter%
    With ThisWorkbook.VBProject.VBComponents("Modul4").CodeModule     'Name "Modul4" anpassen
        For iCounter = 1 To .CountOfLines
            If .Lines(iCounter, 1) = "  MsgBox ""Austauschen!""" Then 'dieser Text wird ausgetauscht
                .ReplaceLine iCounter, "  MsgBox ""Ausgetauscht!"""   'mit diesem Text. Blanks beachten!
                Exit Sub
            End If
        Next iCounter
    End With
End Sub

     Code eingefügt mit Syntaxhighlighter 4.7

Dieses Makro sucht im "Modul4" nach der Zeile mit dem Code " MsgBox "Austauschen!"". Zu beachten sind dabei sowohl die Blanks am Textanfang wie auch die doppelten Anführungszeichen. Probiers mal!
Gruß Herbert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige