• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Test of bestand al open is

Status
Niet open voor verdere reacties.

Gert Bouwmeeste

Verenigingslid
Lid geworden
28 nov 2007
Berichten
827
Ik wil testen of een bestand al open is of niet. Op de site van Ron de Bruin heb ik code gevonden, maar die werkt niet goed.
Code:
Sub BestandAlOpen()

    Dim DestWB As Workbook
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    If bIsBookOpen_RB("e:\Zoek & Vind.xls") Then
        Set DestWB = Workbooks("e:\Zoek & Vind.xls")
    Else
        Set DestWB = Workbooks.Open("e:\Zoek & Vind.xls")
    End If
    
End Sub

Function bIsBookOpen_RB(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen_RB = Not (Application.Workbooks(szBookName) Is Nothing)
End Function

Of het bestand nu wel of niet open is, de code opent (probeert dat) altijd het bestand.

Wie weet wat er fout is?
 
Ik wil testen of een bestand al open is of niet. Op de site van Ron de Bruin heb ik code gevonden, maar die werkt niet goed.
Code:
Sub BestandAlOpen()

    Dim DestWB As Workbook
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    If bIsBookOpen_RB("e:\Zoek & Vind.xls") Then
        Set DestWB = Workbooks("e:\Zoek & Vind.xls")
    Else
        Set DestWB = Workbooks.Open("e:\Zoek & Vind.xls")
    End If
    
End Sub

Function bIsBookOpen_RB(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen_RB = Not (Application.Workbooks(szBookName) Is Nothing)
End Function

Of het bestand nu wel of niet open is, de code opent (probeert dat) altijd het bestand.

Wie weet wat er fout is?

Aan de functie blsBookOpen_RB moet je niet het volledige path meegeven, enkel de naam van het workbook. Dus test eens met:

Code:
If bIsBookOpen_RB("Zoek & Vind.xls") Then
        Set DestWB = Workbooks("Zoek & Vind.xls")
    Else
        Set DestWB = Workbooks.Open("e:\Zoek & Vind.xls")
    End If
 
Code:
sub geopend()
  for each wb in workbooks
    if wb.name="[COLOR="Teal"]bestandsnaam.xls[/COLOR]" then c0=wb.name
  next
  if c0<>"" then ..........
End sub
 
Code:
sub geopend()
  for each wb in workbooks
    if wb.name="[COLOR="Teal"]bestandsnaam.xls[/COLOR]" then c0=wb.name
  next
  if c0<>"" then ..........
End sub

Voor de check of een workbook open is heb je geen lus nodig (zie code Rob Bovey).
 
Nee, maar in dat geval wel een foutafhandeling, die traag is en onnodig gecompliceerde code.
 
Nee, maar in dat geval wel een foutafhandeling, die traag is en onnodig gecompliceerde code.

Akkoord met de foutafhandeling, maar niet met traag en onnodig gecompliceerd. De lus lijkt me trager dan een On Error Resume Next statement. En een verdere code van 1 lijn lijkt me, in dit geval, ook niet erg complex.

Het gaat waarschijnlijk ook een stuk over voorkeuren en gebruiken. En daarover in discussie gaan is vergelijkbaar met een discussie over geuren en kleuren.

Hopelijk is de TS zijn probleem hiermee van de baan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan