Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateinamen im Makro anpassen bei speichern unter

Dateinamen im Makro anpassen bei speichern unter
10.05.2004 16:00:10
Hanno
Hallo Forum,
ich habe folgende Problemstellung:
Ich habe eine Exceldatei (Wartung) in der es ein Tabellenblatt gibt welches eine Tabelle enthält in die Daten mit einem Makro eingetragen werden. Die Daten stehen in einer anderen Exceldatei (Zeiten) welche zum Eintragen der Daten mittels Makro geöffnet wird.
Ablauf:
Datei/Tabelle (Wartung) öffnen. Bestimmte Zelle (in Datei/Tabelle Wartung) markieren und Makro mittels Button aufrufen. Die Datei (Zeiten) mit den Auswahldaten wird geöffnet. Ein Auswahlliste öffnet sich. Es werden Daten ausgewählt und mittels Button übernommen und in die Datei/Tabelle (Wartung) in die markierte Zelle eingetragen. Die Auswahlliste schliesst sich und die Datei/Tabelle (Wartung) wird wieder aktiviert. Dieser Ablauf kann beliegig wiederholt werden. Ist die Bearbeitung fertig und wird die Datei (Wartung) geschlossen schliesst auch automatisch die Datei (Zeiten).
Soweit funzt alles.
Allerding soll nun die Datei Wartung vom Anwender unter einem anderen Namen abgespeichert werden wenn alle Zeiten eingetragen sind. Das soll geschehen a) wenn die Datei/Tabelle (Wartung) geschlossen wird oder b) manuell ausgelöst werden wenn noch weitere Daten einzutragen sind. Das ist soweit erst mal kein Problem. Dazu ist es aber notwendig das Makro anzupassen in welchem die Datei/Tabelle (Wartung dann aber mit neuem Namen) aktiviert wird.
Bei einer weiteren Bearbeitung der Tabelle/Datei (Wartung mit dem neuen Namen) funzt das Makro natürlich nicht mehr weil der Dateinamen noch auf die alte Datei/Tabelle (Wartung) verweist.
Ich hoffe ich konnte die Problematik verständlich rüberbringen.
Gruß Hanno
Anzeige
AW: Dateinamen im Makro anpassen bei speichern unter
10.05.2004 16:09:43
FloGo
Hallo Hanno
Wenn ich deine frage richtig verstanden habe, kannst du ja den Namen der Arbeitsmappe durch folgenen Code ersetzen:
ActiveWorkbook.name
FloGo
AW: Dateinamen im Makro anpassen bei speichern unter
Hanno
Hallo FloGo,
danke erst mal.
Ich kann es zur Zeit nicht probieren, werd das aber auf jeden Fall tun.
Allerdings hab ich bedenken, wenn ich nämlich die Daten aus der nachladenden Datei hole ist doch diese die aktive, oder?
Dann kann ich nicht mehr Bezug auf die neu abgespeicherte nehmen?!?
Gruß
Hanno
Anzeige
AW: Dateinamen im Makro anpassen bei speichern unter
Hanno
Hallo FloGo,
es geht tatsächlich nicht wie Du es vorgeschlagen hast.
Gibt es denn keine Möglichkeit Makros zu ändern per Makro?
Dann könnte man einfach den Dateinamen im Makro durch den Dateinamen
mit welchem die Exceldatei dann abgespeichert wird ersetzen.
Der neue Dateiname wird übrigens aus Zellinhalten ermittelt.
Gruß
Hanno
Anzeige
AW: Dateinamen im Makro anpassen bei speichern unter
PeterW
Hallo Hanno,
lass die Finger von Makros, die andere Makros ändern!!
ActiveWorkbook.Name ist die aktive Datei, ThisWorkbook.Name ist die Datei, in der der Code läuft, mit diesen Hinweisen sollte es gehen.
Bei deinem angegebenen Level "VBA nur mit Recorder" solltest du mal deinen Code posten, vielleicht sieht man dann einen Ansatz.
Gruß
Peter
Anzeige
AW: Dateinamen im Makro anpassen bei speichern unter
Hanno
Hallo Peter,
danke für Deine Antwort.
So ganz unbedarft was Excel Makros betrifft bin ich nicht. Leider passt keiner von den Auswahlbereichen auf mich ;-)
Ich kann auch schon was schreiben bzw. Codes auf meine Bedürfnisse anpassen (wenn es nicht zu komplex ist).
Das mit dem "ThisWorkbook.Name" klingt gut. Das werd ich mal ausprobieren.
Sollte das nicht klappen stell ich mal den Code rein.
Gruß
Hanno
Anzeige
AW: Dateinamen im Makro anpassen bei speichern unter
Hanno
Hallo Peter,
das mit "ThisWorkbook.Name " funzt. Vielen Dank für den Tip.
Gruß
Heinz
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen im Makro anpassen beim Speichern unter


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei (Wartung), in der das Makro laufen soll.
  2. Markiere die Zelle, in die die Daten eingetragen werden sollen.
  3. Starte das Makro über einen Button oder das Menü.
  4. Öffne die Quelldatei (Zeiten), um die erforderlichen Daten auszuwählen.
  5. Wähle die Daten aus der Auswahlliste und übertrage sie in die markierte Zelle der Datei (Wartung).
  6. Schließe die Quelldatei (Zeiten), wenn die Bearbeitung abgeschlossen ist.
  7. Speichere die Datei (Wartung) unter einem neuen Namen. Hierbei ist es wichtig, das Makro anzupassen, um den neuen Dateinamen zu verwenden.

Um den neuen Dateinamen im Makro zu speichern, verwende den folgenden VBA-Code:

Dim neuerName As String
neuerName = ThisWorkbook.Name
' weitere Anpassungen hier...

Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht, nachdem die Datei (Wartung) unter einem neuen Namen gespeichert wurde.

    • Lösung: Stelle sicher, dass Du ThisWorkbook.Name verwendest, um den aktuellen Namen der Arbeitsmappe zu referenzieren. Der Code sollte auf die Arbeitsmappe verweisen, in der das Makro ausgeführt wird, nicht auf die aktive Arbeitsmappe.
  • Problem: Die Quelldatei wird nicht richtig geschlossen oder bleibt geöffnet.

    • Lösung: Füge am Ende des Makros einen Befehl hinzu, um die Quelldatei explizit zu schließen.

Alternative Methoden

Wenn Du Makros vermeiden möchtest, kannst Du auch folgende Alternativen nutzen:

  • Formeln verwenden: Anstatt Daten mit Makros zu übertragen, kannst Du Verknüpfungen zwischen den Dateien erstellen und die Daten über Formeln abrufen.
  • Excel-Add-Ins: Nutze Add-Ins, die speziell für die Datenübertragung zwischen Excel-Dateien entwickelt wurden.

Praktische Beispiele

  1. Datenübertragung mit Makro:

    • Beispielcode zur Übertragung:

      Sub DatenUebertragen()
      Dim wsZiel As Worksheet
      Dim wsQuelle As Worksheet
      Set wsZiel = ThisWorkbook.Sheets("Wartung")
      Set wsQuelle = Workbooks("Zeiten.xlsx").Sheets(1)
      
      wsZiel.Range("A1").Value = wsQuelle.Range("B1").Value
      End Sub
  2. Neuen Dateinamen speichern:

    • Beispielcode zum Speichern bei Schließen:
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      ThisWorkbook.SaveAs Filename:="Neuer_Name.xlsx"
      End Sub

Tipps für Profis

  • Verwende ThisWorkbook anstelle von ActiveWorkbook, um sicherzustellen, dass Du immer auf die Datei zugreifst, in der der Code läuft.
  • Teste Dein Makro in einer Kopie Deiner Daten, bevor Du es in der Produktionsdatei ausführst.
  • Kommentiere Deinen Code, damit Du später leichter nachvollziehen kannst, was jeder Teil des Codes bewirken soll.

FAQ: Häufige Fragen

1. Kann ich den Dateinamen im Makro ändern, nachdem die Datei gespeichert wurde?
Ja, Du kannst den Dateinamen im Makro anpassen, indem Du ThisWorkbook.Name verwendest, um den aktuellen Namen abzurufen.

2. Wie kann ich sicherstellen, dass die Quelldatei geschlossen wird?
Füge am Ende Deines Makros einen Befehl zum Schließen der Quelldatei hinzu, um sicherzustellen, dass sie nicht offen bleibt.

3. Gibt es Risiken beim Ändern von Makros, die andere Makros beeinflussen?
Ja, es ist ratsam, vorsichtig zu sein, da Änderungen an einem Makro Auswirkungen auf andere Makros haben können. Teste alle Änderungen gründlich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige