Avatar billede michaelrar Seniormester
19. maj 2005 - 09:28 Der er 9 kommentarer og
1 løsning

VBA (Word) Luk dokument og åben nyt + postnrtabel

Hej Eksperter igen :-))


Jeg har et dokument, som bruges til skabelon for nogle dokumenter jeg opretter med kundedata.
Når dokumentet er oprettet gemmer jeg det med kundens navn m.v. Ingen problemer.
Men nu vil jeg gerne have mit dokument lukket ( gerne uden at gemme igen ) og skabelonen åbnet på ny. Hvordan gør jeg bedst lige det ?

Har endvidere brug for, at få indlagt en postnr. tabel. Hvordan gør jeg det nemmest. Ønsker ikke at bruge access. Kan jeg ligge tabellen i selve VBA koden eller er det noget snavs ?
Avatar billede hiks Nybegynder
20. maj 2005 - 08:51 #1
hej

Det er lidt noget snavs med den postnummer tabel men du kan jo sagtens gøre det - jeg tror nu jeg ville vente med at gøre det til efter kommunesammenlægninger osv. (kan ikke helt huske om det får nogen indflydelse på postnumrene...) Du kan smide det i et array i en makro, excelark eller lign.

Men ellers til det andet med at lukke + åbne:

Sub LukOpstartNy()
   
    If MsgBox("Vil du lukke uden at gemme og opstarte ny?", vbYesNo, "Lukke dokument") = vbYes Then
   
        ActiveWindow.Close SaveChanges:=False
       
        'erstat C:\Programmer\Microsoft Office\Templates\1030\Elegant Resume.dot med dit dokument
        Documents.Add Template:= _
            "C:\Programmer\Microsoft Office\Templates\1030\Elegant Resume.dot", _
            NewTemplate:=False, DocumentType:=0
    End If
End Sub

/hiks
Avatar billede michaelrar Seniormester
20. maj 2005 - 10:18 #2
Perfekt.
Kan du lave et lille eksempel med hvordan postnr opslaget kan løses med en makro.

Tro ikke umiddelbart postnr. ændre sig i forbindelse med kommunesammenlægningen, da de følger postvæsnets uddelingsdistrikter og ikke kommunegrænser. Vi bor f.eks. i Børkop kommune ( Børkop by har postnr. 7080 ), men vi har postnr. 7000 Fredericia.

Tak for din hjælp og hurtige svar.
Avatar billede hiks Nybegynder
20. maj 2005 - 11:21 #3
tjaaa det kan jeg godt... Det er ikke kønt men det virker... :o)

jeg har lavet det med excel for så kunne du umiddelbart bare hente postnummer-filen fra postdanmarks hjemmeside:

http://www.postdanmark.dk/iis/postnumre/postnr.xls

og det her som VBA funktion du kalder funktionen således: ReturnCity(8000):

Private Function ReturnCity(postnummer As Integer)
    ' for at teste denne kode skal du paste det ind i et Word module
    ' og tilføje en reference til Excel-library:
    ' Tools -> References

    Dim i As Integer
   
    Dim xlApp As Excel.Application
    Dim xlWB As Excel.Workbook
 
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    xlApp.ScreenUpdating = False
   
    Dim strFilNavn As String
    strFilNavn = "C:\Documents and Settings\DitUserName\Skrivebord\postnr.xls"
    Set xlWB = xlApp.Workbooks.Open(strFilNavn)
   
    i = 2 'start fra række 2 pga kolonne overskrift
   
    With xlWB.Worksheets(1)
        While Cells(i, 1).Formula <> ""
            Debug.Print Cells(i, 1).Formula
            If CInt(Cells(i, 1).Formula) = CInt(postnummer) Then
               
                ReturnCity = Cells(i, 2).Formula
                Exit Function
            End If
            i = i + 1
        Wend
    End With

    xlWB.Close False ' lukker Workbooken uden at gemme
    xlApp.Quit ' lukke Excel igen
    Set xlWB = Nothing
    Set xlApp = Nothing
   
    ReturnCity = "Ingen postnummer fundet"

End Function

Husk at rette strFilNavn til hvor du nu har placeret arket.

/hiks
Avatar billede michaelrar Seniormester
11. juli 2005 - 12:13 #4
HJÆLP!

Troede ovenstående accepterede svar virkede, men når jeg afvikler følgende kode

Sub LukOpstartNy()
   
    If MsgBox("Vil du lukke uden at gemme og opstarte ny?", vbYesNo, "Lukke dokument") = vbYes Then
   
        ActiveWindow.Close SaveChanges:=False
       
            Documents.Add Template:= _
            "C:\Programmer\Microsoft Office\Templates\1030\Elegant Resume.dot", _
            NewTemplate:=False, DocumentType:=0
    End If
End Sub

kommer jeg aldrig videre efter: ActiveWindow.Close SaveChanges:=False

Hvad går der galt ?
Avatar billede michaelrar Seniormester
11. juli 2005 - 12:21 #5
Ps. dokumentet lukker godt nok, men det nye åbner ikke!
Avatar billede hiks Nybegynder
11. juli 2005 - 12:42 #6
hey

har du ændret stien til din template?

/hiks
Avatar billede michaelrar Seniormester
11. juli 2005 - 13:09 #7
yep

/Michael
Avatar billede hiks Nybegynder
11. juli 2005 - 13:24 #8
og du har tilføjet og afvikler koden fra normalskabelonen - for du kan ikke både lukke og så siden åbne i det dokument hvor makroen er.

se fremhævede område på: http://www.uploaded.dk/active/screen.jpg

/hiks
Avatar billede michaelrar Seniormester
11. juli 2005 - 13:48 #9
Det hjælper desværre ikke. Kodeafviklingen stopper simpelthen når det aktive vindue bliver lukket.

/Michael
Avatar billede hiks Nybegynder
11. juli 2005 - 13:51 #10
hvordan er det nu - den skabelon du arbejder i og lukker det er den samme som åbner? I så fald prøv i stedet for at tilføje den til normalskabelonen så tilføj makroen til den skabelon.

Jeg kan desværre ikke genskabe "fejlen" her da den er helt tosset med at åbne og lukke :s

/hiks
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
Kurser inden for grundlæggende programmering

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