Hallo Mase,
ich muss dich nochmal belästigen. Ich möchte gerne, dass bei keiner Eingabe oder bei Falscheingabe in die InputBox eine Meldung kommt z.B. "Dateiname falsch oder Datei noch nicht angelegt"
Könntest du mir das noch machen?
Danke!
Option Explicit
Dim vRet As Variant
Dim mFso As Object
Const m_sPfad As String = "G:\DATEN\Herstellberichte\" '<----anpassen
Const m_FileExtension As String = ".XLSM" '<---- Dateityp anpassen und in Großbuchstaben angeben
Dim lCalc As Long
Dim lEvent As Long
Dim lStatusbar As Long
Dim lScreen As Long
Sub main()
On Error GoTo FinishErr
'*** Inputbox den gesuchten Dateinamen zu erhalten
vRet = InputBox("Bitte Zeichnungsnummer mit Bindestrich + Maschinennummer eingeben z.B. 12102-027 M118?", "Dateinamenabfrage")
'*** *** Wenn leer dann Sub wortlos verlassen
If vRet = "" Then Exit Sub
'*** speed up
Call TurnOffFunctionality
'*** Ordner durchsuchen
Set mFso = CreateObject("Scripting.FileSystemObject")
Call OrdnerDurchsuchen(mFso.GetFolder(m_sPfad))
FinishErr:
If Err.Number <> 0 Then
MsgBox Err.Number & vbCrLf & Err.Description
End If
'*** Standard speed
Call TurnOnFunctionality
Set mFso = Nothing
End Sub
Sub OrdnerDurchsuchen(ByRef oFolder As Object)
Dim oSubFldr As Object
Dim oFile As Object
'*** Unterordner durchsuchen
For Each oSubFldr In oFolder.SubFolders
Call OrdnerDurchsuchen(oSubFldr)
Next
'*** Dateien in den Unterordner
For Each oFile In oFolder.Files
'*** Wenn Dateintyp stimmt
If UCase(Right(oFile.Name, 5)) = m_FileExtension Then
'*** Wenn Inhalt der Inputbox mit Datei übereinstimmt
If UCase(oFile.Name) = UCase(vRet & m_FileExtension) Then
'*** dann öffne das File
Dim wkb As Excel.Workbook
Set wkb = Application.Workbooks.Add(oFile.Path)
End If
End If
Next
'*** Objektreferenzen entlassen
Set oSubFldr = Nothing
Set oFile = Nothing
Set wkb = Nothing
End Sub
Public Sub TurnOffFunctionality()
With Application
lCalc = .Calculation: .Calculation = xlCalculationManual
lStatusbar = .DisplayStatusBar: .DisplayStatusBar = False
lEvent = .EnableEvents: .EnableEvents = False
lScreen = .ScreenUpdating: .ScreenUpdating = False
End With
End Sub
Public Sub TurnOnFunctionality()
With Application
.Calculation = lCalc
.DisplayStatusBar = lStatusbar
.EnableEvents = lEvent
.ScreenUpdating = lScreen
End With
End Sub
|