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

Speichern unter Variablem Pfad

Forumthread: Speichern unter Variablem Pfad

Speichern unter Variablem Pfad
13.11.2002 19:31:55
Ivan
Hallo und einen schönen Abend an alle Excel'User

Ich erstelle täglich einige Datenblätter über 5 verschiedene Produktsorten. Mittlerweile möchte ich diese Datenblätter immer vom Aktivem Tabellenblatt aus Speichern über ein Schaltbutton. Den Dateinamen nehme ich mir von zelle a1, beim Abspeichern möchte ich nicht das die Formeln mitkopiert werden(nur Absolute Werte).

Bishierher funktioniert alles sehr gut ! (Alles brockenweise von Herbers Archiv gesammelt echt super das was er zur verfügung stellt)


Mein Prob:
Ich arbeite bei erstellen von Datenblätter nach Auftragsnummern
und Artbezeichnungen Beispiel ED0601100100 (ED=Art 0601100100=NR)
Es gibt verschiedene Artbezeichnungen wie ED , AK , DA ...

Ich möchte nicht beim Abspeichern gefragt werden in welchen Pfad ich speichern will es sollte Automatisch Passieren. Also mein gedanke das Prog erkennt die ersten 2 zeichen zB. ED dann soll
in \Eigene Bilder\Neuer Ordner\ED speichern(Bei AK ändert sich der ordner in ...\AK usw.).


Ich verstehe nicht warum er immer fehler1004 erzeugt wenn ich den Pfad wie folgt eingebe: C:\Eigene Dateien\Eigene Bilder\Neuer Ordner

Ich hoffe das es nicht zu lang und verwirrend ausgeführt ist wenn ja Sorry. Bitte tut etwas ausführlich Antworten ich kenn mich nicht sehr gut in VBA aus

Ich Danke jetzt schon an Alle

Mein Code

Sub speichern()
Dim sFile As String, spath As String, wks As Worksheet
spath = Application.DefaultFilePath & "\Eigene Bilder\Neuer Ordner\"
sFile = Range("a1")
For Each wks In Worksheets
With wks.UsedRange
.Value = .Value
End With
Next wks

ActiveSheet.SaveAs spath & sFile & ".xls"

End Sub
Mfg Ivan



Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Speichern unter Variablem Pfad
13.11.2002 19:47:10
RALF
'n abnd,

Du solltest den Speicherpfad erst in einem String zusammenbauen und EINER Variablen zuweisen (s.u.)
versuch folgendes:

Sub speichern()
Dim sFile As String, spath As String, wks As Worksheet
spath = Application.DefaultFilePath & "\Eigene Bilder\Neuer Ordner\"
sFile = Range("a1")
For Each wks In Worksheets
With wks.UsedRange
.Value = .Value
End With
Next wks

' wenn der Dateiname sich z.Bsp. aus dem ersten Blatt ableiten läßt....
select case left(sheets(1).name,2)
case is = "ED"
folder1="ED\"
case is = "AP"
folder1 = "AP\"
'usw.
case else
folder1=""
end select

spath1 = spath & folder1 &sFile & ".xls"
ActiveSheet.SaveAs spath1

end sub


ich hoffe ich habe mich nicht vertippt....:O)
Gruß RALF

Anzeige
Re: Speichern unter Variablem Pfad
13.11.2002 20:31:58
Ivan
Hi Ralf

Schade

Ich habe dein Code eingefügt in mein Modul und Ausprobiert.
Er tut immer noch in den selben ordner wie vorher die Daten Speichern (C:\Eigene Dateien\Eigene Bilder\Neuer Ordner).
Statt zB. C:\Eigene Dateien\Eigene Bilder\Neuer Ordner\AP\"Texteintrag A1".

folder1 war nicht mit Dim bezeichnet nach einigen versuchen habe ich es als String bezeichnet hat wieder nicht geklappt.

Für was steht den die Zeile unten Tabellenblatt1 und ?
select case left(sheets(1).name,2)


ich habe sie auf select case left(sheets(1).name,1) geändert und es ist nichts negatives aufgetaucht.


Aber Trotztdem vielen Dank für deine Mühe!!!

Anzeige
Re: Speichern unter Variablem Pfad
13.11.2002 23:00:18
Mesut
Hi Ivan,
ich habe ein aehnliches Problem mit folgendem Code gelöst.

ChDir "E:\PRIVAT\AKTUELL\Rechnungen" 'zunaechst den Unterordner aktivieren
Dat_Name = CStr(Range("H14")) & " - " & Range("H19") & " - " & Range("A10")
ActiveWorkbook.SaveAs Filename:=Dat_Name
MsgBox ("Die Rechnung wurde erfolgreich kopiert und unter dem Namen " & Dat_Name & " gespeichert !"), vbInformation

hierbei wird der Name der Datei aus drei Zellen ausgelesen und zum Dateinamen zusammengefügt. Dabei wird ein numerischer Wert (hier "H14") vorher in Textwert umgewandelt. Hoffe dir geholfen zu haben.
mfg
Mesut


Anzeige
Re: Gelößt
13.11.2002 23:16:53
Ivan
Hallo alle nochmal

ich hab die Aufgabe gelößt es muß zwar etwas Laufsicherer gemacht werden mit OnError aber die gewünschte funktion ist da.

Etwas Interresiert mich Allerdings sehr!! Der Code verlangt von
mir Großschreibung wie im Code ansonsten erkennt er die Buchstaben nicht an.
Muß man da jetzt Aufwendig mit if die anderen Variationen Abtippen oder????

Jetzt taugs ja für mich ! Ralf sein Vorschlag mit Case hat mich echt weiter gebracht ich habs halt in if umgebaut

Lösung:

in Zeile A9 = Links(A1;2)


Sub speichern()
Dim sFile As String, spath As String, wks As Worksheet
spath = Application.DefaultFilePath & "\Eigene Bilder\Neuer Ordner\"
sFile = Range("a1")
For Each wks In Worksheets
With wks.UsedRange
.Value = .Value
End With
Next wks

' wenn der Dateiname sich z.Bsp. aus dem ersten Blatt ableiten läßt....

If Range("a9") = "ED" Then
folder1 = "ED\"
Else
If Range("a9") = "AK" Then
folder1 = "AK\"
Else
If Range("a9") = "DA" Then
folder1 = "DA\"
Else
If Range("a9") = "DE" Then
folder1 = "DE\"
'usw.
Else
If folder1 = "" Then
MsgBox ("Möglich ist nur ED, AK, DA, DE Rechnungkürzel und Sie müssen Sie Groß Schreiben")
Call ein
Exit Sub
End If
End If
End If
End If
End If
spath1 = spath & folder1 & sFile & ".xls"
ActiveSheet.SaveAs spath1
Call ein
End Sub

'für erneute Speichermöglichkeit weil die Formeln in Absolutwerte umgewandelt werden
Sub ein()
ActiveCell.FormulaR1C1 = "Links(a1;2)"
Range("A9").Select
ActiveCell.FormulaR1C1 = "=LEFT(R[-8]C,2)"

End Sub

Danke nochmal an Ralf

MfG Ivan


Anzeige
Re: Danke Mesut
14.11.2002 00:02:26
Ivan
Ich Probiere es mal morgen aus
Ich meld mich bestimmt nochmal

Guten Abend noch mal an Alle

Ivan

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speichern unter variablem Pfad in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen Pfad auszuwählen und in einer Variablen zu speichern, kannst du den folgenden Code verwenden. Dieser Code ermöglicht es, die Datei unter einem variablen Namen und in einem variablen Pfad zu speichern, basierend auf den Inhalten einer Zelle.

Sub speichern()
    Dim sFile As String, spath As String, folder1 As String, wks As Worksheet
    spath = Application.DefaultFilePath & "\Eigene Bilder\Neuer Ordner\"
    sFile = Range("A1").Value

    ' Bestimme den Speicherordner basierend auf den ersten 2 Zeichen
    Select Case Left(sFile, 2)
        Case "ED"
            folder1 = "ED\"
        Case "AK"
            folder1 = "AK\"
        Case "DA"
            folder1 = "DA\"
        Case Else
            MsgBox "Unbekannte Artbezeichnung. Bitte überprüfen."
            Exit Sub
    End Select

    ' Wandle Formeln in Werte um
    For Each wks In Worksheets
        With wks.UsedRange
            .Value = .Value
        End With
    Next wks

    ' Speichern unter Pfad und Dateinamen aus Zelle
    ActiveSheet.SaveAs spath & folder1 & sFile & ".xls"
End Sub

Häufige Fehler und Lösungen

Fehler 1004: Dieser Fehler tritt häufig auf, wenn der angegebene Pfad nicht korrekt ist. Überprüfe, ob der Ordner existiert und der Pfad richtig angegeben wurde.

Unbekannter Speicherort: Wenn die Datei immer im Standardordner gespeichert wird, stelle sicher, dass die Variable folder1 korrekt gesetzt wird und der Pfad vollständig ist.


Alternative Methoden

Eine alternative Methode ist die Verwendung von ChDir, um den Speicherort zu wechseln, bevor die Datei gespeichert wird. Hier ein Beispiel:

ChDir "C:\Eigene Dateien\Eigene Bilder\Neuer Ordner\"
ActiveWorkbook.SaveAs Filename:=sFile & ".xls"

Damit kannst du den Pfad ändern, bevor das Speichern erfolgt.


Praktische Beispiele

Hier ist ein praktisches Beispiel, um die Funktionalität zu verdeutlichen:

  1. Trage in Zelle A1 den gewünschten Dateinamen ein, z.B. ED_Rechnung.
  2. Stelle sicher, dass der Ordner C:\Eigene Dateien\Eigene Bilder\Neuer Ordner\ED existiert.
  3. Führe das Makro speichern aus, und die Datei wird unter dem angegebenen Pfad gespeichert.

Tipps für Profis

  • Verwende On Error Resume Next, um den Code robuster zu machen, falls ein Fehler auftritt.
  • Du kannst auch eine Benutzerform erstellen, um den Speicherort interaktiv auszuwählen.
  • Denke daran, die Dateiformate zu variieren (z.B. .xlsx statt .xls), je nach Bedarf.

FAQ: Häufige Fragen

1. Wie kann ich einen Pfad aus einer Zelle auswählen? Du kannst den Pfad aus einer Zelle lesen, indem du spath = Range("B1").Value verwendest, bevor du die Datei speicherst.

2. Warum funktioniert mein Code nicht mit Kleinbuchstaben? Excel VBA ist case-sensitiv. Stelle sicher, dass die Buchstaben in den Bedingungen (z.B. If Range("A9") = "ED") in der richtigen Großschreibung angegeben sind.

3. Wie kann ich sicherstellen, dass ich nur absolute Werte speichere? Nutze den Codeblock, der alle Formeln in Werte umwandelt, bevor du die Datei speicherst. Dies hast du bereits im Beispielcode integriert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige