open onder voorwaarde

Status
Niet open voor verdere reacties.

flats

Gebruiker
Lid geworden
7 mei 2015
Berichten
171
Ik probeer een macro juist te krijgen, lukt vrij aardig dank zij jullie hulp met een andere macro.
Bedoeling is dat de macro enkel en alleen toelaat om “machinelijst_draaien” te openen, dat lukt vrij aardig behalve als het bestand bijvoorbeeld “machinelijst_draaien-blabla” gekozen wordt. Blijkbaar laat hij het openen toe van zodra de naam begint met “machinelijst_draaien”
(mijn excuses als ik die vraag al eerder poste, ben nogal vergeetachtig)

Code:
Sub open2()
    '
    ' open2 Macro
    ' De macro is opgenomen op 09/05/2018 door Fernand.
    On Error GoTo Filerr
    machinelijst_draaien = Application.GetOpenFilename(FileFilter:="Excel Files(machinelijst_draaien.xls),.xls", Title:="SELECTEER machinelijst_draaien (bestand)")
    If TypeName(machinelijst_draaien) = "Boolean" Or InStr(1, machinelijst_draaien, "machinelijst_draaien") = 0 Then
        MsgBox "Gestopt omdat u de juiste file niet koos"
    Else
        Workbooks.Open (machinelijst_draaien)
    End If
Filerr:
End Sub
 
Zolang je die Instr functie blijft gebruiken, hou je dat probleem natuurlijk altijd. Instr kijkt of de gevraagde tekst een deel van de naam is. Dus of de gevraagde string ergens voorkomt in de naam. Maakt dan niet uit wat er voor of achter zit. Gooi dat stuk er eens uit.

Of hiermee checken:
Code:
If TypeName(machinelijst_draaien) = "Boolean" Or Not machinelijst_draaien = "machinelijst_draaien.xls" Then
 
Helaas, regel vervangen, nu opent hij de juiste ook niet
Code:
Sub open2()
    '
    ' open2 Macro
    ' De macro is opgenomen op 09/05/2018 door Fernand.
    On Error GoTo Filerr
    machinelijst_draaien = Application.GetOpenFilename(FileFilter:="Excel Files(machinelijst_draaien.xls),.xls", Title:="SELECTEER machinelijst_draaien (bestand)")
    If TypeName(machinelijst_draaien) = "Boolean" Or Not machinelijst_draaien = "machinelijst_draaien.xls" Then
    'If TypeName(machinelijst_draaien) = "Boolean" Or InStr(1, machinelijst_draaien, "machinelijst_draaien") = 0 Then
        MsgBox "Gestopt omdat u de juiste file niet koos"
    Else
        Workbooks.Open (machinelijst_draaien)
    End If
Filerr:
End Sub
 
Hoe staat het met al je andere vragen die nog open staan?
Je kunt ze vinden als je op je eigen naam klikt.
 
Goed dat je het zegt, ik ga kijken om ze af te sluiten, als er nog iets niet klopt kan ik de vraag altijd opnieuw lanceren he.
 
done

Done, heb een en ander afgesloten, alleen deze hier niet, daar zit nog een probleem
 
Code:
Sub open2()
dim bestand
bestand = Application.GetOpenFilename("Excel Files(*.xls),*.xls", , "SELECTEER machinelijst_draaien (bestand)")
 if bestand <> false Then
    if not split(bestand, "\")(ubound(split(bestand, "\"))) = "machinelijst_draaien.xls" then
      MsgBox "Gestopt omdat u de juiste file niet koos"
    Else
        Workbooks.Open bestand
    End If
 end if
End Sub
 
:thumb:Schitterend Harry, werkt zo te zien perfect, hoef er zelfs geen goto filerr ofzo aan toe te voegen.:thumb:

Wie weet heeft iemand anders er ook iets aan he

Super de luxe, ik heb de macro ook kunnen integreren in een ander gedeelte, die nu dus ook werkt zoals gewenst (op een klein detailke na)

Code:
Sub refresh1()
    '
    ' refresh1 Macro
    Dim bestand
bestand = Application.GetOpenFilename("Excel Files(*.xls),*.xls", , "SELECTEER machinelijst_draaien (bestand)")
 If bestand <> False Then
    If Not Split(bestand, "\")(UBound(Split(bestand, "\"))) = "machinelijst_draaien.xls" Then
      MsgBox "Gestopt omdat u de juiste file niet koos"
    Else
        Workbooks.Open bestand
        Range("B3:F101").Select
        Selection.Copy
        Application.DisplayAlerts = False
        ThisWorkbook.Activate
        Sheets("Mach_list").Select
        Range("B3").Select
        ActiveSheet.Paste
        Range("B3").Select
        Sheets("Hoofdscherm").Select
        Range("e5").Select
        Windows("machinelijst_draaien.xls").Activate
        Windows("machinelijst_draaien.xls").Close
    End If
    End If

End Sub
 
Laatst bewerkt:
Is dat detail hiermee opgelost?
Code:
Sub refresh1()
    '
    ' refresh1 Macro
Dim bestand
bestand = Application.GetOpenFilename("Excel Files(*.xls),*.xls", , "SELECTEER machinelijst_draaien (bestand)")
 If bestand <> False Then
    If Split(bestand, "\")(UBound(Split(bestand, "\"))) = "machinelijst_draaien.xls" Then
        with Workbooks.Open(bestand)
          . sheets(1).Range("B3:F101").Copy ThisWorkbook.Sheets("Mach_list").Range("B3")
          .Close false
       end with
     else
       MsgBox "Gestopt omdat u de juiste file niet koos"
    End If
  End If
End Sub
 
Laatst bewerkt:
Het detail is dit:
Als ik deze macro gebruikt komt er een voor de gebruiker een vervelend scherm opdagen, kan ik die vermijden in de macro:
Blijkbaar op te lossen met ergens dit toe te voegen in de macro:
Code:
Application.DisplayAlerts = False

Een antwoord die ik kreeg op de vraag in een ander topic zag ik maar nog niet probeerde. Bij deze bedankt aan de persoon die deze oplossing gaf, ik probeer vandaag nog te proberen, en post het resultaat hier.
 
Ik was de haken vergeten te plaatsen.
Code aangepast in vorig schrijven.
 
Code:
with workbooks.open[COLOR=#ff0000]([/COLOR]bestand[COLOR=#ff0000])

[/COLOR]En bij....
Code:
.close [COLOR=#ff0000]false[/COLOR]
...zal je die melding niet krijgen.
 
Zal de macro's van afgelopen week eens deftig kontroleren/testen
 
Macro's afgelopen week?

Je hoeft maar steeds de laatste macro te testen.
De anderen krijg je toch meldingen op?
 
Bij de macro is er een gedeelte (vetjes) die je in werking ziet paseren,... scherm met de selectie, copie ...
Die zou ik liever niet zien, ik bedoel, hetgeen de macro doet verbergen (dit is momenteel het enige wat nog te verbeteren valt)
Code:
Sub refresh1()
    '
    ' refresh1 Macro
    Dim bestand
bestand = Application.GetOpenFilename("Excel Files(*.xls),*.xls", , "SELECTEER machinelijst_draaien (bestand)")
 If bestand <> False Then
    If Not Split(bestand, "\")(UBound(Split(bestand, "\"))) = "machinelijst_draaien.xls" Then
      MsgBox "Gestopt omdat u de juiste file niet koos"
    Else
[B]        Workbooks.Open bestand
        Range("B3:F101").Select
        Selection.Copy
        Application.DisplayAlerts = False
        ThisWorkbook.Activate
        Sheets("Mach_list").Select
        Range("B3").Select
        ActiveSheet.Paste
        Range("B3").Select[/B]
        Sheets("Hoofdscherm").Select
        Range("e5").Select
        Windows("machinelijst_draaien.xls").Activate
        Windows("machinelijst_draaien.xls").Close
    End If
    End If
End Sub
 
Wat heb ik geplaatst dan?
Zit ik hier werk voor de katse... te doen?

Veel geluk er mee.
 
Moment, ga alles eens rustig herbekijken, ik zie iets over het hoofd, moet afleren om met teveel tegelijk bezig te zijn..
Amai, dat is wat men noemt oud worden en verstrooid zijn en daarbij dan nog die vb taal niet erg goed begrijpen, ik schaam mij te pletter.
Uw macro is DE macro, werkt perfect, thx
Code:
Sub refresh2()
    '
    ' refresh2 Macro
Dim bestand
bestand = Application.GetOpenFilename("Excel Files(*.xls),*.xls", , "SELECTEER machinelijst_draaien (bestand)")
 If bestand <> False Then
    If Split(bestand, "\")(UBound(Split(bestand, "\"))) = "machinelijst_draaien.xls" Then
        With Workbooks.Open(bestand)
          .Sheets(1).Range("B3:F101").Copy ThisWorkbook.Sheets("Mach_list").Range("B3")
          .Close False
       End With
     Else
       MsgBox "Gestopt omdat u de juiste file niet koos"
    End If
  End If
End Sub
 
Laatst bewerkt:
Het kan ook zo:

Code:
Sub M_snb()
  With Application.FileDialog(1)
    .InitialFileName = "machinelijst_draaien.xls"

    If .Show Then
      With GetObject(.SelectedItems(1))
        .Sheets(1).Range("B3:F101").Copy ThisWorkbook.Sheets("Mach_list").Range("B3")
        .Close 0
      End With
    End If
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan