Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Testen op open rekenbladen.  (gelezen 4024 keer)

0 leden en 1 gast bekijken dit topic.

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Testen op open rekenbladen.
« Gepost op: 18 november 2005, 23:34:08 »
Hoi,

Ik zit met een klein probleem.

Ik wil in mijn VBA code testen of een andere werkmap open staat of niet, dit om foutmeldingen te voorkomen.

Het zou dus ongeveer iets moeten zijn zoals (in "mensentaal"dan ;D) :
als de map Picklijst.xls niet open is, moet deze geopend worden.

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.191
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:Testen op open rekenbladen.
« Reactie #1 Gepost op: 18 november 2005, 23:58:46 »
Hallo Spyder,

zo te horen moet deze "picklijst.xls" zowieso open om het eerste xls goed te kunnen uitvoeren. Kan je dan niet beter in je VBA code ( op de juiste plaats) aangeven dat VBA dat bestand moet openen. Daar zijn toch eenvoudige commando's voor. Zoiets als Workbooks.Open filename:="picklijst.xls"

:) SoftAid :)

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:Testen op open rekenbladen.
« Reactie #2 Gepost op: 19 november 2005, 12:19:37 »
Hoi SoftAid,

Het is inderdaad eerst de bedoeling om het bestand picklijst.xls te openen, maar bij het schrijven en testen van mijn code krijg ik geregeld de foutmelding dat het bestand Picklijst.xls open staat en hij daardoor in de onderbrekingsmodus gaat. Voor mij is dit geen probleem, ik sluit het gewoon terug af en start de code opnieuw, maar ik probeer het zo volledig mogelijk te maken omdat meerdere personen hiermee gaan werken, en het dus een beetje "fool proof" moet zijn. Ik probeer rekening te houden met ALLE mogelijke stommiteiten die zich kunnen voordoen ;D

Citaat
Daar zijn toch eenvoudige commando's voor. Zoiets als Workbooks.Open filename:="picklijst.xls"

Daar was ik van vertrokken, maar ik zou graag van te voren willen testen of het bestandje al dan niet open staat. ;)

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.191
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:Testen op open rekenbladen.
« Reactie #3 Gepost op: 19 november 2005, 13:23:56 »
...maar bij het schrijven en testen van mijn code krijg ik geregeld de foutmelding dat het bestand Picklijst.xls open staat en hij daardoor in de onderbrekingsmodus gaat.

Gebruik dan in het begin van de macro iets als: Workbooks.Close  voor picklijst.xls , dan ben je zeker dat het bestand gesloten is als je de macro start.
Ik ben hier ook gene straffe in hoor... :-[ :-X

succes,

:) SoftAid :)
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Testen op open rekenbladen.
« Reactie #4 Gepost op: 19 november 2005, 15:44:36 »
Hallo,

Sub TestWorkbook()
    Dim strWorkbook As String
    Dim strWorkbookPath
    Dim wWorkbook As Workbook
    Dim myWorkbook As Workbook
    strWorkbookPath = "C:\Documents and Settings\Standaard\Mijn documenten\Picklijst.xls"
    strWorkbook = "Picklijst.xls"
    For Each wWorkbook In Application.Workbooks
        If wWorkbook.Name = strWorkbook Then
        Set myWorkbook = Workbooks(strWorkbook)
        End If
    Next
    If myWorkbook Is Nothing Then
        MsgBox "Niet geopend"
    Else
        MsgBox "Workbook Open"
    End If
End Sub

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:Testen op open rekenbladen.
« Reactie #5 Gepost op: 19 november 2005, 16:23:43 »
Hoi SoftAid,

Gebruik dan in het begin van de macro iets als: Workbooks.Close  voor picklijst.xls ,
Ik heb dit niet getest, maar ik voel aan mijn theewater dat ik hier dan  ok weer een foutmelding gekregen had omdat ie die workbook niet gevonden had. ;D ;D

Citaat
Ik ben hier ook gene straffe in hoor... :-[ :-X
Ik ook niet, maar hier lopen enkele straffe gasten rond aan wie ge dat kunt vragen. 8)

@ Luc,

Je functie werkt prima voor mij. ;)
Ik had het liever geinterpreteerd in mijn code, maar door deze procedure nu op te roepen in mijn code werkt het ook prima. ;)
Ge gaat me dus niet horen klagen. 8) 8)
Bedankt, en tot de volgende vraag. :P ('t is nog lang niet af ;D ;D ;D)
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Testen op open rekenbladen.
« Reactie #6 Gepost op: 19 november 2005, 16:32:14 »
Zo kan het ook:
Function IsBookOpen(ByVal TargetBook As String) As Boolean
On Error Resume Next
IsBookOpen = CBool(Len(Application.Workbooks(TargetBook).Name) > 0)
End Function


Aanroepen in andere code doe je  zo:
msgbox IsBookOpen("picklist.xls")

Voordelen van deze methode:
> Sneller, want er is geen test nodig van alle objecten in de workbooks collectie.
> Minder code, geen variabele-declaraties
> Laat ook toe op addins te testen, bv. IsBookOpen("funcres.xla"), funcres.xla is een MS-addin. Dit kan niet met de andere methode, omdat addins niet als object in de workbooks collectie bestaan...

Groeten,
Bart
WinXP - Excel 2000/XP/2003

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Testen op open rekenbladen.
« Reactie #7 Gepost op: 19 november 2005, 16:34:36 »
Nu je toch over een functie spreekt, kan je er misschien maar beter een echte functie van maken.  Zo kan je deze code nog eenvoudiger oproepen, en dat voor verschillende bestanden op andere plaatsen in je bestand:

Function TestWorkbook(strWorkbook As String, strWorkbookPath As String)  
   
    Dim wWorkbook As Workbook
    Dim myWorkbook As Workbook
    For Each wWorkbook In Application.Workbooks
        If wWorkbook.Name = strWorkbook Then
        Set myWorkbook = Workbooks(strWorkbook)
        End If
    Next
    If myWorkbook Is Nothing Then
        Workbooks.Open strWorkbookPath
    End If
End Function

En die code om eerst het bestand te sluiten... of het bestand te openen, is op te lossen door bovenaan gewoon:
On Error Resume Next
te zetten.

Maar ik gebruik dat liever niet indien fouten anders op te vangen zijn.  Bijvoorbeeld door geen fouten te maken.
Die On Error geeft me een beetje het gevoel alsof ik een proefwerk afgeef met allerlei doorstrepingen, en verbeteringen er op... en dan maar hopen dat de leraar dit goed vind.

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Testen op open rekenbladen.
« Reactie #8 Gepost op: 19 november 2005, 16:37:47 »
Met één extra regel kan je deze functie ook als worksheetfunctie gebruiken:

Function IsBookOpen(ByVal TargetBook As String) As Boolean
On Error Resume Next
Application.Volatile
IsBookOpen = CBool(Len(Application.Workbooks(TargetBook).Name) > 0)
End Function


Volatile zorgt ervoor dat de functie telkens opnieuw wordt berekend bij een workbook refresh.

Aanroepen in een cel: =IsBookOpen("test.xls")

Tot jullie dienst,
Bart
WinXP - Excel 2000/XP/2003

 


www.combell.com