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

Arbeitmappe kopieren und umbenennen

Arbeitmappe kopieren und umbenennen
Markus
Hallo Zusammen,
bin ein VBA Neuling und such jetzt schon 2 Tage im Netz nach einer Lösung habe allerdings noch keinen vergleichbaren Lösungsansatz entdeckt. Ich hoffe Ihr könnt mir weiterhelfen, zuerst mal meinen Ausgangspunkt. Als erstens habe ich eine Arbeitsmappe (Namen) welche in Tabelle1 ca. 350 Namen enthält.(in Spalte A). Zweitens habe ich eine weitere Arbeitsmappe (Kundendaten) welche ich als Vorlage nutzen möchte. Ich benötige wenn überhaupt möglich ein Makro welches nach einem Click auf eine Befehlsschaltfläche überprüft ob in einem vorgegebenen Verzeichnis eine Arbeitsmappe existiert welche nach den 350 Namen benannt ist. Wenn nicht dann soll die Arbeitsmappe Kundendaten kopiert werden und unter dem Namen in dem Verzeichnis abgespeichert werden. Sollte die Arbeitsmappe schon vorhanden sein soll nichts passieren. Sollte in Zukunft ein Name hinzukommen möchte ich einfach durch Klick auf die Befehlsschaltfläche prüfen ob dieser schon angelegt ist wenn nicht dann soll die Vorlage kopiert werden und der Name als Arbeitsmappen-Name verwendet werden. Für Eure Hilfe im Voraus schon recht herzlichen Dank!!!
Gruß Markus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Arbeitmappe kopieren und umbenennen
26.10.2010 01:25:49
fcs
Hallo Markus,
nachfolgend Makros zur Ausführung der gewünschten Funktionen.
Dateinamen und Verzeichnisse bitte anpassen.
Gruß
Franz
Option Explicit
Dim bKundevorhanden As Boolean, sKunde As String
Private Const sVorlage As String = "C:\Users\Public\Test\Kundendaten.xls" 'Vorlagedatei
Private Const sVerzeichnis As String = "C:\Users\Public\Test\Daten"  'Verzeichnis Kundendateien
Sub CheckAlleNamen()
'Prüfung aller Namen in Tabelle1 in Spalte A ab Zeile 2
Dim Zeile As Long, wks As Worksheet
Set wks = ActiveWorkbook.Worksheets("Tabelle1")
With wks
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
sKunde = .Cells(Zeile, 1)
If CheckDateiName(sKunde, Zeile) = True Then
Call KundenDatei
End If
Next
End With
End Sub
Sub CheckEinzelName()
'Name in aktiver Zelle prüfen
With ActiveCell
If .Column = 1 And .Row > 1 Then
sKunde = ActiveCell.Value
If CheckDateiName(sKunde) = True Then
If KundenDatei = True Then
If bKundevorhanden = True Then
MsgBox "Für Kundenname """ & sKunde & """ existiert bereits eine Kundendatei."
Else
MsgBox "Kundendatei für """ & sKunde & """ wurde angelegt."
End If
End If
End If
Else
MsgBox "Vor Start des Makros muss ein Kundenname in Spalte A selektiert sein."
End If
End With
End Sub
Private Function KundenDatei() As Boolean
Dim sDateiname As String
On Error GoTo Fehler
'prüfen, ob Kundendatei vorhanden
If VBA.Dir(sVerzeichnis & "\" & sKunde & ".xls*") = "" Then
'Dateiname der Kundendatei
sDateiname = sVerzeichnis & "\" & sKunde & Mid(sVorlage, InStrRev(sVorlage, "."))
'Vorlage kopieren mit neuem Namen
VBA.FileCopy Source:=sVorlage, Destination:=sDateiname
bKundevorhanden = False
Else
bKundevorhanden = True
End If
Fehler:
With Err
Select Case .Number
Case 0
KundenDatei = True
Case Else
KundenDatei = False
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Problem bei Datei für Kunde: " & sKunde
Err.Clear
End Select
End With
End Function
Function CheckDateiName(sText As String, Optional ByVal lZeile As Long = 0) As Boolean
Dim iIndex As Long, arrZeichen, iZeichen As Long
If sText = "" Then 'Leerstring als Dateiname nicht zulässig
CheckDateiName = False
Exit Function
End If
'unzulässige Zeichen in Dateinamen
arrZeichen = Array(":", "|", "/", "\", "", "[", "]", "?", "*")
CheckDateiName = True
For iZeichen = 1 To Len(sText)
For iIndex = LBound(arrZeichen) To UBound(arrZeichen)
If Mid(sText, iZeichen, 1) = arrZeichen(iIndex) Then
CheckDateiName = False
MsgBox "Name """ & sKunde & """" & IIf(lZeile > 0, " in Zeile " & lZeile, "") _
& " ist nicht zulässig als Dateiname." & vbLf _
& "Folgende Zeichen sind nicht zulässig:   | : / \   [ ] ? * " _
& vbLf & "Kundendatei für """ & sKunde & """ wurde nichtangelegt."
Exit Function
End If
Next
Next
End Function

Anzeige
AW: Arbeitmappe kopieren und umbenennen
26.10.2010 21:33:46
Markus
Hallo Franz,
erstmal vielen Dank für Deine Mühe ich hab den Code eingefügt und Verzeichnis usw. geändert, jetzt bekomme ich immer eine Fehlermeldung "Fehler Nr.: 70" "Zugriff verweigert".
Hast Du eine Idee an was das liegen kann?
Gruß Markus
AW: Arbeitmappe kopieren und umbenennen
28.10.2010 07:43:09
fcs
Hallo Markus,
Meldung kann 2 Ursachen haben
1. Du hast mit dem Usernamen unter dem du angemeldet bist keine Schreibrechte oder sonstigen Berechtigungen für das Verzeichnis in das Daten kopiert werden sollen.
2. Eine der Dateien, die kopiert werden sollen, ist geöffnet. So muss z.B. die Musterdatei für die Kundendateien während der Makroausführung geschlossen sein.
Gruß
Franz
Anzeige
AW: Arbeitmappe kopieren und umbenennen
28.10.2010 19:07:26
Markus
Hallo Franz,
Vielen Dank für Deine Hilfe, es lag tatsächlich an Punkt 2, fuktioniert jetzt tadellos!
Gruß Markus

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige