Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro ergänzen fummel seit 2 Tagen

Makro ergänzen fummel seit 2 Tagen
21.11.2006 10:22:39
Walter
Guten Morgen,
ich habe ein Makro (überForum erhalten) für mich etwas angepaßt, funktioniert.
Jetzt wollte ich aber ein zusätzliches Verzeichnis erstellen, funktioniert bis zu der Zeile :
With ActiveWorkbook
Application.DisplayAlerts = False ' Sicherheitsabfrage unterdrücken
.SaveAs strPath & OrdNam4 vielleicht habe ich die Erstellung des zusätl. Verzeichnisses an Falscher Stelle, hab aber rumgefummelt und bisher keinen Erfolg.
Das Verzeichnis ist/sind die ersten 8 Buchstaben der erstellenten Datei.
Das Verzeichnis darf nur erstellt werden, wenn die Neu erstellte Mappe da ist.
Hoffentlich war ich deutlich genug?

Private Sub CommandButton1_Click()
Dim strPath As String
Dim objSh As Worksheet
Dim objWb As Workbook
Dim blnExist As Boolean, blnClose As Boolean
Dim aktWb As Workbook
Set aktWb = ActiveWorkbook
Dim OrdNam1 As String
Dim OrdNam2 As String
Dim OrdNam3 As String
Dim OrdNam4 As String
Dim wwww
strPath = "C:\wwww\aa\"                ' Anpassen!
Set objSh = ActiveSheet
'------- akt. Sheet Name in Zellen setzen ----------
Dim vn As String
vn = ActiveSheet.Name
ActiveSheet.Cells(1, 8).Value = vn
'----------- akt. Sheet Name mit Datum -------------
Dim dn As String
dn = ActiveSheet.Name & "   Umlaufbestand vom  " & Cells(4, 1) & ".xls"
ActiveSheet.Cells(2, 8).Value = dn
'    Range("C3").Select
OrdNam1 = "C:\wwww\"
OrdNam2 = "C:\wwww\" & ActiveSheet.Cells(1, 8).Value
OrdNam3 = ActiveSheet.Cells(1, 8).Value                 'Center Name allein
'für die Erstellung des zusätzlichen Verzeichnisses
OrdNam4 = ActiveSheet.Cells(2, 8).Value                 'Sheet Name allein
If Dir(strPath & OrdNam4) <> "" Then
blnExist = True
' die Zeilen habe ich mal reingesetzt !!!!!!!!!!!!!!!!!!
'---------- ist Center Verzeichnis vorhanden ? ----------------
If Dir(OrdNam2, 16) <> "" Then
MsgBox "IHR Center-Verzeichnis:   " & " "" " & OrdNam3 & " "" " _
& "         ist vorhanden !" & Chr(13) _
& Chr(13) & "Datei:                     " & _
"            "" " & OrdNam4 & " ""         " & Chr(13) & Chr(13) & _
"                        wird jetzt gespeichert !", vbInformation, " Hinweis !"
Application.DisplayAlerts = False                       ' Sicherheitsabfrage unterdrücken
ActiveWorkbook.SaveAs Filename:=(OrdNam2 & "\" & OrdNam4), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
Else
MsgBox "IHR Center-Verzeichnis:   " & Chr(13) & Chr(13) & _
" "" " & OrdNam3 & " ""            " & Chr(13) & Chr(13) _
& "ist NICHT vorhanden, wird jetzt erstellt !       " & Chr(13) & _
Chr(13) & "Anschließend wird die Datei:   " & Chr(13) & Chr(13) & _
" "" " & OrdNam4 & " ""            " & _
Chr(13) & Chr(13) & "gespeichert ! ", vbInformation, " Hinweis !"
MkDir OrdNam2
Application.DisplayAlerts = False                       ' Sicherheitsabfrage unterdrücken
ActiveWorkbook.SaveAs Filename:=(OrdNam2 & "\" & OrdNam4), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
End If
'---------------  bis hier ------------------------------------------
If MsgBox("Die Datei" & vbLf & vbLf & vbTab & Chr(34) & strPath & _
OrdNam4 & Chr(34) & _
Space(15) & vbLf & vbLf & "ist bereits vorhanden!" & vbLf & vbLf & _
"Soll die Datei ersetzt werden!", 36, "Frage") = 7 Then
blnClose = True
GoTo ErrExit
End If
End If
For Each objWb In Workbooks
If objWb.FullName = strPath & OrdNam4 Then
If MsgBox("Die Datei" & vbLf & vbLf & vbTab & Chr(34) & objWb.FullName & Chr(34) & _
Space(15) & vbLf & vbLf & "ist zur Zeit geöffnet!" & vbLf & vbLf & _
"Um fortzufahren, muss die Datei geschlossen werden!", 33, "Frage") = 2 Then
blnClose = True
GoTo ErrExit
End If
ActiveWorkbook.Save                 'neu gesetzt
objWb.Close False               'alte Mappe
Exit For
End If
Next
objSh.Copy
With ActiveWorkbook
Application.DisplayAlerts = False                 ' Sicherheitsabfrage unterdrücken
.SaveAs strPath & OrdNam4              '<<<<<<<<<<< hier bleibt stehen
'aktWb.Activate           'Ursprung vom kopieren  'alte Datei, aktivieren
'.Close True
End With
ErrExit:
If Err.Number = 0 Then
If blnClose Then
MsgBox "Der Vorgang wurde Abgebrochen!  ", 64, "Hinweis"
Exit Sub                'ich eingesetzt bei NEIN 13-7-06
Else
MsgBox "Die Datei" & vbLf & vbLf & vbTab & strPath & _
OrdNam4 & Space(15) & _
vbLf & vbLf & "wurde erfolgreich " & IIf(blnExist, "ersetzt", "erstellt") & "!", 64, "Hinweis"
End If
Else
'MsgBox "Beim speichern der Datei" & vbLf & vbLf & vbTab & strPath & objSh.Name & ".xls" & Space(15) & _
'    vbLf & vbLf & "trat folgender Fehler auf" & vbLf & vbLf & Err.Description & Space(15), 48, "Fehler"
Err.Clear
End If
Set objSh = Nothing
'- hier die erstellte Datei rein -----------
Dim aaw
'MsgBox ActiveWorkbook.Name
Set aaw = ActiveWorkbook
aktWb.Activate
With ActiveWorkbook
If .Name Like "Umlauf.xls" Then
''' MsgBox "Es wird vom Orginal kopiert, wird nichts gemacht !    "
Else
With ActiveWorkbook
If Not .Name Like "Center*" Then
MsgBox "Die Datei " & vbLf & vbLf & .Name & vbLf & vbLf & _
"wird jetzt geschlossen, diese können Sie später löschen !    "
strPath = aktWb.Path & "\" & aktWb.Name
aktWb.Close
Kill strPath
Else
MsgBox "Die Datei " & vbLf & vbLf & .Name & vbLf & vbLf & _
"hat einen CENTER-Namen, wird nicht gelöscht !   "
End If
End With
End If
End With
aaw.Activate
End Sub

Ich würde mich freuen, wenn jemand sich durch mein Makro durchwüllen könnte...
mfg Walter MB

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

Betreff
Datum
Anwender
Anzeige
AW: Makro ergänzen fummel seit 2 Tagen
21.11.2006 22:54:12
fcs
Hallo Walter,
habe mich mal durch deinen Code gekämpft.
Nachdem ich den Code optisch aufbereitet und dann auch mal getetst.
Das Problem hat folgende Ursache:
Nach der SaveAs-Aktion hat die Datei den Namen OrdName4 in irgendeinem Verzeichnis.
Jetzt kopierst du das aktive Blatt in der Datei in eine neue Arbeitsmappe. Anschließend versuchst du diese Arbeitsmappe in einem anderen Verzeichnis ebenfalls unter dem Namen OrdName4 zu speichern. Das funktiert nicht, da man in Excel nicht gleichzeitig zwei Dateien mit dem gleichen Namen öffnen kann, auch wenn sie in verschiedenen Verzeichnissen gespeichert werden.
Lösung ist etwas schwierig.
Ich meine du solltest die Kopie des aktiven Blattes zuerst erstellen, unter dem gewünschten Namen Speichern und Schließen.
Danach arbeitest das SaveAs der aktiven Arbeitsmappe ab, mit Überprüfen/Erstellen der Verzeichnisse etc.
Um die Kopie des Blattes wieder zu öffnen, muss du die aktive Datei unter einem Dummynamen mit saveAs Speichern, die Blattkopie wieder öffnen und zum Schluss als letzte Aktion die Dummy-Kopie wieder Killen.
Gruß
Franz
Gruss
Franz
Anzeige
Bitte mal schauen...
22.11.2006 09:24:38
Walter
Guten Morgen Franz,
erst mal Danke das Du versucht hast, mein Makro zu verstehen, manchmal habe ich auch Probleme aber wenn das Makro "Sauber" läuft, ist mir egal.
Habe das unten aufgeführte Makro so eingebunden, muß jetzt NUR noch hinkriegen das die Neue Mappe in das Verzeichnis Neu gespeichert wird, das klappt noch nicht.
If Dir(strPath & OrdNam4) "" Then
blnExist = True
Call ausführenn ' ab hier Makro, wie gehabt...
--------------------------------------------------

Sub ausführen()
Dim strFolder As String
strFolder = "C:\wwww\aa\Center00"
If Dir(strFolder, vbDirectory) <> "" Then
MsgBox "Das Verzeichnis ist bereits vorhanden !"
Exit Sub
Else
If MsgBox("Das Verzeichnis existiert nicht, " & _
vbLf & "neu anlegen ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
End If
MkDir strFolder
End Sub

----------------------------------------------------------------
mfg walter
Anzeige
Habe hinbekommen so -)
22.11.2006 15:47:19
Walter
Hallo Franz,
habe so hinbekommen, läuft, so wie ich es brauch.
If Dir(strPath & OrdNam4) "" Then
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If Dir(strPathCe, vbDirectory) "" Then
MsgBox "Verzeichnis CENTER ist vorhanden"
ActiveWorkbook.SaveAs Filename:=(strPathCe & "\" & OrdNam4), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
Exit Sub
Else
MsgBox "Verzeichnis CENTER ist NICHT vorhanden"
MkDir strPathCe
'Application.DisplayAlerts = False ' Sicherheitsabfrage unterdrücken
ActiveWorkbook.SaveAs Filename:=(strPathCe & "\" & OrdNam4), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
Exit Sub
End If
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
blnExist = True
mfg Walter MB
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige