Ordner = MkDir "variabler Ordnername" moeglich wegen spaeterer Ansprache?

  • Excel

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von kuenstlerin152.

    Ordner = MkDir "variabler Ordnername" moeglich wegen spaeterer Ansprache?

    Hallo,

    bin neu hier und auch noch ein ziemlicher Anfaenger, was VB betrifft. Ich habe folgenden Code:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 6 Then
    If Target.Row = 5 Then
    Target.Offset(1, 0).Value = Now()

    subname = Target.Value
    subname = Right(subname, (Len(subname) - 1))

    MkDir ("Q:\2012\Projecten\P" + subname)

    ActiveWorkbook.SaveAs Filename:= _
    ("Q:\2012\Projecten\P" + subname) _
    , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False, FileFormat:=xlNormal

    End If
    End If
    End Sub

    Mein Problem ist jetzt, dass ich die Datei, die ich erstelle (gleicher Name wie Ordner) auch gleich in den neu erstellten Ordner legen moechte. Ich weiss aber nicht, wie ich den Ordner nun ansprechen kann. Hab schon sowas versucht:

    folder = MkDir ("Q:\2012\Projecten\P" + subname)
    ActiveWorkbook.SaveAs Filename:= ("Q:\2012\Projecten\" + folder + "\" + "P" + subname) ...

    aber das funktioniert irgendwie nicht.

    Kann mir da vielleicht jemand bitte helfen?
    Danke!

    Andrea :)


    Edit by Dodo:
    -> Topic verschoben

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dodo“ ()

    Herzlich wilkommen im Forum Andrea.

    Ist das VBA?

    In Visual Basic könntest Du das so machen als Beispiel:

    Visual Basic-Quellcode

    1. Imports System.IO


    Visual Basic-Quellcode

    1. Public Ordner_Datei_Name As String = "Daten" '<- gleicher Name für Ordner und Datei
    2. Public DeinOrdner As String = Path.Combine("c:\", Ordner_Datei_Name) '<- kompletter OrdnerPfad
    3. Public DeineDatei As String = Path.Combine(DeinOrdner, Ordner_Datei_Name) '<- kompletter Dateipfad


    Visual Basic-Quellcode

    1. Public Sub erstelle_Verzeichnisse()
    2. If IO.Directory.Exists(DeinOrdner) = False Then
    3. IO.Directory.CreateDirectory(DeinOrdner)
    4. End If
    5. End Sub


    ActiveWorkbook.SaveAs Filename = DeineDatei

    mfg OnkelR
    @OnkelR²:

    Das was du schreibst ist .Net, TE arbeitet aber mit VB6.

    Wenn der Foldername gleich dem Dateinamen ist, mach es einfach so wie du oben bereits gemacht hast:

    Visual Basic-Quellcode

    1. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    2. If Target.Column = 6 Then
    3. If Target.Row = 5 Then
    4. Target.Offset(1, 0).Value = Now()
    5. subname = Target.Value
    6. subname = Right(subname, (Len(subname) - 1))
    7. MkDir ("Q:\2012\Projecten\P" + subname)
    8. ActiveWorkbook.SaveAs Filename:= _
    9. ("Q:\2012\Projecten\P" + subname + "\" + subname) _
    10. , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    11. CreateBackup:=False, FileFormat:=xlNormal
    12. End If
    13. End If
    14. End Sub


    Nur eine Frage weil du Anfänger bist.
    Willst du lernen VB zum Programmieren? Dann würde ich dir gleich .Net (Visual Basic 2010 Express zB) empfehlen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Wenn du noch Anfänger in VB bist, möchte ich dir eins raten:

    Vergiss VB6 sofort wieder!

    VB6 ist tot. Arbeite stattdessen lieber mit VB.net. Ein paar Vorteile:

    - Komplett objektorientiert
    - Wird im Gegensatz zu VB6 noch entwickelt
    - Größere Community
    - Pornoröse, kostenlose IDE
    - Größerer Funktionsumfang (bzw. viele Funktionen vereinfacht)

    um nur ein paar zu nennen.
    Hi,

    erstmal danke fuer die schnellen Antworten.

    @OnkelR: Deine Version klappt leider nicht. Grund hat dir fichz genannt. Bekomme damit leider nur Kompilierungsfehlermeldungen.

    @fichz: An deinen Ansatz hatte ich auch schon gedacht, nur mit nem zusaetzlichen P dazwischen, damit der Dateiname stimmt:

    ActiveWorkbook.SaveAs Filename:= _
    ("Q:\2012\Projecten\P" + subname + "\" + "P" + subname) _
    , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False, FileFormat:=xlNormal
    Leider bekomme ich da die Fehlermeldung no. 75 (Zugangsfehler im Pfad oder so - hab die dutch Version, deswegen kann ich nur ungefaehr uebersetzen). Das funktioniert also nicht. Deswegen habe ich ja gedacht, dass es vielleicht die Moeglichkeit gibt, den Ordner als festen Namen zu deklarieren mit:

    folder = MkDir("Q:\2012\Projecten\P" + subname)

    um ihn dann spaeter als folder aufzurufen statt diesem p+subname. Was nun? ?(

    Und um auf eure Frage zu kommen, ob ich VB lernen will: Nein eigentlich nicht. Ich muss fuer meine Firma nur ein schon exisitierendes Makro anpassen (was bisher halt leider nur teils passiert ist). Unsere eigentlichen Programmierungen sind in einer anderen Sprache ;)

    Danke!

    Andrea
    Der Teil des Codes sieht jetzt so aus:

    subname = Target.Value
    subname = Right(subname, (Len(subname) - 1))

    folder = "Q:\2012\Projecten\P" & subname
    MkDir folder


    ActiveWorkbook.SaveAs Filename:= _
    (folder + "\P" + subname) _
    , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False, FileFormat:=xlNormal

    Es kommt aber immer noch die Fehlermeldung No. 75! Sorry! :thumbdown:

    Ich muss dazu sagen, dass der Ordner problemlos erstellt wird, auch in der vorherigen Version. VB hat scheinbar nur mit der Zusammenstellung
    (folder + "\P" + subname) beim erstellen der Datei Probleme!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kuenstlerin152“ ()

    Der Pfad + Ordnername ist

    folder = "Q:\2012\Projecten\P" & subname

    Mein Dateiname soll identisch sein mit dem Ordnernamen, also ebenfalls

    "P" + subname

    Deswegen in der Konstellation mit dem definierten Pfad+Ordner:

    ActiveWorkbook.SaveAs Filename:=(folder + "\P" + subname)

    Das klappt aber nicht! 8|
    Für Excel 2007 und 2010:

    Visual Basic-Quellcode

    1. ActiveWorkbook.SaveAs Filename:=folder & "\P" & subname & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    Für ältere Versionen:

    Visual Basic-Quellcode

    1. ActiveWorkbook.SaveAs Filename:=folder & "\P" & subname & ".xls", FileFormat:=xlWorkbookNormal
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Kommt der Fehler vielleicht gar nicht beim SaveAs, sondern beim MkDir?
    Vielleicht, weil das Verzeichnis bereits existiert?

    Visual Basic-Quellcode

    1. If Dir(folder, vbDirectory) = "" Then MkDir folder
    Error 75 ist jedenfalls "Path/File access error"
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --