Avatar billede herch Nybegynder
14. juni 2004 - 14:10 Der er 5 kommentarer og
3 løsninger

VBA kode, som gør at dokument ikke bliver lukket

Jeg tester om et dokument er på mere end 1 side, såfremt dette er tilfældet, må dokumentet ikke lukkes. Der skal fremkomme en msgbox, som gør brugeren klart, at dokumentet skal tilrettes.

Jeg benytter et autoclose-modul

Private Sub Main()
  Dim Rc As Integer
  If Selection.Information(wdNumberOfPagesInDocument) > 1 Then
      Rc = MsgBox("Forsiden må kun være på 1 side - tilret forsiden", 5 + 16, "Antal sider - forkert")
  End If
  Selection.EscapeKey
End Sub

Hvordan kan jeg undgå, at den almindelige lukke-dialogbox vises?
Eller har nogen en anden ide, så er jeg meget interesseret.
Benytter OfficeXP.
Avatar billede rvm Nybegynder
14. juni 2004 - 14:17 #1
Prøv

Cancel = true
Avatar billede herch Nybegynder
14. juni 2004 - 14:23 #2
Det hjælper ikke, den alm. dialogbox kommer bagefter, og spørger om dokumentet skal gemmes?
Avatar billede rvm Nybegynder
15. juni 2004 - 08:21 #3
Så må vi den hårde vej og selv oprette en close event... Det gøres således

1 .Opret et classemodul i dit document (altså i VBA)
2. Kald modulet "ThisApplication"
3. Indsæt følgende i modulet:

Public WithEvents oApp As Word.Application
Sub oApp_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)

Dim Rc As Integer
  If Selection.Information(wdNumberOfPagesInDocument) > 1 Then
      Rc = MsgBox("Forsiden må kun være på 1 side - tilret forsiden", 5 + 16, "Antal sider - forkert")
      Cancel = True
  End If
  Selection.EscapeKey


End Sub

4. Indsæt følgende i et almindeligt modul i dit dokument:

Option Explicit

Dim oAppClass As New ThisApplication

Public Sub AutoOpen()
    Set oAppClass.oApp = Word.Application
End Sub


Så skulle det virke :-)
Avatar billede herch Nybegynder
15. juni 2004 - 10:31 #4
Det fungerer perfekt - når jeg kører selve .dot-filen.
Så kommer det berømte men - jeg har en menu, som kalder denne skabelon,
dvs. der dannes en doc altså f.eks. "Dokument 2", her fungerer det ikke.

Der bliver ikke testet først om dokumentet er på 2 eller mere sider, den spørger
bare om jeg vil gemme "Dokument 2", så da slår funktionen ikke igennem.
Har du en god ide til det også?
Avatar billede rvm Nybegynder
16. juni 2004 - 22:33 #5
Punkt 4 ændres til:

Indsæt følgende i ThisDocument i din skabelon:

Dim oAppClass As New ThisApplication

Sub Document_New()

  Set oAppClass.oApp = Word.Application

End Sub
Avatar billede rvm Nybegynder
15. oktober 2004 - 23:09 #6
Fik du svar på dine spørgsmål?
Avatar billede herch Nybegynder
29. november 2004 - 13:01 #7
Tak
Avatar billede herch Nybegynder
29. november 2004 - 13:09 #8
Fejl - undskyld - hvorfor kom den som afvist, RVM skulle have sine point, det havde jeg accepteret?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester