Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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

Namen aller Arbeitsmappe in einem Ordner ändern

Namen aller Arbeitsmappe in einem Ordner ändern
24.10.2013 10:55:55
Dingdang
Hallo,
ich möchte anhand den Felderbenennungen einer Arbeitsmappe (nenne ich Mustermappe) die Namen in aller Arbeitsmappen in einem vorgegebenen Ordner anpassen. Ich glaube man kanns direkt lösen oder zuerst die Namen aus Mustermappe auslesen und in einer Tabelle (Infortabelle) speichern und anhand dieser Infortabelle noch die Namenänderung durchführen. Zu diesen zwei Wege habe ich jeweils ne Code geschrieben. Leider funktionieren beide code nicht. Ich bin sehr dankbar falls jemand mir beim Debuggen helfen kann!!
direkte Lösung:

Sub Copy_All_Defined_Names()
Dim x As Name
Const sSourcePath As String = "D:\Dateien\test"
Dim fso As Object, oFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Application.DisplayAlerts = False
For Each oFile In fso.GetFolder(sSourcePath).Files
If LCase(Right(oFile.Name, 5)) = ".xlsm" Then
Application.Workbooks.Open (oFile.Path)
Workbooks("Mustermappe.xlsm").Activate
For Each x In ActiveWorkbook.Names
Workbooks(oFile.Name).Names.Add Name:=x.Name, RefersTo:=x.Value
Debug.Print x
Next x
End If
Next
Application.DisplayAlerts = True
End Sub

Für die indirekte Lösung habe ich schon meine Infortablle vorbereitet mit 3 Spalten: Namen, _
Tabelle und Zelle. Die Einträge unter Namen beziehen sich jeweils auf die Tabelle und _ Zellenangaben in der gleichen Zeile. und nun die Code für die Namenbenennung:

Sub NamenReparatur()
Dim i As Integer
Dim NumNamen As Integer
Worksheets("Infortabelle").Activate
NumNamen = ActiveSheet.UsedRange.Rows.Count
Const sSourcePath As String = "D:\Dateien\test"
Dim fso As Object, oFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Application.DisplayAlerts = False
For Each oFile In fso.GetFolder(sSourcePath).Files
If LCase(Right(oFile.Name, 5)) = ".xlsm" Then
Application.Workbooks.Open (oFile.Path)
For i = 2 To NumNamen
Worksheets(Sheets("Infortabelle").Cells(i, 2).Value).Activate
ActiveSheet.Range(Sheets("Infortabelle").Cells(i, 3).Value).Name = Sheets("Infortabelle").Cells( _
_
_
_
i, 1).Value
Next i
End If
Next
Application.DisplayAlerts = True
End 

Sub
Vielen Dank, viele Grüße
Dingdang

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen aller Arbeitsmappe in einem Ordner ändern
24.10.2013 13:16:58
fcs
Hallo Dingdang,
eigentlich sollte dein 1. Makro (direkt) funktionieren.
Grundvoraussetzung ist dabei, dass die Tabellenblätter im Muster und in den Dateien im Verzeichnis identische Tabellenblattnamen haben.
Außerdem sollte man nur die sichtbaren Namen erstellen und die Dateien jeweils nach dem Andern/Hinzufügen der Namen speichern und wieder schließen.
mfg
Franz

AW: angepasstes Makro
24.10.2013 13:18:25
fcs
Hallo Dingdang,
hier noch das leicht modifizierte Makro.
Gruß
Franz
Sub Copy_All_Defined_Names()
Dim objName As Name
Dim wkbMuster As Workbook, wkbZiel As Workbook
Const sSourcePath As String = "D:\Test\Übersetzen" '"D:\Dateien\test" '
Dim fso As Object, oFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Application.DisplayAlerts = False
Set wkbMuster = ActiveWorkbook 'Workbooks("Mustermappe.xlsm"
For Each oFile In fso.GetFolder(sSourcePath).Files
If LCase(Right(oFile.Name, 5)) = ".xlsm" Then
Set wkbZiel = Application.Workbooks.Open(oFile.Path)
For Each objName In wkbMuster.Names
If objName.Visible = True Then
wkbZiel.Names.Add Name:=objName.Name, RefersTo:=objName.RefersTo
End If
Debug.Print objName.Name & " - Refersto"; objName.RefersToLocal
Next objName
wkbZiel.Close savechanges:=True
End If
Next
Application.DisplayAlerts = True
End Sub

Anzeige
AW: angepasstes Makro
24.10.2013 13:47:13
Dingdang
hi Franz,
danke für deinen Makro. Das ist echt super! Das mit dem sichtbaren Namen hatte ich nicht gedacht. Jetzt funktionierts wunderbar. Freue mich sehr.
Viele Grüße Dingdang

60 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige