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

Variabler Speicherort per VBA

Variabler Speicherort per VBA
15.09.2017 08:19:27
Manuela
Hallo liebes Forum,
ich habe mir ein Code zusammengestellt der Super Funktioniert.
Beim Speichern Unter wird mit der Name von "N18" unter den angegebenen pfaden abgespeichert.
Ist es möglich das wenn der Name in "N18" mit "A" anfängt, dass ein anderes Pfad benutzt wird als sonst ?
Das ist der Auslöser Makro

Sub Seichern_Makro()
On Error GoTo Fehler
If MsgBox("Achtung!!!" & vbNewLine & "Excel schließt sich nach dem Speichern, soll fortgefahren  _
werden ?", vbYesNo + vbQuestion, _
"Achtung!") = vbYes Then GoTo Fortfahren Else GoTo EndeMakro
Fortfahren:
Call Speichern_unter_einfach
Call aktivesBlattToPdf
Application.DisplayAlerts = False
ActiveWorkbook.Close 'excel schließen
Application.Quit
Application.DisplayAlerts = True
GoTo EndeMakro
Exit Sub
Fehler:
MsgBox "Fehler !!!" & vbNewLine & "Es wurde keine Kundennummer zugeordnet." & vbNewLine &  _
vbNewLine & _
"Oder die Ordnerpfade stimmen nicht mehr.", vbQuestion, "Achtung!"
EndeMakro:
End Sub

Und dies sind die beiden CALLS
Sub aktivesBlattToPdf()
'Const DateiPfad = "C:\Users\Schindler Holzbau\Google Drive\Markus Schindler\Geschäftlich\ _
Kunden Daten 2017\001Ausgangsrechnungen\PDF-Ausgangsrechnungen\"
Const DateiPfad = "E:\Meine Dokumente\VBA Tom\"
Dim DateiName As String
DateiName = DateiPfad & Range("N18") & ".pdf" 'aus dem Range N18 wird der Name gebildet
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
DateiName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub

Sub Speichern_unter_einfach()
'hiermit wir nur die aktive Tabellenmappe gespeichert
Dim strVerzeichnis As String
Dim varDateiname As Variant
'strVerzeichnis = "C:\Users\Schindler Holzbau\Dropbox\Markus Schindler\Geschäftlich\Kunden  _
Daten 2017\001Ausgangsrechnungen\Originalausgansgsrechnungen\"
strVerzeichnis = "E:\Meine Dokumente\VBA Tom\"
varDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & Range("N18") _
& ".xlsx", _
FileFilter:="Microsoft Excel-Dateien (*.xlsx), *.xlsx") 'aus dem Range N18 wird der  _
Name gebildet
Application.DisplayAlerts = False 'Warnungen und Meldungen Ignorieren
If TypeName(varDateiname) = "String" Then 'Wenn Dateiname angegeben wurde und mit OK bestä _
tigt
ActiveSheet.Copy    'Kopiert nur das aktuelle Blatt in eine neue Mappe
ActiveWorkbook.SaveAs varDateiname 'neue Mappe unter eingegebenenm Namen speichern
ActiveWorkbook.Close 'Neue Mappe wieder schliessen
End If
'''' macht bei Excel 2010 Probleme (Tom)
'Select Case varDateiname
'Case False
'Exit Sub
'Case Else
'ThisWorkbook.SaveAs Filename:=varDateiname
'End Select
Application.DisplayAlerts = True 'Warnungen und Meldungen aktivieren
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Speicherort per VBA
15.09.2017 10:02:46
Nepumuk
Hallo Manuela,
ich war so frei deine Makros ein bisschen zu bereinigen:
Option Explicit

Sub Seichern_Makro()
    On Error GoTo Fehler
    If MsgBox("Achtung!!!" & vbNewLine & "Excel schließt sich nach dem Speichern, " & _
        "soll fortgefahren werden ?", vbYesNo Or vbQuestion, "Achtung!") = vbYes Then
        Call Speichern_unter_einfach
        Call aktivesBlattToPdf
        Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.Quit
        Application.DisplayAlerts = True
    End If
    Exit Sub
    Fehler:
    MsgBox "Fehler !!!" & vbNewLine & "Es wurde keine Kundennummer zugeordnet." & vbNewLine & _
        vbNewLine & "Oder die Ordnerpfade stimmen nicht mehr.", vbQuestion, "Achtung!"
End Sub

Sub Speichern_unter_einfach()
    
    Dim strVerzeichnis As String
    Dim strFilename As String
    Dim varDateiname As Variant
    
    strFilename = Trim$(Range("N18").Value)
    
    If UCase$(Left$(strFilename, 1)) = "A" Then
        strVerzeichnis = "E:\Meine Dokumente\VBA Tom\"
    Else
        strVerzeichnis = "E:\Anderer Ordner\Anderer Unterordner\"
    End If
    
    varDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & strFilename _
        & ".xlsx", FileFilter:="Microsoft Excel-Dateien (*.xlsx), *.xlsx")
    
    If VarType(varDateiname) = vbString Then
        Application.DisplayAlerts = False
        ActiveSheet.Copy
        ActiveWorkbook.Close SaveChanges:=True, Filename:=varDateiname
        Application.DisplayAlerts = True
    End If
End Sub

Sub aktivesBlattToPdf()
    Const DateiPfad = "E:\Meine Dokumente\VBA Tom\"
    Dim DateiName As String
    DateiName = DateiPfad & Range("N18") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub


Gruß
Nepumuk
Anzeige
AW: Variabler Speicherort per VBA
15.09.2017 10:58:27
Manuela
WAUUUU sieht super aus.
Werde es gleich ausprobiren. Vielen vielen dank. Wünsche dir ein schönes Wochenende.
Gruß
AW: Variabler Speicherort per VBA
15.09.2017 11:39:22
Manuela
Hallo Nepumuk,
hmmm interessanter Name :-)
Klappt wunderbar. Wie wird das bei einer PDF realisiert das dies gleich wie bei der xlsx Datei macht ?
Habe es versucht, aber scheint bei einer pdf etwas anders zu sein.
Gruß
Manuela
AW: Variabler Speicherort per VBA
15.09.2017 12:01:26
Nepumuk
Hallo Manuela,
teste mal:
Option Explicit

Public Sub Seichern_Makro()
    Dim strFilename As String, strVerzeichnis As String
    On Error GoTo Fehler
    If MsgBox("Achtung!!!" & vbNewLine & "Excel schließt sich nach dem Speichern, " & _
        "soll fortgefahren werden ?", vbYesNo Or vbQuestion, "Achtung!") = vbYes Then
        
        strFilename = Trim$(Range("N18").Value)
        
        If UCase$(Left$(strFilename, 1)) = "A" Then
            strVerzeichnis = "E:\Meine Dokumente\VBA Tom\"
        Else
            strVerzeichnis = "E:\Anderer Ordner\Anderer Unterordner\"
        End If
        
        strVerzeichnis = strVerzeichnis & strFilename
        
        Call Speichern_unter_einfach(strVerzeichnis)
        Call aktivesBlattToPdf(strVerzeichnis)
        Application.DisplayAlerts = False
        ActiveWorkbook.Close
        Application.Quit
        Application.DisplayAlerts = True
    End If
    Exit Sub
    Fehler:
    MsgBox "Fehler !!!" & vbNewLine & "Es wurde keine Kundennummer zugeordnet." & vbNewLine & _
        vbNewLine & "Oder die Ordnerpfade stimmen nicht mehr.", vbQuestion, "Achtung!"
End Sub

Private Sub Speichern_unter_einfach(ByVal strVerzeichnis As String)
    
    Dim varDateiname As Variant
    
    strVerzeichnis = strVerzeichnis & ".xlsx"
    
    varDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis, _
        FileFilter:="Microsoft Excel-Dateien (*.xlsx), *.xlsx")
    
    If VarType(varDateiname) = vbString Then
        Application.DisplayAlerts = False
        ActiveSheet.Copy
        ActiveWorkbook.Close SaveChanges:=True, Filename:=varDateiname
        Application.DisplayAlerts = True
    End If
End Sub

Private Sub aktivesBlattToPdf(ByVal strVerzeichnis As String)
    strVerzeichnis = strVerzeichnis & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strVerzeichnis, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Gruß
Nepumuk
Anzeige
AW: Variabler Speicherort per VBA
15.09.2017 14:19:39
Manuela
Hallo,
danke noch für deinen tollen schnellen support an einem Freitag Mittag. Leider muss ich dir sagen das der letzte Code nicht funktioniert. Anstatt das Verzeichniss zu wählen, fügt der im Namen das Verzeichniss ein.
Sprich:
Anstatt zu Wählen ob es in
strVerzeichnis = "E:\Meine Dokumente\VBA Tom\a\"
Else
strVerzeichnis = "E:\Meine Dokumente\VBA Tom\"
gespeichert werden soll. Wird "a" & N18 geschrieben und im strVerzeichnis = "E:\Meine Dokumente\VBA Tom\" ´gespeichert.
AW: Variabler Speicherort per VBA
15.09.2017 15:08:54
Nepumuk
Hallo Manuela,
ich habe es gerade nochmal getestet, funktioniert bei mir einwandfrei.
Befindet sich am Ende des Pfades auch sicher ein \ ?
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige