Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Excel

VBA Excel
10.11.2005 12:02:08
Kicki
Hallo,
ich hab VBA Grundkenntnisse, die helfen mir aber nicht wirklich ... im Moment.
Ich hab folgendes vor... In einer Excel Liste stehen in den Spalten Namen, Nummern alt und Nummern neu. Ich muß ein VBA Script schreiben, welches mir aus einem Dateiordner alle vorhandenen .xls Dateien nacheinander öffnet, eine bestimmte Nummer aus einer Zelle ausliest, diese in der Excel Liste sucht und durch die in der Spalte danebenstehende Nummer ersetzt und dann die xls Datei wieder unter selben Namen speichert.
Wie kann ich sowas angehen?
Kicki (und zwar eine ziemlich verzweifelte ;-))

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel
10.11.2005 12:20:20
Susanne
Hallo Kicki,
hier ein Makro was in einem bestimmten Verzeichnis alle Dateien mit .xls am Ende des Dateinamens öffnet und verarbeitet. Bei deien Verarbeitung kannst du die entsprechendn Schritte ja mit dem Recorder aufzeichen und dann einfügen.Nach dem Verarbeiten werden die Mappen gesichert und wieder geschlossen

Sub Monatsablauf()
Application.ScreenUpdating = False
With Application.FileSearch
'   Neue Suche vorbereiten
.NewSearch
.Filename = "*.xls"
.LookIn = "C:\Mappen"
'   ... und starten
If .Execute > 0 Then
'   Dateien gefunden
Dim f
Dim i As Integer
Dim Mappe As Workbook
For Each f In .FoundFiles
i = i + 1
'ActiveSheet.Cells(i, 1).Value = f
Application.StatusBar = "Verarbeite " & f
Set Mappe = Workbooks.Open(f, UpdateLinks:=0)
Deine Verarbeitung
Mappe.Save
Mappe.Close
Next
End If
End With
Application.ScreenUpdating = True
End Sub

Hoffe dir geholfen zu haben.
Gruß
Susanne
Anzeige
AW: VBA Excel
10.11.2005 13:16:12
Kicki
Hallo Susanne,
danke für die schnelle Hilfe.
Ich hab jetzt das Suchen und Ersetzen aufgezeichnet... jetzt habe ich folgende Probleme. Zum einen enthalten die sich öffnenden Dateien selber Makros, die beim Abspeichern dazu zwingen, eine Zelle zu füllen. Wie kann ich die Makroaktivierung beim Öffnen der Dateien verhindern?
Zum Anderen schreibt sich bei der Markoaufzeichnung ja der Wert der Zelle in die Programmierung, in der ich das Marko aufgezeichnet habe. Später soll das VBA Projekt aber jeweils den Wert der kopierten Zelle in der Liste suchen und durch den in der nebenstehenden Wert der Spalte ersetzen.
Vielleicht ist das doch einfach zu viel für jemand ohne große Ahnung oder?
Kicki
Anzeige
AW: VBA Excel
10.11.2005 13:35:07
Susanne
Hallo Kicki,
bin leider selber VBA-Anfänger. Bei mir laufen in dem angegebenen Beispiel auch Listen mit Makro ab. Ohne Probleme. Allerdings laufen die Makros im Hintergrund und erwarten keine EIngabe.
Das einzige was ich auf die Schnelle im Archiv gefunden habe ist der Befehl :
Application.EnableEvents=false
muss aber hinterher wieder auf true gesetzt werden.
Probiere es mal damit
LG
Susanne
AW: VBA Excel
10.11.2005 13:42:22
Kicki
...was absolut das Richtig war :-).
Na wenn ich so Tips schon von einer "Anfängerin" bekomme, würden die Profis mein Problem sicher in sekundenschnelle lösen. Hoffe, dass ich da auch bald fitter bin.
Die Grundlage ist, dass ich in ca. 2000 Blättern eine Nummer austauschen muß. Die Überleitungsmatrix der alten auf die neuen Nummern ist in besagter Liste. Daher die Suchen und Ersetzen Sache.
Was Du mir bisher geschrieben hast, funktioniert prima. Vielleicht kannst Du mir noch sagen, wie ich bewerkstellige, dass die Suchen/Ersetzen Programmzeilen nacheinander auf jedem geöffneten Blatt ausgeführt werden muß. Daher wäre es von Vorteil, wenn das Makro ein Blatt öffnet, suchen/ersetzen ausführt, speichert, schließt und die nächste .xls Datei im angegebenen Ordner öffnet und weitermacht.
Lieben Gruß,
Dani
Anzeige
AW: VBA Excel
10.11.2005 14:12:57
Susanne
Hallo Dani (oder Kicki?)
Der Code den ich dir gegeben habe arbeitet jede Mappe einzeln ab. Er öffnet sie, macht die Verarbeitung und schliesst sie wieder. Das kannst du sehen wenn du das Makro aus VBA heraus startet. dann sagt er dir in der Zeile oben welche Liste gerade aktiv ist.
So und nun zu deinem anderen Problem:
Sheets("Tabelle1").Select
Cells.Select
Selection.Replace What:="5", Replacement:="8", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Hier gehe ich auf Tabelle1, markiere das ganze Arbeitsblatt und ersetzte alle 5 durch 8
war e das was du wissen wolltest?
LG
Susanne
Anzeige
AW: VBA Excel
10.11.2005 14:45:45
Kicki
Praktisch sieht das so aus mit dem suchen/ersetzen, wenn ich es aufzeichne:
Range("B5").Select ‘gibt nicht an, in welchem Blatt kopiert warden soll,
da aufgezeichnet in geöffneten Blatt, muß aber laufen/
ausgeführt werden unter Test.xls
Selection.Copy
Windows("Test.xls").Activate
Range("A1").Select
Cells.Find(What:="99618479", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
‘gibt bei What den kopierten Wert an, aber der ist ja nicht konstant sondern in jedem Blatt anders.
Range("F5").Select
‘die zu ersetzenden Werte befinden sich zwar alle in Spalte F, aber nicht an F5, sondern sind eben in F Spalte neben in E Spalte gefundenem „Alt-Wert“. Application.CutCopyMode = False
Selection.Copy
Windows("Zeit_Mustermann.xls").Activate
ActiveCell.Replace What:="99618479", Replacement:="91107653", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Find(What:="99618479", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
‚selbes Spiel wie oben. Es werden die Werte der Aufzeichnung bei what eingetragen, aber die sind wie gesagt immer verschieden. Daher müsste das Makro auslesen, sich merken und jeweils damit arbeiten.
Anzeige
AW: VBA Excel
10.11.2005 15:20:57
Susanne
Hallo Dani,
so ganz verstehe ich jetzt nicht was du in der Verarbeitung machen möchtest. Kannst du mir vielleicht einmal ein Beispiel geben ?...Dann tue ich mir vielleicht leichter...
LG
Susanne
AW: VBA Excel
10.11.2005 15:57:17
Susanne
also hier habe ich was...vielleicht nutzt es dir. Ich nehme den Wert aus A3 und ersetze ihn in Spalte A durch B3. Hilft es dir weiter?

Sub SucheErsetze()
Dim Suche As String
Dim Ersetze As String
Dim Akt As Long
Suche = Range("A3").Value
Ersetze = Range("B3").Value
For Akt = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(Akt, 1).HasFormula Then
Cells(Akt, 1).Formula = WorksheetFunction.Substitute(Cells(Akt, 1).Forumla, Suche, Ersetze)
Else
Cells(Akt, 1).Formula = WorksheetFunction.Substitute(Cells(Akt, 1).Value, Suche, Ersetze)
End If
Next Akt
End Sub

Gruß
Susanne
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige