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

Kopieren und speichern über VBA

Kopieren und speichern über VBA
16.08.2017 09:09:56
Tom
Hallo Ihr Experten,
ich habe noch ein "kleines" Problem. Ich möchte gerne einen Inhalt aus einer Datei (Mappe1) in eine andere Datei (Mappe2) kopieren.
Dazu mein Code:
Sub Kopieren_speichern()
' Kopieren_speichern Makro
Range("A2:A4").Select
Selection.Copy
Windows("Mappe2").Activate
Range("A3").Select
ActiveSheet.Paste
Windows("Mappe1").Activate
Range("B2").Select
End Sub
Manchmal werden die Daten aber auch aus Mappe3 in Mappe2 kopiert.
Ist es möglich den Dateinamen im Code so anzupassen, dass er sich ändert/anpasst, je nachdem in welcher Datei der Code eingefügt wird? Ich möchte gerne den obenstehenden Code dann in Mappe3 einfügen ohne im Code Änderungen vornehmen zu müssen, zwecks Fehleranfälligkeit etc.
Und gibt es eine Möglichkeit die Datei anschließend auf dem Desktop zu speichern unabhängig welcher Benutzer den Code verwendet?
Danke Euch und beste Grüße
Tom

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren und speichern über VBA
16.08.2017 11:06:51
fcs
Hallo Tom,
die momentan aktive Arbeitsmappe kannst du im Code als ActiveWorkbook ansprechen.
Die Datei in der das Makro gespeichert ist als ThisWorkbook.
Wenn der Name "Mappe2" für die 2. Arbeitsmappe nicht konstant ist, dann muss man sich hier etwas einfallen lassen. Wenn es sich um eine neu angelegte Arbeitsmappe handelt, dann sollte man die vom Makro mit anlegen lassen. Siehe weitere Variante.
Es gibt verschieden Umgebungsvariablen, die VBA vom Betriebssystem abrufen kann.
Für das Desktop-Verzeichnis ist dies das Verzeichnis in der Umgebungsvariablen "Userprofile" verfügbar.
Gruß
Franz
Sub Kopieren_speichern()
' Kopieren_speichern Makro
Dim wkbAktiv As Workbook
Set wkbAktiv = ActiveWorkbook 'momentan aktive Arbeitsmappe
Range("A2:A4").Select
Selection.Copy
Windows("Mappe2").Activate
Range("A3").Select
ActiveSheet.Paste
wkbAktiv.Activate
Range("B2").Select
End Sub
Sub Kopieren_speichern_Variante()
' Kopieren_speichern Makro
' ThisWorkbook = Arbeitsmappe in der das Makro gespeichert ist
Range("A2:A4").Select
Selection.Copy
Windows("Mappe2").Activate
Range("A3").Select
ActiveSheet.Paste
ThisWorkbook.Activate
Range("B2").Select
End Sub
Sub Speichern_auf_Desktop()
' Makro1 Makro
Dim strPfad As String, strDatei As String
With Application
strPfad = VBA.Environ("Userprofile") & .PathSeparator & "Desktop" & .PathSeparator
End With
strDatei = "MeineDatei " & Format(Now, "YYYY-MM-DD") & ".xlsm"
'Datei mit Makros speichern
Application.DisplayAlerts = False 'schon vorhandene Datei wird ohne Rückfrage überschrieben
ActiveWorkbook.SaveAs Filename:=strPfad & strDatei, FileFormat:=52, CreateBackup:=False, _
addtomru:=True '52 = xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
End Sub
Sub Kopieren_und_Speichern()
' Kopieren_speichern Makro
' ThisWorkbook = Arbeitsmappe in der das Makro gespeichert ist
Dim wkbAktiv As Workbook, wkbNeu As Workbook
Dim wksAktiv As Worksheet
Dim strPfad As String, strDatei As String
Set wkbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
'neue Mappe mit 1 Tabellenblatt erstellen
Set wkbNeu = Application.Workbooks.Add(Template:=xlWBATWorksheet) 'Template ggf. anpassen
wksAktiv.Range("A2:A4").Copy Destination:=wkbNeu.Worksheets(1).Range("A3")
wkbAktiv.Activate
'Neue Datei mit Makros auf dem Desktop speichern
Application.DisplayAlerts = False 'schon vorhandene Datei wird ohne Rückfrage überschrieben
With Application
strPfad = VBA.Environ("Userprofile") & .PathSeparator & "Desktop" & .PathSeparator
End With
strDatei = "MeineKopie " & Format(Now, "YYYY-MM-DD") & ".xlsm"
wkbNeu.SaveAs Filename:=strPfad & strDatei, FileFormat:=52, CreateBackup:=False, _
addtomru:=True '51 = xlOpenXMLWorkbook,  52 = xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
wkbNeu.Close savechanges:=True
End Sub

Anzeige
AW: Kopieren und speichern über VBA
16.08.2017 17:12:43
Tom
Hallo Franz,
klappt einmal mehr hervorragend!! :)
Vielen Dank und beste Grüße
Stefan

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige