MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 13.09.2017, 13:01   #1
Abderos
Neuer Benutzer
Neuer Benutzer
Verwirrt VBA - Wie kann ich ein Sheet kopieren wenn Ziel in einem Dynamischen Pfad liegt?

Hallo zusammen.

erstmal Danke für die viele hilfe die Ihr bisher geleistet habt.

Leider konnte ich trotz langen suchen nichts finden was mein Problem behebt.

Problemstellung:
Ich lasse über VBA eine Ordnerstrucktur erstellen die immer gleich ist aber als obersten Ordner immer den Namen des Kunden hat. Die Namen kommen aus der Range A1 und werden nacheinander abgearbeitet so weit wie halt welche eingetragen sind. Dies funktioniert wunderbar. Auch das erstellen einer neuen Ecxel Datei in einem Unterorner funktioniert sollange sie "nur erstellt" wird.
Es ist aber wichtig das in die Datei Werte eingetragen werden, Standartwerte die immer gleich sind. Das einfachste ist denke ich mir wenn man eine vorhandene Datei in einem festen Ordner in den eben erstellten unterorner kopiert. Leider geht dies nicht so wie ich das möchte.

Code:
Code:

Sub OrdnerAnlegen()
    Dim FSO As Object, strKundenName As String, Zelle As Range
    Const cstPfad As String = "E:Test"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    With ActiveSheet
        strKundenName = .Range("A1")
        If Not FSO.FolderExists(cstPfad & strKundenName) Then MkDir cstPfad & strKundenName
        For Each Zelle In .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
            If Not FSO.FolderExists(cstPfad & strKundenName & "/" & Zelle) Then
                MkDir cstPfad & strKundenName & "/" & Zelle
                MkDir cstPfad & strKundenName & "/" & Zelle & "/AD"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Dokumentationen"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Driver"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Manuels"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/AP´s"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Devices"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Firewall"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/LAN"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Printer"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Router"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Server"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Switch"
                MkDir cstPfad & strKundenName & "/" & Zelle & "/Remote Desktop"
            End If

            Dim wkbNeu As Workbook
                Set wkbNeu = Workbooks.Add
                wkbNeu.SaveAs cstPfad & strKundenName & "/" & Zelle & "/Netzwerk/Netzwerk.xlsx"
ActiveWorkbook.Close
                

        Next Zelle
    End With
End Sub
Dieser Code erstellt eine leere Datei mit dem angegebenen Namen.
Ich glaube das Problem liegt einfach darin das ich es nicht hin bekomme die Feste "Quelle" in die eben erstellte "sich bei jedem Kunden veränderte" Odernerstrucktur einzubinden.

Zum besseren Vorstellen:
E:/Test/Kundenordner/ABC/Netzwerk <<< Mit VBA erstellt hier soll die Datei hin
E:/Test/Kundenordner/XYZ/Netzwerk <<< Mit VBA erstellt hier soll die Datei hin

Ich hoffe Ihr könnt mir helfen.
Abderos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 06:56   #2
Abderos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Ergänzung

Hallo nochmal,

scheint nicht so einfach zu gehen. Oder?
Ich habe mir noch was überlegt was auch gehen würde, leider bekomme ich aber auch das nicht hin.

In "Tabelle1" (A2:A999) werden ja vorher die Namen ausgelesen. Kann man sich das beim Kopieren der Datei zu nutze machen? Wenn Ja, wie kann ich das machen?
Meine Kenntnisse sind leider nicht so groß im Bereich VBA.

Habe hier einen Code gefunden der eigentlich gut ausgesehen hat.... Leider geht er aber nicht, bricht ab mit dem Fehler

Fehler beim Kompilieren:
Kostanter Ausdruck erforderlich

Der Fehler wird in der Zeile mit dem Ziel markiert. Ich weiß zwar das das Problem jetzt die Variable in der Pfadangeabe ist, ich weiß aber nicht wie ich dieses Problem beheben kann.

Code:

    Dim rngRange As Range
    Dim sDir$

    'Bereich
    Set rngRange = Tabelle1.Range("A2:A999")
    'Pfad Quelle
    Const sPathQuelle$ = "E:TesttmpVorlage.xlsx"
    'Pfad Ziel
    Const sPathZiel$ = "E:" & rngRange.Value & "Netzwerk"

    For Each rngRange In rngRange.Cells
        If rngRange.Value <> "" Then
        sDir = Dir$(sPathQuelle & rngRange.Value & "Netzwerk.xlsx", vbNormal)
        If sDir <> "" Then
            FileCopy sPathQuelle & sDir, sPathZiel & sDir
        End If
    End If
    Next rngRange
Ich hoffe Ihr könnt mir helfen.
Abderos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 07:35   #3
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,
Code:

Const sPathZiel$ = "E:" & rngRange.Value & "Netzwerk"
Du kannst einer Konstanten keine Variablen zuweisen.

PS:

Zitat:

Der Fehler wird in der Zeile mit dem Ziel markiert.

Solche Ortsangaben bringen wenig. Bitte die Zeile, die als fehlerhaft markiert wird, in die Frage kopieren.

__________________

Gruß
Ralf

Geändert von drambeldier (14.09.2017 um 07:41 Uhr). Grund: PS
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 07:40   #4
Abderos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hi.

Ja, das habe ich auch mitbekommen. Muss ja aber einen Weg geben den Pfad anhand der Einträge in A2:A999 (Weil das ist der Teil des Zielpfades der sich verändert) zu ermitteln und dann die Datei im entsprechenden Ordner abzulegen.
Abderos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 07:43   #5
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Wenn's mit einer Konstanten nicht klappt, was macht man dann?

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 07:53   #6
Abderos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von drambeldier Beitrag anzeigen

Wenn's mit einer Konstanten nicht klappt, was macht man dann?

Man nimmt eine Variable????
Ich hab keine Ahnung. Habe mit VBA erst angefangen und muss noch viel lernen meine ich.
Abderos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 07:57   #7
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Zitat:

Man nimmt eine Variable????

Ehmt. Wie in allen Programmiersprachen ;-)

Zur Fehlersuche: zweifelhafte Variablen mit
Code:

Debug.Print zweifelhafteVariable
im Direktbereich zeigen. Oder Haltepunkte setzen, Werte mit Hovern anschauen.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.09.2017, 08:41   #8
Abderos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Jeck

Ohman....
Vielen Dank, das hat wirklich viel geholfen.
Hab es hin bekommen.
Danke Danke Danke.

hihi. Manchmal hilft einem auch so ein Komentar.

Fals einer ein Ähnliches Problem haben sollte, hier noch die Lösung.

Code:

            Dim varPfad As String
            Dim qFile As String
            Dim fcopy As Object
            qFile = "Vorlage.xlsx"
            Const sPathQuelle = "E:Testtmp"
            varPfad = cstPfad & strKundenName & "/" & Zelle & "/Netzwerk"
            'Pfad zur Quelle
            Set fcopy = CreateObject("Scripting.FileSystemObject")
            fcopy.copyfile sPathQuelle & qFile, varPfad & qFile, False
Vieln Dank nochmal, Ihr seid wirklich alle ein große hilfe.
Abderos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.