Avatar billede lawman Praktikant
05. august 2011 - 22:47 Der er 14 kommentarer og
1 løsning

Brevskrivning med variable (Word og Excel 2010)

Der er en god flaske vin på højkant, til den der kan hjælpe med at løse mit problem.

Jeg anvender Office 2010 (Word og Excel).

Jeg skriver dagligt mellem 20-30 breve. Brevene er selvfølgelig standardbreve, hvor jeg ændrer noget af indholdet (bestemte ord), samt firmanavn (modpart) og adresse (nogle i udlandet). Det er ca. de samme 50 firmaer jeg skriver til. De forskellige ting jeg ændrer i brevene er:

Skadelidte. (navn + cpr nummer)
Erstatningsbeløb. (DKK)
Beløb jeg opkræver af modparten. (DKK)
Nogle bestemte ord: Bortkommen, Beskadiget eller Forsinket.
Lovgrundlag: Montrealkonventionen artikel 17 stk. 2 eller artikel 19.
Dags dato. (format 5. august 2011)
Sagsbehandler (kunne være 2 andre end mig)

Når jeg har valgt ovenstående ud fra nogle lister (f.eks?), skal standardbrevet genereres. Jeg konverterer det til pfd. og mailer det.

Jeg har nogle vage ideer med lister og brevfletning. På forhånd tak.

Per
Avatar billede lawman Praktikant
05. august 2011 - 23:01 #1
Glemte 2 variable: Skadenummer (10 tal) og modpartens referencenummer (uvilkårlige tal og cifre).
Avatar billede supertekst Ekspert
05. august 2011 - 23:24 #2
Det tror jeg godt jeg kan hjælpe med.
De nævnte ideer vedr. lister & standardbreve må meget gerne konkretiseres..
Avatar billede lawman Praktikant
05. august 2011 - 23:30 #3
Havde tænkt på nogle lister hvor firmaerne er listet, dvs. jeg har en fil hvor alle oplysningerne hentes henne.

Yderligere en fil med lovgrundlaget, og en fil med skadens navn.

Skadenummeret, modpartens reference, skadelidte (navn + cpr)og de resterende skal være fritekst.

Jeg er ikke helt klar over hvordan det smartest skal kunne lade sig gøre. Om man udfylder ovenstående og der genereres et word dokument, eller man kan generere det i excel. Evt. ved tryk på en knap. Jeg er ude på dybt vand nu..
Avatar billede supertekst Ekspert
05. august 2011 - 23:48 #4
Som jeg kan se det er der 2 muligheder:
1) Brevfletning, hvor datafilen er Excel. Heri kan der såvel indsættes individuelle data som lister med standardtekster.

2) Indviduel opbygning via Userform, der såvel indeholder tekstbokse til individuelle data som lister med standardtekster, der kunne hentes fra Excel-filer, tabeller i Word eller fra en database eller...

Selve brevet er baseret på en Word skabelon med bogmærker. Disse udfyldes ved overførsel af data og evt.beregninger fra Userformen.
Alt styret via VBA.

I hvilke typer filer findes de eksisterende data, som du nævner.

--

Slutter for i dag - men vender tilbage i morgen..
Avatar billede lawman Praktikant
06. august 2011 - 01:51 #5
Filerne er pt. word dokumenter. Men vil kunne ændres til excel, eller kommaseparerede filer alt afhængig hvad der er nemmest (måske svært, der adresserne i udlandet er lange og uforståelige). Leder efter en simpel løsning, der dog samtidig sparer mig for mest tid ved samlebåndet :-)
Avatar billede supertekst Ekspert
06. august 2011 - 09:35 #6
Hej igen

Excel har nok den rette struktur udfra det du nævner i #5

Har du truffet noget valg vedr. de 2 muligheder som jeg nævner i #4?

For at komme videre kunne vi opbygge en model?

I første omgang kunne du måske sætte et dokument/skabelon op med angivelse af de enkelte felter placering.
Avatar billede supertekst Ekspert
06. august 2011 - 10:17 #7
Spørgsmål: Anvendes flere sprog - således at dette også skal vælges?
Avatar billede lawman Praktikant
06. august 2011 - 10:21 #8
Løsning 2 er nok det der kommer tættest på. Ja nogle af brevene er på engelsk.
Avatar billede supertekst Ekspert
06. august 2011 - 10:48 #9
Ok - er ved at opbygge Userformen.

Hvert "sprog" sin skabelon af hensyn til den faste tekst og "liste-data" findes i 2 versioner (DK /ENG)- eller ?
Avatar billede lawman Praktikant
06. august 2011 - 10:53 #10
Ja det er rigtigt.
Avatar billede finb Ekspert
06. august 2011 - 11:18 #11
følger tråden... mvh finb
Avatar billede supertekst Ekspert
06. august 2011 - 11:23 #12
Hej finb - du er velkommen...
Avatar billede supertekst Ekspert
06. august 2011 - 18:05 #13
Hej lawman

Så er model1 klar.

Hvis du sender en mail - så returnerer jeg filerne

@-adresse under min profil
Avatar billede supertekst Ekspert
07. august 2011 - 11:56 #14
VBA-kode i Userform:

Rem DK VERSION 2 - 07-08-11
Rem =======================
Const sprog = "DK"
Const systemSti = "C:\Users\peter\Desktop\lawman\"          '<----- TILPASSES
Const skabelonNavn = "Skader 1 (DK).dotm"
Const sprogix = 0
Const skabelonMappe = ""

Const maxH = 239.25
Const minH = 52

Const hvid = &H80000005
Const rød = &HC0C0FF

Dim brevDato As Date

Dim termXLS As Object
Dim firmaXLS As Object
Private Sub Cb_gemLuk_Click()
    gemDokument
   
    lukFirma
    lukTerm
   
    Unload UserForm1
End Sub
Private Sub gemDokument()
Rem som .DOCX
    ActiveDocument.SaveAs FileName:=systemSti & "ref_" & Me.Tb_skadeNr & ".docx"

Rem Som .PDF
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
    systemSti & "ref_" & Me.Tb_skadeNr & ".pdf", ExportFormat:= _
    wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
    wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
    Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
Private Sub Cb_minimerMaksimer_Click()
    minimerMaksimer
End Sub
Private Sub minimerMaksimer()
    If Me.Height = maxH Then
        Me.Height = minH
    Else
        Me.Height = maxH
    End If
End Sub
Private Sub Cb_reset_Click()
    Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
   
    ChangeFileOpenDirectory _
        systemSti & skabelonMappe & "\"
    Selection.InsertFile FileName:=systemSti & skabelonNavn, Range:="", _
        ConfirmConversions:=False, Link:=False, Attachment:=False
   
    Me.Com_modPart.SetFocus
    Me.Cb_udfør.Enabled = True
End Sub
Private Sub Cb_udfør_Click()
'    If kontrolAfFelter = True Then
'        Me.Cb_udfør.Enabled = False
'        Me.Cb_reset.Enabled = True
       
        opbygBrev
        minimerMaksimer
'    Else
'        Me.Cb_udfør.Enabled = True
'        Me.Cb_reset.Enabled = False
'    End If
End Sub
Private Sub Ch_visBogmærker_Click()
    skalBogmærkerVises
End Sub
Private Sub skalBogmærkerVises()
    If Me.Ch_visBogmærker.Value = False Then
        ActiveWindow.View.ShowBookmarks = False
    Else
        ActiveWindow.View.ShowBookmarks = True
    End If
End Sub
Private Sub SpinButton1_spinup()
    brevDato = DateAdd("d", 1, brevDato)
    Me.Lab_dagsDato = Format(brevDato, "d. mmmm yyyy")
End Sub
Private Sub SpinButton1_spindown()
    brevDato = DateAdd("d", -1, brevDato)
    d = Day(brevDato)
    d2 = Day(Now)
   
    If d >= d2 Then
        Me.Lab_dagsDato = Format(brevDato, "d. mmmm yyyy")
    Else
        brevDato = Now
    End If
End Sub
Private Sub UserForm_activate()
    brevDato = Now
    Me.Lab_dagsDato = Format(Now, "d. mmmm yyyy")
   
    hentDataTilCombobokse sprogix
End Sub
Private Sub hentDataTilCombobokse(sprogix)
    hentFraFirma
    hentFraTermer sprogix
End Sub
Private Sub hentFraFirma()
Dim ræk As Long, firma As String
    Set firmaXLS = CreateObject("Excel.Application")
    firmaXLS.workbooks.Open systemSti & "Firmaer.xlsx"
    With firmaXLS
        For ræk = 2 To 500
        firma = .Range("A" & ræk)
        If firma <> "" Then
            Me.Com_modPart.AddItem firma
        Else
            Exit For
        End If
        Next ræk
    End With
End Sub
Private Sub lukFirma()
On Error Resume Next
    firmaXLS.Application.Quit
    Set firmaXLS = Nothing
End Sub
Private Sub hentFraTermer(sprog)
Dim ræk As Long, årsag As String, lovgrundlag As String, sagsbehandler As String
    Set termXLS = CreateObject("Excel.Application")
    termXLS.workbooks.Open systemSti & "Termer.xlsx"
    With termXLS
        For ræk = 3 To 500
            årsag = .Cells(ræk, 1).Offset(0, sprogix)
            If årsag <> "" Then
                Me.Com_årSag.AddItem årsag
            End If
           
            lovgrundlag = .Cells(ræk, 4).Offset(0, sprogix)
            If lovgrundlag <> "" Then
                Me.Com_lovGrundlag.AddItem lovgrundlag
            End If
           
            sagsbehandler = .Cells(ræk, 7).Offset(0, sprogix)
            If sagsbehandler <> "" Then
                Me.Com_sagsBehandler.AddItem sagsbehandler
            End If
           
            If årsag = "" And lovgrundlag = "" And sagsbehandler = "" Then
                Exit For
            End If
        Next ræk
    End With
   
    lukTerm
End Sub
Private Sub lukTerm()
On Error Resume Next
    termXLS.Application.Quit
    Set termXLS = Nothing
End Sub
Rem <><><><><><><><><><><><><><><><><><><><><><><><><><><>
Private Sub opbygBrev()
    Application.ScreenUpdating = False

    indsætBogmærke "modPart", Me.Com_modPart
    indsætBogmærke "adresse", firmaXLS.Range("B" & CStr(Me.Com_modPart.ListIndex + 2))
       
    indsætBogmærke "dagsDato", Me.Lab_dagsDato
   
    indsætBogmærke "modpartsRefNr", Me.Tb_modpartsRefNr
    indsætBogmærke "sagsBehandler", Me.Com_sagsBehandler
    indsætBogmærke "skadeNr", Me.Tb_skadeNr
   
    indsætBogmærke "skadelidteNavn", Me.Tb_skadelidteNavn
    indsætBogmærke "skadelidteCprNr", Me.Tb_skadelidteCprNr
   
    indsætBogmærke "erstatningsBeløb", Me.Tb_erstatningsBeløb
    indsætBogmærke "opkrævesAfModpart", Me.Tb_opkrævesAfModpart
   
    indsætBogmærke "årSag", Me.Com_årSag
    indsætBogmærke "lovgrundlag", Me.Com_lovGrundlag
   
Rem Gå til start af dokument
    Selection.HomeKey Unit:=wdStory
    Application.ScreenUpdating = True
End Sub
Private Function hentComværdi(comNavn)
Dim cc As Control
    Set cc = UserForm1.Controls(comNavn)
    hentComværdi = cc.Value
End Function
Private Sub indsætBogmærke(bm, tekst)
    ActiveDocument.Bookmarks(bm).Select
    Selection.TypeText Text:=tekst
End Sub
Avatar billede supertekst Ekspert
07. september 2011 - 15:13 #15
Måske er det ved at være lukketid..
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

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