AW: Speichern in Datei eines Unterordners
01.07.2021 23:03:01
Yal
Hallo Bastian,
ja, es erfordert ein minimum an Wisssen, um das gesamt zu verstehen.
W ist eine Variable.
Jede Variable hat einen Typ. W ist auf dem Typ Workbook "dimensioniert" (diese Begriff existiert nicht, hilft aber den "Dim" zu erklären)
Also W kann jede Wert annehmen, solang diese Wert ein Workbook darstellt (eigentlich die Adresse vom Workbook. Diese sieht man nie, wird aber stets verwendet, um den gewünschten Workbook anzusprechen).
Danach geht es in Schleifen über die Auflistung alle Workbooks. Auflistungen haben immer einen "s" am Ende. Workbooks ist die Auflistung alle einzelne Workbook, also alle in Excel geöffnete Arbeitsmappen, seien Sie als Datei gespeichert oder noch nicht.
Diese Workbook sind Objekte. Objekte haben Eigenschaften. In dem Fall "Name". Diese Eigenschaften sind auch Variablen. Nur nicht lose Variable, sondern an einem Objekt gebunden. Name von Workbook 1 ist nicht Name von Workbook 2.
In dem Fall ist Name vom Typ String. Daher kann man auf einem String ein Replace machen.
Anschliessend Debug.Print: das Ergebnis des Gesamtes wird in der Direkt-Fenster (Ansicht, Direkt-Fenster oder Strg+g) herausgegeben.
Da dieses Coding nichts bewirkt, ausser Ergebnisse im Direkt-Fenster auszugeben, kannst Du ruhig laufen lassen und sehen, was dabei rauskommt.
Es gibt den Name des in der Schleife adressierte Workbook und das Ergebnis nach zwei Ersetzen auf dem Namen des Workbook (genetiv sollte ein s bekommen, sört aber ide Erklärung, weil da nicht die Auflistung gemeint ist).
Copy paste über der Zwischenablage: genau wie Zwenn vor kurzem in einem guten Beitrag erklärt hat: Programmieren bedeutet dem Computer sagen, was er zu tun hat. Aber er kann es nur auf seinem Art machen. Also wird die Lösung nicht "wie ein Mensch es gemacht hätte" sondern "wie ein Computer es nur machen kann".
Du muss daher lernen, wie ein Computer zu denken. Aber das lernt man am besten bei Programmieren (Genau wie schwimmen lernen und Wasser zusammengehören).
Werte, die hier gelesen und dort übergeben werden, werden über Variablen "transportiert". Zwischenablage ist nur für der Mensch, der vor dem Computer sitzt (Zwischenablage ist eigentlich auch eine Variable, aber eine komplizierte.)
Folgende Code macht das gleich wie vorher, nur das man die Anzahl von Workbook in der Auflistung Workbooks ermittelt (Eigenschaft "Count" von Objekt Workbooks) und in Schleife von 1 bis Anzahl die einzelnen Workbook aufruft.
da ich festgestellt habe, dass nicht nur xlsx sonder auch xlsm und xls geben kann, mache ich den Replace mit eine Schleife über aufgelisteten Werte.
Im Schrittmodus kannst Du sehen, wie bei jedem Durchlauf der Schleife der Inahlt der Variable WName sich ändert (oder nicht).
Sub Test2()
Dim i As Integer
Dim S
Dim WName As String
Const cFesteTeil = "Probe_"
For i = 1 To Workbooks.Count
WName = Workbooks(i).Name
For Each S In Array(cFesteTeil, ".xlsx", ".xlsm", ".xls")
WName = Replace(WName, S, "")
Next
Debug.Print Workbooks(i).Name, WName
Next
End Sub
VG
Yal