[VBA]Checken of word al is geopend

Pagina: 1
Acties:

  • 456
  • Registratie: April 2000
  • Niet online

456

Onze excuses voor het ongemak

Topicstarter
In office lager dan 2000, werden alle documenten in 1 word programma geopend. In VBA5 hoefde je dan als je een bestand opende, dat al geopend was, niets te veranderen, want wanneer het zag dat als je het bestand al geopend had, ging hij verder.

Maar nu office 2000 en verder, steeds een nieuwe applicatie opent, kan dit dus niet meer. Het opent steeds hetzelfde bestand.
Hoe kan ik checken OF word al is geopend, en HOE switch ik vervolgens naar word toe?

Dit is wat ik nu heb, en wat werkt. Maar daar waar als al een geopend bestand nog een keer geopend wordt, dan opent hij hem dus NOG een keer, in plaats ervan naar toe te switchen.
Iemand een idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'Het openen van word en het standaard dagverslag.
Sub Word_Dagverslag()
'openen van word
Set wordObj = CreateObject("Word.Application")
wordObj.Visible = True

Dim datum As Date
datum = Date
With wordObj

'Als het bestand bestaat (c:\...\ase+datum) en dus true (groter dan 0) is, dan wordt
'dat bestand geopend. Als het niet bestaat, zal er een foutmelding komen,
'echter de gebruiker ziet deze niet, want ON ERROR wordt er het standaard
'dagverslag geopend, en een nieuw bestand met juiste datum weggeschreven.
'dus de state van deze if zal OF true zijn, OF NIET bestaan (=0 zal ie niet worden, want het
'programma zal bij het niet vinden van een file, een fout produceren)

     On Error GoTo nieuw_document_aanmaken
     If FileSystem.FileLen("c:\Ase\Dagverslag\ase" & datum & ".doc") > 0 Then
     .Documents.Open ("c:\Ase\Dagverslag\ase" & datum & ".doc")
      
Else

nieuw_document_aanmaken:
    .Documents.Open ("C:\Ase\Dagverslag.dot")
    .activedocument.SaveAs ("c:\Ase\Dagverslag\ase" & datum & ".doc")



      End If
    End With
 
   
End Sub

Een dag geen vertraging, is een dag niet gereisd


Verwijderd

Met eerst een GetObject i.p.v. een CreateObject
code:
1
2
3
4
5
Set wordObj = GetObject("Word.Application")
If wordObj Is Nothing then
  'Word is nog niet open
  Set wordObj = CreateObject("Word.Application")
EndIf

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Lees ook even

[topic=554857/1/30]

SIZE does matter.
"You're go at throttle up!"


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Op woensdag 24 juli 2002 10:23 schreef 456 het volgende:
In office lager dan 2000, werden alle documenten in 1 word programma geopend. In VBA5 hoefde je dan als je een bestand opende, dat al geopend was, niets te veranderen, want wanneer het zag dat als je het bestand al geopend had, ging hij verder.
Klopt in Office 2000 heb ik daar ook wat gezeik mee gehad.
Maar je kan toch gewoon met een foreach lusje de documents collectie aflopen en dan met de .FullName property checken of het bestands reeds geopend is?
code:
1
2
3
4
'Het openen van word en het standaard dagverslag.
nieuw_document_aanmaken:
    .Documents.Open ("C:\Ase\Dagverslag.dot")
    .activedocument.SaveAs ("c:\Ase\Dagverslag\ase" & datum & ".doc")

Tip dit kan makkelijker.
Je kan bij Documents.Add al een document aanmaken op basis van het Dagverslag.dot template en deze vervolgens opslaan onder een nieuwe naam.

It’s nice to be important but it’s more important to be nice


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Nog een toevoeging op mijn laatste zin:
Dit is veiliger (omdat je niet aan de dot file hoeft te komen) en ook nog sneller

It’s nice to be important but it’s more important to be nice


  • 456
  • Registratie: April 2000
  • Niet online

456

Onze excuses voor het ongemak

Topicstarter
Tnx. Dat add.document zal ongetwijfeld sneller werken (kwerk hier op een 1.4ghz bak... het geheel moet op een p166 werken (!!))
kga zo eens met alle info hier aan dat 'zappen' naar word werken, in eerste instantie kreeg ik foutmeldingen bij de getObject procedure.

Maar ik meld me wel weer als dit alles niet lukt.
Tnx

Een dag geen vertraging, is een dag niet gereisd

Pagina: 1