mal wieder habe ich ein Problem bei dem mir die Recherché immer nur Ansätze einer Lösung geliefert hat.
Ich müßte auf einem Server (deswegen am besten Auswahl des Verzeichnisses) alle Dateien eines Verzeichnisses (hat keine weiteren Unterverzeichnisse) ändern.
Und zwar soll aus einer bereits geöffneten Datei "Rates.xlsx" ein Zellbereich in jede andere Datei kopiert werden.
Der Zellbereich ist K3:AP23
Ausserdem soll in Zelle F1 eine 5 eingetragen werden
Die Tabelle in der das passieren soll, "RatesFX" und ist ausgeblendet. Nach dem eintragen sollte die Tabelle wieder ausgeblendet werden.
Danach die Datei speichern, schliessen und nächste Datei...
Etwas in der Art finde ich - aber ohne Tabelle einblenden etc.
Sub Oeffnen()
Dim Datei As String
Dim Arbeitsmappe As String
Dim PFAD As String
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = "D:\"
.ButtonName = "OK"
.Title = "Ordner auswählen"
.Show
If .SelectedItems.Count 0 Then
PFAD = .SelectedItems(1)
End If
End With
If PFAD "" Then
Datei = Dir(PFAD & "\" & "*.xls")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While Datei ""
Application.Workbooks.Open Datei
'ActiveWorkbook.Close True
Datei = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub
Oder dieses hier:Sub test()
Const folderspec = "c:\temp" 'Hier das Verzeichnis, in dem die 100 XLS Dateien liegen - aber _
keine anderen XLS als die zu Ändernden!
Dim fs, f, f1, fc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
For Each f1 In fc
If UCase(Right(f1, 3)) = "XLS" Then 'Excel File gefunden
Call ChangeCell(folderspec, f1.Name)
End If
Next
End Sub
Sub ChangeCell(folder As String, file As String)
Workbooks.Open Filename:=folder & "\" & file
Range("G23").Select
ActiveCell.Formula = "=G22/C8"
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Aber was muss ich ändern damit das so funktioniert wie ich es brauche?
Weiss jemand Rat?
Vielen Dank und viele Grüße Lutz