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

DieseArbmappe Daten aus anderDatei holen

DieseArbmappe Daten aus anderDatei holen
08.11.2021 19:46:21
uwehinku
Hallo, es handelt sich um VBA
mein Problem:
ich befinde mich in "DieseArbeitsmappe"
Hier habe ich die Datei "Blanko-Controlling ........... " aufgerufen und tätige hier Eingaben über zwei Textboxen.
1x ProjektNr
1x Formular
Mein Problem:
ich habe die ProjektNr eingeben z.B.1234
nun möchte ich von hier auf die Datei "Projekte" zugreifen, um den Text aus dieser Tabelle über "SumIf" zu holen
Leider geht er von hier nicht in die Datei (Tabellenblatt) Projekte
Er soll sich nämlich die eingegebenen ProjektNr (Spalte "A4:A" & Zeile) den entsprechenden Text für diese ProjektNr, der in Spalte "B4:B" & Zeile steht, heraus suchen.
Aus beiden bildet er dann den entsprechenden Pfad, um immer in diesen, entsprechend die umbenannte Datei, abspeichern
Entweder habe ich ein Gedankenfehler oder kann er dass in "DieseArbeitsmappe" gar nicht
Könnte mir jemand helfen?
Gruß
Uwe

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
08.11.2021 19:57:49
{Boris}
Hi Uwe,
das hat mit "DieseArbeitsmappe" nix zu tun. Wahrscheinlich liegt der Fehler in der korrekten Referenzierung zur 2. Mappe (Projekte) und deren Blätter.
Wie immer: Ohne Deinen Code zu kennen geht nix.
VG, Boris
AW: DieseArbmappe Daten aus anderDatei holen
08.11.2021 20:46:42
Yal
Hallo Uwe,
Die "Abholung" von einem Text erfolgt nicht mit SumIf(=SummeWenn) sondern mit VLookup (=SVerweis )
VG
Yal
AW: DieseArbmappe Daten aus anderDatei holen
08.11.2021 21:12:27
{Boris}
Hi Yal,
obwohl Du ja nachweislich der beste "Uwe-Versteher" bist ;-)

Leider geht er von hier nicht in die Datei (Tabellenblatt) Projekte 
Deutet für mich nicht auf die Verwendung einer falschen Excelfunktion hin, sondern auf einen grundsätzlichen Fehler im Code - ich vermute einen klassischen Referenzierungsfehler aus einem Klassenmodul (DieseArbeitsmappe) heraus.
Aufschluss darüber wird aber nur der verwendete Code geben.
Aber soll Uwe erstmal antworten :-)
VG, Boris
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 10:23:33
uwehinku
Hallo Boris,
ich werde einmal auf Deinen "Schuss" gegen Yal eingehen.
Warum lässt man sich zu solch einer Aussage hinreißen?
Schau einmal, in Foren, auch wenn ich neu bin, gehört so etwas nicht hin.
Eifersucht, Konkurrenzkampf oder oder, tut mir leid, ich weiß nicht was das ist, denn ich habe eine Frage gestellt und bekommen dann solch eine Antwort bzw. Yal.
Der Unterschied zwischen fast allen und Yal, ist, er weiß das ich ganz Neu (absoluter Anfänger) und bereits etwas älter bin.
Er erklärt seinen eingegebenen Code, fast alle anderen, schreiben den Code hin und ich muss sehen, wie ich damit klar komme bzw. mir selber erkläre.
Ich bin wirklich verwundert.
Ich weiß nicht, wer Ihr seid, Studenten, Lehrer oder oder, oder vielleicht verdient Ihr Euch damit ein Zubrot.
Ich bin gerade sehr am Überlegen, woher ich mir meine Kenntnis VBA hole, jedenfalls aus den Foren ?
Vielleicht verlasse ich diese Foren und muss sehen wie ich klar komme.
Gruß
Uwe
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 10:30:45
{Boris}
Hi Uwe,
das war doch kein "Schuss" gegen irgendwen - ich habe doch auch extra einen zwinkernden Smiley ;-) hinzugefügt.
Ich weiß halt nur durchs Mitlesen, dass er Dir eben schon öfter geholfen hat - und das ist auch gut so! :-)
Und dass Du Dir hier im Forum weiter VBA-Kenntnisse aneignest, ist auch gut so! Mein Rat ist eben nur, dass Du Dir - zumindest parallel zum Forum - ein paar VBA-Basics aneignest. Da müsste es doch im Internet ein paar kostenlose Tutorials geben.
Zu Deiner aktuellen Frage bleibt meine Bitte: Zeig den bisher von Dir verwendeten Code! :-)
Also - kein Stress bitte :-)
VG, Boris
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 10:46:17
uwehinku
Hallo,
hier mein Code, leider wieder als .doc
https://www.herber.de/bbs/user/149020.doc
nun noch die Datei Projekte, ebenfalls als .xlsm
https://www.herber.de/bbs/user/149021.xlsm
Ich weiß, dass ich das nicht in .doc machen möchte.
Habe das andere leider noch nicht gemacht, daher zeitaufwendig
Ich möchte morgen nämlich in Urlaub
Gruß
Uwe
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 10:57:02
{Boris}
Hi Uwe,
wenn ich das richtig verstehe, hast Du hierfür
Dieser Text, hinter ProjektNrEingabe muss eine Variable werden, die aus Datei Projekte kommt z.B. ProjektNrEingabe „2848“ hat den dort aufgeführten Text.
einen Code, der nicht funktioniert. Magst Du uns den mal zeigen?
VG, Boris
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 11:49:58
uwehinku
Hallo Boris, ich kann Dir keinen Code zeigen, da es keinen gibt.
ich hatte versucht über Summewenn (sumIF) dieses zu holen, funktionierte nicht
lt. Yal geht das nicht sondern über vlookup (SVerweis).
nun muss ich erst suchen, wie das in VBA geht.
In Excel kein Problem für mich.
Gruß
Uwe
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 11:55:58
{Boris}
Hi Uwe,
warum ziehst Du Dir die notwendige Info nicht mit einem ganz normalen (S)VERWEIS in die Mappe? Hat sogar den Vorteil, dass die Quellmappe nicht geöffnet sein muss. So wie ich das sehe, ist die Quellmappe (Projekte) doch "fix"...?
Dann hast Du den notwendigen Wert in Deiner Zielmappe und kannst ihn für die Stringverkettung für Deinen Pfad (Path) verwenden.
VG, Boris
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 12:04:30
uwehinku
Hallo Boris, warum mache ich das nicht, ?
weil ich nicht weiß, wie man das Verzeichnis als Variable in den VBA-Code bekomme
Wenn ich in dem Excel Sheet das könnte, - kein Problem
Gruß
Uwe
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 14:28:09
{Boris}
Hi Uwe,
mein Vorschlag bezog sich nicht auf VBA, sondern auf einen normalen (S)VERWEIS innerhalb der Excelmappe. Denn für den kompletten Pfad fehlt Dir doch nur noch ein Baustein, der irgendwo in einer anderen Datei (Projekte) steht - so habe ich das zumindest verstanden.
Und wenn Du diesen fehlenden Baustein dann in einer Excelzelle stehen hast, kannst Du sehr leicht den Inhalt der Zelle mit dem Rest deines Pfades (in VBA) verketten. Die Kombination aus VBA und Exceloberfläche ist nicht immer die Schlechteste.
Aber offensichtlich habe ich es doch nicht richtig verstanden.
BTW: Ein Satzzeichen reicht völlig aus ;-)
VG, Boris
Anzeige
AW: DieseArbmappe Daten aus anderDatei holen
09.11.2021 15:15:58
uwehinku
Hallo Boris,
ja, Du hast es nicht richtig verstanden.
2840 - BISONTEC - Simulation UR Roboter
2841 - BMW Landshut - Automatisierung Glühgestellbeladung FBS G30G60
2848 - BMW Landshut - Montagelinie für das G60 I-Tafel Oberteil
usw.
das sind meine Projekte aus der Datei "Projekte"
Hier das jeweilige Verzeichnis:
R:\2021_Projekte\2841 - BMW Landshut - Automatisierung Glühgestellbeladung FBS G30G60\1) Projektmanagement (Kst.500)\3) Kaufteile & Anfertigung
Ich ermittle durch die Projekt Eingabe = Variante ProjektNr, in diesem Fall "2841 - " nun fehlt mir der dazu gehörige Text (Variante "ProjektName". in diesem Fall
BMW Landshut - Automatisierung Glühgestellbeladung FBS G30G60. Dieses steht eben in der Datei Projekte.
Nun füge ich ProjektNr - & ProjektName zusammen, sodass es "2841 - BMW Landshut - Automatisierung Glühgestellbeladung FBS G30G60" ergibt und ein Teil des Verzeichnisses wird: R:\2021_Projekte\2841 - BMW Landshut - Automatisierung Glühgestellbeladung FBS G30G60\1) Projektmanagement (Kst.500)\3) Kaufteile & Anfertigung\. Dieses ist nun das Verzeichnis Path, in dem dann die Datei: Path & ProjektNr&" - " & Formular & ".xlsm" gespeichert wird.
Gruß
Uwe
Anzeige
Dann bleibt es doch dabei...
09.11.2021 16:04:43
{Boris}
Hi Uwe,
...dass Du Dir den "Projektnamen" mittels SVERWEIS über die vorhandene Projektnummer aus der Datei auslesen kannst.
Das kannst Du a) direkt im Code mit WorksheetFunction.VLookup machen, oder aber auch b) mittels ganz normalem SVERWEIS in einem Tabellenblatt. In dieser Ergebniszelle steht ja dann Dein gewünschter Projektname - und den kannst Du dann für die Pfadverkettung verwenden. Variante b) gehört dann zu meiner getroffenen Aussage: Die Kombination aus VBA und Exceloberfläche ist nicht immer die Schlechteste.

VG, Boris
es ist nur sportlich gemeint
09.11.2021 10:50:51
Yal
Hallo Uwe,
jetzt bin ich derjenige, der Boris im Schutz nehmen muss ;-)
Ich kenne tatsächlich keinen der mitstreitenden "Helfer", aber im Laufe der Zeit bekommt man einen Bild, wer wie tickt. Ich habe mit keinem Ärger. Und mit Boris gewiss nicht. Auch wenn Hajo zum n-te mal seine Standard-Textbaustein postet, versuche ich ruhig zu bleiben. Gelingt mir auch nicht immer.
Aber Du hast recht, es gibt eine gewisse "Konkurrenz" aber ich nehme diese eher sportlich an. Es wird nicht so viel angestachelt als unter Gleichgesinnten ;-)
Meine Antwort traf nicht die Frage: richtig. Dann bekomme ich von Boris einen Augenswinker, weil Boris auch entdeckt hat, wie ich ticke. Alles ok.
Lass dich nicht entmutigen. Jede Kulturkreis hat sein eigene Umgangsformen. Wir haben hier, trotz der Anonymität, ein relativ gepflegte Umgang miteinander. Wenn jemand daneben liegt, wird er auch ermahnt.
Aber kommen wir zurück zu dem eigentlichen Problem: ich habe nicht so richtig verstanden, was bei dir nicht funktioniert wie es sollte. Kannst Du das normal ausführen?
VG
Yal
Anzeige
AW: es ist nur sportlich gemeint
09.11.2021 11:56:25
uwehinku
Hallo Yal,
ich möchte nicht weiter darauf eingehen und finde es sicherlich gut, wenn es so ist.
Dann würde auch ich es unterstützen, da auch ich eigentlich ein Typ bin der ebenfalls so tickt.
Nun zu meinem Problem:
Kannst Du bitte bei Boris hineinschauen, da habe ich geantwortet.
Opa ist z.Zt. leider frustriert, las mich aber nicht unterkriegen, da ich sehr Ehrgeizig bin (Sternzeichen Jungfrau)
Es ist mein erstes VBA Projekt und dann, typisch ich, gleich sowas.
Gruß
Uwe
AW: es ist nur sportlich gemeint
09.11.2021 12:36:40
uwehinku
Hallo Boris, hallo Yal,
ich habe es mit VLoopUp geschafft
Nun habe ich eine Frage zu "If Dir(Path) "" Then" was heißt das?
ich interpretiere es so: wenn Directory "Path" nicht leer ist, dann
Leider ist es nicht leer, aber er führt es nicht aus.
Gruß
Uwe
Anzeige
AW: es ist nur sportlich gemeint
09.11.2021 12:56:48
Daniel
Hi
Das heißt:
Wenn die Kombination aus Pfad und Dateiname, welche in der Variablen "Pfad" hinterlegt ist und die im Dateinamen auch die Joker * und ? enthalten darf, vorhanden ist, dann..
Dh um zu prüfen, ob ein bestimmtes Verzeichnis nicht leer ist muss Pfad = "C:\Verzeichnis\*" sein.
Gruß Daniel
AW: es ist nur sportlich gemeint
09.11.2021 15:18:15
uwehinku
Hallo Daniel,
ich Danke Dir, ich kapitto.
Danke
Gruß
Uwe
AW: es ist nur sportlich gemeint
09.11.2021 14:36:16
Yal
Hallo Uwe,
nächste Stufe: die Verwendung von externen Library.
VBA liefert die Basis-Werkzeuge. Kompliziertere oder nicht oft verwendete Werkzeuge werden in separaten Library abgelegt. So auch das gut strukturierte FileSystemObject, das in "Microsoft Scripting Runtime" zu haben ist.
Library anbinden: "Extras", "Verweise...", Hacken bei "Microsoft Scripting Runtime" setzen
Jetzt hast Du zusätzliche Werkzeuge zur Verfügung. Gehe auf dem Objekt-Katalog (Ansicht, Objekt-Katalog oder F2) und schaue Dir den Dropdown, wo "<Alle Bibliotheken>" steht. Darin gibt es jetzt einen "Scripting" Eintrag. Darunter verschiedenen Klassen wie "Drive" und "Drives", "File" und "Files", "Folder" und "Folders", usw.
Dann kann folgendes Coding funktionieren:

Private Sub Workbook_Open()
Dim Path, Filename As String, ProjektNr, ProjektNrEingabe As Variant, Formular As Variant
Dim ProjektName As String
Dim Zeile As Integer
jump1:
If ActiveWorkbook.Name  "Blanko-Controlling-Bestellformular.xlsm" Then Exit Sub
' Abfrage welches Projekt ?
ProjektNr = InputBox("Bitte die Projekt-Nr. eintragen ohne ""P-"" > z.B. 2848 B 3>>> das ist neu
If Not Datei_öffnen(ProjektNrEingabe) Then GoTo jump1
ActiveWindow.Zoom = 68
Range("B3") = ProjektNr
Range("F13").Select
End Sub
Private Function Datei_öffnen(ProjektNrEingabe As String) As Boolean
'Unter Anbindung (Extras, Verweise...) von "Microsoft Scripting Runtime"
Dim Fso As New Scripting.FileSystemObject 'Der Präfix Scripting ist nicht notwendig. Nur zur Sichtbarkeit
Dim oOrdner As Scripting.Folder
Dim oDatei As Scripting.File
Dim Dateiname As String
Const Pfad0 = "R:\2021_Projekte\"
Const Pfad1 = " - BMW Landshut - Montagelinie für das G60 I-Tafel Oberteil\"
Const Pfad2 = "1) Projektmanagement (Kst.500)\"
Const Pfad3 = "3) Kaufteile & Anfertigung\"
'wenn Pfad nicht vorhanden, dann Fehler, dann weitergehen
On Error Resume Next
Set oOrdner = Fso.GetFolder(Pfad0 & ProjektNrEingabe & Pfad1)
'wenn Verzeichnis nicht existiert --> herstellen
If oOrdner Is Nothing Then
Fso.CreateFolder (Pfad0 & ProjektNrEingabe & Pfad1 & Pfad2 & Pfad3)
End If
'jetzt sollte das Verzzeichnis existieren
Set oOrdner = Fso.GetFolder(Pfad0 & ProjektNrEingabe & Pfad1 & Pfad2 & Pfad3)
'da wir jetzt nicht mehr wissen, ob Verzeichnis selber herstellt oder nicht, Datei prüfen
Dateiname = ProjektNrEingabe & " - " & Formular & ".xlsm"
Set oDatei = Fso.GetFile(oOrdner.Path & "\" & Dateiname)
If Not oDatei Is Nothing Then
MsgBox "Die Datei existiert bereits. Starte nochmals mit der ProjektNr-Eingabe"
Datei_öffnen = False 'Rückmeldung
Else
ThisWorkbook.SaveAs Filename:=Path & ProjektNrEingabe & " - " & Formular & ".xlsm"
MsgBox "Die Datei wurde umbenannt. Weiter mit der Datei" & ProjektNrEingabe & " - " & Formular & ".xlsm"
Datei_öffnen = True 'Rückmeldung
''   Call Reset
End If
'Sauberer Abgang
Set oOrdner = Nothing
Set oDatei = Nothing
End Function
Was habe ich darin gemacht:
Ich habe die Behandlung der Datei in einer Function abgelagert. So bleibt der Haupthandlungstrang schlank. Diese Function, genau wie eine Excel-Formel nimmt Parameter an und gibt eine Wert zurück (=Ergebnis, in dem Fall einen Boolean). So wird es im Hauptstrang aufgerufen und die Rückgabewert direkt getestet. Nicht in einer Variable gespeichert, weil wir sonst nichts damit machen.
In der Function selbst wird der Pfad getestet (Werte, die sich nicht ändern kann man als Konstanten definieren). Man instanziere erstmal das Objekt FileSystemObject. Das erfolgt bereit bei der Deklaration mit dem Zusatz "New" (die Präfixe "Scripting" sind übrigens überflüssig, aber liefern hier zuerst mehr Klarheit). Daneben zwei Objekt-Variable oOrdner und oDatei, die solang sie nicht "gesetzt" (="Set") nur "Nothing" sind.
Dann verwenden wir die Funktion der Bibliothek Scripting, genauer gesagt, die Methode des Objekts FileSystemObject (siehe Objekt-Katalog, um zu sehen, welche Objekt welche Methode hat, oder nach Tippen von "Fso." die Kombi Strg+Leertaste), um ein Verzeichnis zu holen und setzen. Wenn diese Verzeichnis nicht existiert, verursacht es eine Fehler. Darum setzen wir davor einen Fehlertoleranz:
On Error Resume Next
Wenn ein Fehler auftritt, mache einfach weiter (mit der nächsten Anweisung)
Wenn Fehler, bleibt auch oOrdner auf seinem "Nothing". Dann können wir das testen. Wenn nicht, haben wir einen Objekt mit viele Informationen. Lass den Code in Schritt-Modus laufen (F8) beim offenen Lokalfenster (Ansicht, Lokalfenster). Dann sieht man die Objekte und was drin steckt ("+" für Objekt aufklappen)
Wenn Nothing, dann verwendung vom FileSystemObject-Methode "CreateFolder", um die fehlende Verzeichnis zu erzeugen.
Dann holen wir dieses Verzeichnis erneut (in erster Abholung war nur ein Teil davon) und prüfen die Datei. Wir wissen zu dieser Zeitpunkt nicht mehr, ob Verzeichnis da war oder neuhergestellt. Ist auch unwichtig: Vorhandensein der Datei ist auf alle Fälle zu prüfen.
Das gleich: bei Fehler, weiter, bleibt auf Nothing oder hat was drin. Uns reicht zu wissen, ob Nothing oder nicht.
Je nach Fälle die Rückgabewert der Funktion setzen. Die Variable dafür ist der Name der Function selbst. So kann man evaluieren, ob True --> dann nicht oder False (not False = True) dann Jump.
SVerweis in VBA:
alle Excel-Formel sind in VBA abrufbar. Auf Englisch. Wenn unsicher, dann Makro Rekorder anstossen, Formel im Blatt einlegen und VBA-Code anschauen. SVerweis funkioniert dann so (wenn Projektnummer in Spalte A und passenden Projektnamen in Spalte B):
ProjektName = Application.WorksheetFunction.VLookup(ProjektNr, Worksheets("Tabelle1").Range("A1:B200"), 2, false)
Zum Thema von Boris "Basics lernen":
Sehr schwierig. Was sind die "Basics"? Ich glaube, Du hast schon ein grossen Teil der Basics. Video-Tutorials sich reinzuschaufeln, die immer zuerst wiederholen, was Du schon weisst, macht auch kein Spass. Vielleicht für manche spezialen Themen, aber wenn man noch nicht weisst, wie diese Themen heissen, wie will man dann das passende Tutorial finden. Daher einfach im Forum Fragen. Weise darauf, dass es dir darum geht, zu verstehen und lernen. So bekommst eher einen Rezept als ein fertig gekochten Gericht.
Nur eins: keiner kann genau einschätzen, was Du schon weisst und was nicht. Es wird daher immer sowohl zu ausführliche als auch zu knappe Antwort geben. Aber irgendwann kennt Dich jeder und weisst, was Du ungefähr brauchst.
Ich wünsche Dir einen schönen Urlaub.
VG
Yal
AW: es ist nur sportlich gemeint
09.11.2021 15:39:29
uwehinku
Hallo Yal,
man hast Du Dir Mühe gemacht und dann sage ich jetzt noch, nein, so geht das glaube ich nicht
ich denke ich habe mich total falsch ausgedrückt.
Über die VLoopUp klappt das Super
Also, würde ich gerne hier abbrechen, da wir so nicht weiter kommen.
Ich antworte nur auf Eure Fragen und verstricke mich immer tiefer.
ich glaube bzw. sehe, dass Du das Verzeichnis : als Constante gesetzt hast. Const Pfad1 = " - BMW Landshut - Montagelinie für das G60 I-Tafel Oberteil\"
Nochmals, das darf keine Constante sein, da mit der neu angegebenen ProjektNr sich dieses Verzeichnis Pfad1 mit ändern muss, sonst legt er mir alle umbenannten Dateien hier hinein und das darf nicht sein.
Daher muss es eine Variable sein, die dann immer zur ProjektNr passt, denn dort muss er dann, meine umbenannte Datei ablegen.
Sorry, dass ich mich so sch..... ausgedrückt habe.
Lasst uns bitte aufhören, durch Deinen Hinweis "VLoopUp" habe ich ja geschafft, was ich eigentlich wollte.
Nochmals ganz herzlich Dank für Eure Mühe.
Aber in den ganzen Schreiben lag die Lösung.
Danke nochmals,
Gruß
Uwe
AW: es ist nur sportlich gemeint
09.11.2021 15:41:18
uwehinku
Nun habe ich ein schlechtes Gewissen
Danke nochmals
Gruß
Uwe
Lieber verbringe ich meine Zeit so, ...
09.11.2021 15:49:31
Yal
... als vor dem Fernsehen.
Kreuzworträtsel, Hackeln oder Gartner sind auch nicht, was mich antreibt :-)
Ach so...
09.11.2021 15:46:02
Yal
Hallo Uwe,
Jetzt dass ich die Worddatei schliesse, entdecke ich wo den SVerweis reinkommen soll.
Anstatt Konstante Pfad1 ein Variable Projektname verwenden. Diese mit dem VLookup von voher befüllen.

Private Function Datei_öffnen(ProjektNrEingabe As String) As Boolean
'Unter Anbindung (Extras, Verweise...) von "Microsoft Scripting Runtime"
Dim Fso As New Scripting.FileSystemObject 'Der Präfix Scripting ist nicht notwendig. Nur zur Sichtbarkeit
Dim oOrdner As Scripting.Folder
Dim oDatei As Scripting.File
Dim Dateiname As String
Dim Projektname As String
Const Pfad0 = "R:\2021_Projekte\"
Const Pfad2 = "1) Projektmanagement (Kst.500)\"
Const Pfad3 = "3) Kaufteile & Anfertigung\"
'Projektname mit SVerweis abholen
Projektname = Application.WorksheetFunction.VLookup(ProjektNrEingabe, Worksheets("Tabelle1").Range("A:B"), 2, False)
'wenn Pfad nicht vorhanden, dann Fehler, dann weitergehen
On Error Resume Next
Set oOrdner = Fso.GetFolder(Pfad0 & ProjektNrEingabe & " - " & Projektname)
'wenn Verzeichnis nicht existiert --> herstellen
If oOrdner Is Nothing Then
Fso.CreateFolder (Pfad0 & ProjektNrEingabe & " - " & Projektname & Pfad2 & Pfad3)
End If
'jetzt sollte das Verzzeichnis existieren
Set oOrdner = Fso.GetFolder(Pfad0 & ProjektNrEingabe & Pfad1 & Pfad2 & Pfad3)
'da wir jetzt nicht mehr wissen, ob Verzeichnis selber herstellt oder nicht, Datei prüfen
Dateiname = ProjektNrEingabe & " - " & Formular & ".xlsm"
Set oDatei = Fso.GetFile(oOrdner.Path & "\" & Dateiname)
If Not oDatei Is Nothing Then
MsgBox "Die Datei existiert bereits. Starte nochmals mit der ProjektNr-Eingabe"
Datei_öffnen = False 'Rückmeldung
Else
ThisWorkbook.SaveAs Filename:=Path & ProjektNrEingabe & " - " & Formular & ".xlsm"
MsgBox "Die Datei wurde umbenannt. Weiter mit der Datei" & ProjektNrEingabe & " - " & Formular & ".xlsm"
Datei_öffnen = True 'Rückmeldung
''   Call Reset
End If
'Sauberer Abgang
Set oOrdner = Nothing
Set oDatei = Nothing
End Function
Sicherer wäre mit einer Schleife auf die Unterordner von "2021_Projekte" zu gehen, so kommt es nicht zu einem Problem, falls irgendjemand sich vertippt hat:
Dafür kann man eine Function derfinieren:

Private Function SubFolder_prüfen(ProjektNr As String) As String
Dim Fso As New FileSystemObject
Dim F As Folder
Const Pfad0 = "R:\2021_Projekte\"
For Each F In Fso.GetFolder(Pfad0).SubFolders
If InStr(1, F.Name, ProjektNr) Then
SubFolder_prüfen = F.Path
Exit Function 'Beschleuniger: Wenn gefunden, den Rest sparen
End If
Next
End Function
Diese wird vor
Set oOrdner = Fso.GetFolder(Pfad0 & ProjektNrEingabe & " - " & Projektname)
verwendet. Falls ein Verzeichnis gefunden wird, kann man auch ggü die vom SVerweis zurückgegebene Wert abgleichen und meckern, Falls nicht gleich ;-)
VG
Yal
AW: Ach so...
09.11.2021 19:58:10
uwehinku
Hallo Yal,
mein Code finde ich funktioniert und ich verstehe den Code.
Deinen Code habe ich probiert, eigentlich nicht verstanden und er funktioniert nicht, wie ich es möchte.
Was mache ich also, da ich im Moment in Zeitdruck bin.
Ich will mit dem Auto nach Tunesien und muss mich jetzt erst einmal um die Reise kümmern.
Ab Morgen werde ich erst einmal den Laptop bis Montag abschalten.
Dann versuche ich es nochmals.
Erst einmal recht herzlichen Dank und bleibe gesund
Danke
Gruß
Uwe

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige