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

Datei öffnen aber ohne

Forumthread: Datei öffnen aber ohne

Datei öffnen aber ohne
05.01.2025 12:19:30
Thomas
Guten Morgen,
ich bin neu hier und wünsche allen gesundes neues Jahr !

Ich habe diese Zeile zum öffnen einer Datei, aufgezeichnet.

Workbooks.Open Filename:= _

"D:\Firma\Lagerlisten\Datenbank Vers. 01.00.xlsm"

mein Problem:
wenn ich eine neuere Datei mit einer neueren Version habe, kann ich diese nicht öffnen.
Was muss ich tun damit immer die neuere Datei also z.B. Vers. 1.01 geladen wird.

mf Thomas

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei öffnen aber ohne
05.01.2025 12:47:58
Piet
Hallo

da gibt es mehrere Lösungen, mir fallen gleich zwei dazu ein. Mal sehen ob es dir weiterhilft.
Ich empfehle den Ordner Pfad oder Pfad & Anfangsname der Datei oben im Modul als Const festzulegen.
Du kannst die letzte Version in einem beliebigen Sheet in einer Zelle speichern, oder per InputBox einlesen.
Es sollte auch noch eine Fehlermeldung für Falscheingaben vorgesehen werden.

mfg Piet

Const Pfad = "D:\Firma\Lagerlisten\Datenbank Vers. "


Sub Workbook_Open()
On Error GoTo Fehler
Version = InputBox("Bitte die Vers. Nr eingeben:", , "01.") 'Version über InputBox laden
Version = Sheets("Deine Tabelle").Range("Deine Zelle") 'Version aus einer Zelle laden
Workbooks.Open Filename:=Pfad & Version & ".xlsm" 'Pfad besser als Const festlegen
Exit Sub
Fehler: MsgBox "Öffnen Error bei Datei:" & vbLf & Pfad & Version & ".xlsm"
End Sub

Anzeige
AW: Datei öffnen aber ohne
05.01.2025 13:09:58
Thomas
Guten Tag Piet,
also ehrlich, das ist für mich etwas zu kompliziert.
Gibt es nicht einfacheres ?
Ich hatte mir vorgestellt, das man im Verzeichnis die letzte Datei sucht, die steht ja meist unten im Explorer.

mf thomas
Das würde immer...
05.01.2025 12:53:48
Case
Moin, :-)

... die jüngste/neueste "*.XLSM - Datei" in einem Ordner öffnen: ;-)

Workbooks.Open "C:\Temp\" & Split(CreateObject("Wscript.Shell").ExEc("cmd /C DIR """ & "C:\Temp\" & "*.xlsm"" /B/O-D").stdout.readall, vbCrLf)(0)


Den Ordner musst du an zwei Stellen im Code anpassen.

Wir machen uns hier "Dir" zunutze.

/B -> Einfaches Format/Ausgabe (ohne Kopfdaten)
/O -> Sortierte Ausgabe der Liste
-D -> Datum/Zeit (ältere zuerst) Ausgabe mit Minus davor kehrt die Reihenfolge um.

Servus
Case
Anzeige
AW: Datei öffnen aber ohne
05.01.2025 15:42:30
Piet
Hallo Kolleegen

vielen Dank für eure Infos, Nein, ich weiss nicht alles. Aber erinnere mich schwach das da mal was war.
DOS sagt mir etwas, ich habe es aber für MS kaum benutzt. Erinnere mich aber ans CPM System von Bondwell.
Das war ein Laptop mit eingebautem Monitor, und 128 KB Speicher für Betriebssystem und freiem RAM Bereich.
Da rödelte die 5 1/4 Zoll Disk ordentlich wenn man ein Word Dokument bearbeiten wollte. Lang lang ists her!

Sprachloser Chef: -> mein Chef musste für einen Kunden ein Programm ändern, und der Ingenieur war in Urlaub.
Sorgenvoll kam er zu mir, wie kriege ich Passwort geschützte Dateien geöffnet?? Ich reichte ihm wortlos meine Disk.
Er war sprachlos das meine Disk -ALLE- Passwortgeschützten Dateien -OHNE- Prüfung öffnete.

Neugierig fragte er was für ein PW Knackprogramm das sei. -> Ich hatte nur drei Byts geändert!!
Den Sprungbefehl zur Passwort Prüfung bei der Z80 CPU durch drei NOP's ersetzt, No Operation!

mfg Piet
Anzeige
AW: Das würde immer...
05.01.2025 13:21:43
thomas
Guten Tag zusammen,
ich habe mir eine Userform erstellt, da ich mehrere Dateien öffnen möchte.
Für die 1. Datei:

Public Sub OptionButton1_Click()

If Me.OptionButton1 = True Then
Me.OptionButton2 = False
Me.OptionButton3 = False
Me.OptionButton4 = False
Unload Me
Workbooks.Open Filename:= _
 "D:\Firma\Lagerlisten\Datenbank Vers. 01.00.xlsm"

End If
End Sub


Wenn es jetzt eine neue Version gibt:
"D:\Firma\Lagerlisten\Datenbank Vers. 01.01.xlsm"
sollte diese geöffnet werden.

mf thomas
Anzeige
AW: Das würde immer...
05.01.2025 13:55:21
Piet
Hallo Thomas

@Case - interessant mit Dir zu arbeiten, damit könnte man auch Ordner + Unterordner auflisten.
Kleines Problem, Dateien mit Umlauten ä, ü, ö werden nicht korrekt angezeigt!
Woran erkenne ich bei deinem Code wieviele Dateien sich in dem Ordner befinden??
Wie kann man den Ordner auf Ordner + Unterordner mit File Len und Save Datum erweitern?
Hast du eine komplette Dir Liste mit allen Erklärungen der Buchstaben und ihrer Funktionen?

@Thomas
ich bin etwas verwundert das du eine UserForm erstellen kannst, dir aber mein Code zu kompliziert ist??
Ich habe deinen Code mal etwas geändert. Siehe unten. Vielleicht hilft dir das ja weiter??
Bei Option Button sollten alle anderen auf Null stehen, wenn z.B. Button1 gedrückt ist.

Die bessere Alternative ist der Code von Case, der findet ja die letzten Dateien, aber ob du den verstehst??
Um ihn dir zu erklären habe ich ihn mal auf meine -Excel Heute Datei- umgeschrieben, kann 4 Dateien auslesen.
Das auslesen der Dateien geschieht über "i" mit (i) am Ende des Codes von Case.

mfg Piet



Public Sub OptionButton1_Click()
Dim Version As String
If Me.OptionButton1 = True Then Version = "01.00.xlsm"
If Me.OptionButton2 = True Then Version = "01.01.xlsm"
If Me.OptionButton3 = True Then Version = "01.02.xlsm"
If Me.OptionButton4 = True Then Version = "01.03.xlsm"
Unload Me
Workbooks.Open Filename:= _
"D:\Firma\Lagerlisten\Datenbank Vers. " & Version
End Sub




Sub Units_auslesen()
On Error Resume Next
For i = 0 To 4 '(i) gibt den Index der Datei an!
MsgBox "E:\Excel Heute\" & Split(CreateObject("Wscript.Shell").ExEc("cmd /C DIR """ & "E:\Excel Heute\" & "*.xls*"" /B/O-D").stdout.readall, vbCrLf)(i)
Next i
End Sub
Anzeige
AW: Teste mal so
05.01.2025 14:35:20
Kuwer
Hallo thomas,

Public Sub OptionButton1_Click()

Dim strDatei As String, strTemp As String
If Me.OptionButton1 = True Then
strTemp = Dir("D:\Firma\Lagerlisten\Datenbank*.xlsm")
Do While Len(strTemp)
strDatei = strTemp
strTemp = Dir
Loop
If Len(strDatei) Then
Unload Me
Workbooks.Open Filename:="D:\Firma\Lagerlisten\" & strDatei
Else
MsgBox "Keine Datei gefunden", vbInformation
End If
End If
End Sub

Gruß, Uwe
Anzeige
Super, nehme das von Case -)
05.01.2025 14:50:37
thomas
Hallo zusammen,
herzlichen an ALLE für die Unterstützung !
Habe das von Case genommen, habe mehrmals mit weiteren Versions-Nummern getestet,
einwandfrei !
Ich wünsche allen noch einen schönen Sonntag !

mf thomas
AW: Das würde immer...
05.01.2025 14:03:17
thomas
Hallo Piet,
erst mal Danke !
Danke das Du so ausführlich beschrieben hast.
Ich werde mir das nachher genauer ansehen und umsetzen.
P.S. Die Userform hat ein Freund erstellt.

Ich melde mich.

mf thomas
Anzeige
@Piet
05.01.2025 14:05:56
emkaes
Hast du eine komplette Dir Liste mit allen Erklärungen der Buchstaben und ihrer Funktionen?

du mußt lediglich im Windows-Terminal dir /? eingeben.

ins windows-terminal kommst du mit cmd, aber das solltest du ohnehin wissen
Du kannst den Inhalt...
05.01.2025 14:33:16
Case
Moin, :-)

... der "Hilfedateien" für "DOS-Befehle" auch so generieren: ;-)

Du hast ein Eingabeaufforderung-Fenster offen und gibst folgendes ein:
DIR/? > C:\Temp\TestDir.txt

Das generiert dir im Ordner "C:\Temp" eine Textdatei mit Inhalt der Hilfedatei zu "Dir".

Oder du lässt es dir direkt in VBA ausgeben: ;-)
Option Explicit

Public Sub Main_Dos()
CreateObject("WScript.Shell").Run "cmd.exe /C DIR/? > C:\Temp\TestDir.txt", 0, True
Workbooks.OpenText "C:\Temp\TestDir.txt"
End Sub

Servus
Case
Anzeige
Für das Problem...
05.01.2025 14:57:24
Case
Moin, :-)

... mit den Umlauten kannst du so vorgehen: ;-)
Option Explicit

Private Declare PtrSafe Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Function ASCIItoANSI(ByVal strTMP As String) As String
Call OemToCharA(strTMP, strTMP)
ASCIItoANSI = strTMP
End Function
Public Sub Los()
Workbooks.Open ASCIItoANSI("C:\Temp\" & Split(CreateObject("Wscript.Shell").Exec("cmd /C DIR """ & "C:\Temp\" & "*.xlsm"" /B/O-D").StdOut.ReadAll, vbCrLf)(0))
End Sub

Mir ist das eigentlich nie aufgefallen, da ich nie auf die Idee gekommen bin Umlaute oder ein"ß" oder, oder... in Datei- bzw. Ordnernamen zu verwenden. ;-)

Fündig wurde ich damals hier: ;-)
https://www.vbarchiv.net/tipps/tipp_490-ansi-zeichensatz-nach-dos-und-umgekehrt.html

Habe früher sehr viel mit DOS (auch und gerade über VBA) gemacht. Z. B. WMIC:
https://learn.microsoft.com/de-de/windows/win32/wmisdk/wmic

Ist heute durch PowerShell praktisch ersetzt. Funktioniert aber noch und ist sehr mächtig. ;-)

Servus
Case
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige