Avatar billede wilweb Nybegynder
19. november 2003 - 16:10 Der er 11 kommentarer og
1 løsning

Macro - Faktura

Jeg har forsøgt at lave en faktura i word, der laver et faktura nummer efter et nummer i en text fil, men jeg kan ikke få det til at blive talt rigtigt op.
Første gang jeg saver en faktura bliver den gemt som et doc men så vil den hellere ikke længere og næste gang overskriver den bare filen og tæller ikke faktura nummeret op.

jeg har uploaded faktura.dot til http://www.wilweb.dk/exp.faktura.dot

her er koden :
Public FakturaNr As Integer
Sub AutoNew()
'Dim FakturaNr As Integer
'denne kode til at låse dokumentet op
If ActiveDocument.ProtectionType <> wdNoProtection Then
        ActiveDocument.Unprotect
End If

'Henter fakturanummeret fra en textfil (nummeret står på først linie)
Open "E:\Dokumenter-Information\Wilweb.dk\Faktura\fakturanummer.txt" For Input As #1
Input #1, FakturaNr
Close #1

'Tæller op til næste faktura
    FakturaNr = FakturaNr + 1

'Indsætter fakturanummeret ved bogmærket "Fakturanummer" i dokumentet
If ActiveDocument.Bookmarks.Exists("fakturanummer") = True Then
    ActiveDocument.Bookmarks("fakturanummer").Select
End If
If ActiveDocument.Bookmarks.Exists("fakturanummer") = True Then
    ActiveDocument.Bookmarks("fakturanummer").Select
    Selection.TypeText FakturaNr ' Den nye kode
End If


'og denne kode til at låse det igen, når fakutranummeret er indsat
If ActiveDocument.ProtectionType = wdNoProtection Then
    ActiveDocument.Protect wdAllowOnlyFormFields, True
End If
ActiveDocument.Bookmarks("Tekst1").Select
End Sub
Sub RegnMedFormularfelter()
Dim antal1, antal2, antal3, antal4, antal5, antal6 As Long
Dim pris1, pris2, pris3, pris4, pris5, pris6 As Long
Dim sum1, sum2, sum3, sum4, sum5, sum6 As Long
Dim totalum As Long
Dim momssats As Long
Dim moms As Long

With ActiveDocument

  antal1 = .FormFields("antal1").Result
  antal2 = .FormFields("antal2").Result
  antal3 = .FormFields("antal3").Result
  antal4 = .FormFields("antal4").Result
  antal5 = .FormFields("antal5").Result
  antal6 = .FormFields("antal6").Result

  pris1 = .FormFields("pris1").Result
  pris2 = .FormFields("pris2").Result
  pris3 = .FormFields("pris3").Result
  pris4 = .FormFields("pris4").Result
  pris5 = .FormFields("pris5").Result
  pris6 = .FormFields("pris6").Result

  sum1 = antal1 * pris1
  sum2 = antal2 * pris2
  sum3 = antal3 * pris3
  sum4 = antal4 * pris4
  sum5 = antal5 * pris5
  sum6 = antal6 * pris6
   
  totalum = sum1 + sum2 + sum3 + sum4 + sum5 + sum6

  momssats = .FormFields("momssats").Result
  moms = momssats * totalum / 100
   
'udskriv til skærm
  .FormFields("sum1").Result = sum1
  .FormFields("sum2").Result = sum2
  .FormFields("sum3").Result = sum3
  .FormFields("sum4").Result = sum4
  .FormFields("sum5").Result = sum5
  .FormFields("sum6").Result = sum6
  .FormFields("totalum").Result = totalum
  .FormFields("moms").Result = moms
  .FormFields("totalmm").Result = totalum + moms
End With
End Sub

Private Sub CommandButton1_Click()
GemFaktura
End Sub
Sub GemFaktura() ' sæt denne makro på en knap
'Tæller op til næste faktura
FakturaNr = FakturaNr + 1
'Gemmer fakturaen
ActiveDocument.SaveAs "E:\Dokumenter-Information\Wilweb.dk\Faktura\2003\" & FakturaNr & ".doc"

'Gemmer det nye fakturanumer i textfilen
Open "E:\Dokumenter-Information\Wilweb.dk\Faktura\fakturanummer.txt" For Output Access Write As #1
Write #1, FakturaNr
Close #1
ActiveDocument.Close

End Sub

håber på det er til at forstå...
Avatar billede wilweb Nybegynder
19. november 2003 - 16:11 #1
Avatar billede jpvj Nybegynder
19. november 2003 - 16:27 #2
Har ikke lige kigget nærmere på .dot filen, men hvad gør

'Indsætter fakturanummeret ved bogmærket "Fakturanummer" i dokumentet
If ActiveDocument.Bookmarks.Exists("fakturanummer") = True Then
    ActiveDocument.Bookmarks("fakturanummer").Select
End If
If ActiveDocument.Bookmarks.Exists("fakturanummer") = True Then
    ActiveDocument.Bookmarks("fakturanummer").Select
    Selection.TypeText FakturaNr ' Den nye kode
End If

De to if/end if sætninger er ens - den første burde kunne slettes
19. november 2003 - 16:45 #3
Avatar billede rvm Nybegynder
19. november 2003 - 17:05 #4
Hvis du indsætter din email, så sender jeg en der virker *S*
Avatar billede rvm Nybegynder
19. november 2003 - 17:08 #5
Og her er min AutoNew, der henter fakturanummeret:

Sub AutoNew()
   
    On Error Resume Next
    'Henter sidste brugte fakturanr fra en tekstfil
    sti = "C:\"
    Open sti & "Faktura.txt" For Input As #1
    Input #1, Fakturanr
    Fakturanr = Fakturanr + 1
    Close #1
   
    If Err Then
        Fakturanr = 1
    End If
    On Error GoTo 0
   
    'Gemmer det nye fakturanr i tekstfilen
    Open sti & "Faktura.txt" For Output As #1
    Print #1, Fakturanr
    Close #1
   
    'Indsætter fakturanr i formularfelt
    With ActiveDocument
        .FormFields("Invoice").Result = Fakturanr
    End With
End Sub
Avatar billede wilweb Nybegynder
19. november 2003 - 21:06 #6
I skabelonen har jeg problemer med at lave et bogmærke til faktura nummeret? de forsvinder hele tiden.

Det jeg egentlig ville var at:
Åbne fakturaen og automatisk hente fakturanummeret fra text filen
Gemme fakturaen og tilføje +1 til det nummer der står i text filen.

Hvordan bruger jeg din? på en knap?
Du må meget gerne sende en der virker, så ville jeg blive megtig glad :>

admin@wilweb.dk
Avatar billede wilweb Nybegynder
19. november 2003 - 22:47 #7
rvm :> det virker fint når jeg bruger din AutoNew() , jeg overskriver hele tiden den faktura der skrives.
Altså jeg ville jo gerne have at når jeg trykkede på save knappen der aktiver min:

Private Sub CommandButton1_Click()
GemFaktura
End Sub

Sub GemFaktura()
'Gemmer fakturaen....
ActiveDocument.SaveAs "E:\Dokumenter-Information\Wilweb.dk\Faktura\2003\faktura" & FakturaNr & ".doc"
'lukker doc......
ActiveDocument.Close

men der bliver kun skrevet en faktura FX. faktura1.doc selv om faaktura.txt = 3

Huummm....?


End Sub
Avatar billede wilweb Nybegynder
19. november 2003 - 23:03 #8
flemmingdahl :> jeg kan ikke få din til at virke, den ser ellers meget gennemtænkt ud. Lige for at få en ting på plads i dit eksempel jeg definere et bookmark, når jeg i et text felt tilføjer sName under feltindstillinger i bookmark feltet? og det burde være det jeg skulle gøre, eller hva?
Avatar billede rvm Nybegynder
20. november 2003 - 13:30 #9
Jeg sender min faktura i aften, når jeg er kommet hjem *S*

Du kunne køre min autonew på din Gemknap (den skal så bare kaldes noget andet end AutoNew)
Avatar billede wilweb Nybegynder
23. november 2003 - 16:56 #10
rvm:> det er cool, virker perfekt. Smider du ikke et svar så jeg kan give dig nogle point!
Avatar billede rvm Nybegynder
23. november 2003 - 22:29 #11
Her er et svar *S* Godt du kunne bruge den :-)
Avatar billede wilweb Nybegynder
24. november 2003 - 19:31 #12
Ja den er fin, takker mange gange
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