Avatar billede dsj1972 Juniormester
27. august 2008 - 14:22 Der er 26 kommentarer og
1 løsning

Hjælp med indsættelse af data i tabel i word

Hejsa,

Jeg er igang med at lave en tabel i word som skal fungere som en slags skabelon til noget serie nummerering.
Tabellen består af en række med 18 kolonner hvori der skal stå serie nummerering som eks.

kol 1: (ddmmåå)(3 mellemrum)XXX1
kol 2: (ddmmåå)(3 mellemrum)XXX2
osv
kol 18: (ddmmåå)(3 mellemrum)XX18



Jeg har oprettet tabel og indstillet det hele, men kunne hertil godt tænke mig en knap function hvor jeg ved klik på denne får en beskedbox, hovr jeg kan indtaste start serienummer og så skal den indputte det i første kolonne og derefter i næste kolonne+1 osv.

selv nummerering skal bestå af en dato som skal være dags dato format og så 3 mellemrum imellem dato og nummer bestående af 4 ciffer, disse 4 ciffer skal være fortløbende

Dertil kunne jeg godt tænke mig en knap til som ved klik på denne tager det sidste serienummer i kol 18 og sætter ind i kol 1+1 og så forfra ellers....altså en auto nummer knap

mit dokument ser forløbig sådan ud i kode, ret mig gerne hvis der er noget som er ukorrekt brugt.

' opretter tabel 1 række og 18 kolonner

  Set myRange = ActiveDocument.Range(0, 0)
    ActiveDocument.Tables.Add Range:=myRange, NumRows:=1, NumColumns:=18

       
       
            With Selection.Tables(1)    ' indstiller højde og bredde på celler
                .Columns.PreferredWidth = CentimetersToPoints(0.8)
                Selection.Rows.HeightRule = wdRowHeightExactly
                Selection.Rows.Height = CentimetersToPoints(4.2)
               
                If .Style <> "Tabel - Gitter" Then
                    .Style = "Tabel - Gitter"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = True
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = True
            End With



            With Selection.Cells(1)
                .WordWrap = False
                .FitText = False
            End With
           
            With Selection.Tables(1)
                .TopPadding = CentimetersToPoints(0)
                .BottomPadding = CentimetersToPoints(0)
                .LeftPadding = CentimetersToPoints(0)
                .RightPadding = CentimetersToPoints(0)
                .Spacing = 0
                .AllowPageBreaks = True
                .AllowAutoFit = False
            End With
            Selection.Orientation = wdTextOrientationUpward
            Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter


           
End Sub



Sub kommandoknap()
'
' indsætter kommando knap i dokument

    ActiveDocument.ToggleFormsDesign
    Selection.InlineShapes.AddOLEControl ClassType:="Forms.CommandButton.1"
   
End Sub


Håber i kan fårstå hvad der er jeg gerne vil have hjælp til ellers så spørg bare.

På forhånd tak

mvh dsj
Avatar billede dsj1972 Juniormester
31. august 2008 - 12:48 #1
Hmm, der er åbenbart ikke rigtig nogen som har mod på at hjælpe ;-)

Jeg har i mellemtiden selv forsøgt mig lidt frem med div. funktioner fra andre spm her i forum, men kan skisme ikke rigtig få det til at spille.

f.eks har jeg lavet et forsøg på serie nummerering...sådan som jeg gerne ville have det til at se ud som : dato idag + nummer eks. 310808"3 space"2324
og hver gang siden bruges skal det være aktuel dato og der skal vil klik på knap skiftes nummer+1.....alene denne kode kan jeg ikke rigtig få til at spille og så har jeg slet ikke kigget på at få det til at kører over alle 18 kolonner.

Her er en test kode som jeg har lavet, men jeg har ikke rigtig kunne finde nogen kode som kan sætte "dato idag" ind altså en kode som tjekker systemdato og indsætter den.

Private Sub CommandButton1_Click()

        Open "d:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "d:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
           
 
Dim dato1 As Date, xD0 As String, xD1 As Variant
    xD0 = CStr(140307)
' konverter til datoformat
    dato1 = Left(xD0, 2) + "-" + Mid(xD0, 3, 2) + "-" + Right(xD0, 2)
' ren numerisk
    xD1 = Val(Format(dato1, "ddmmyy"))


        Label1.Caption = "dato idag  " + Str(ser)

End Sub


Håber der er nogen som har et bud.

mvh dsj
Avatar billede dsj1972 Juniormester
31. august 2008 - 12:54 #2
Glemte lige at tilføje at ovenstående kode slet ikke fungere som den skal det er jeg godt klar over, og har sandt at sige forsøgt så mange varitioner at jeg er blevet lidt forvirret, så derfor er der nok mange logiske fejl fra min side, men valgte at gå videre derfra med jeres hjælp for at få belyst problemet.

dsj
Avatar billede dsj1972 Juniormester
31. august 2008 - 13:09 #3
Denne kode kunne også virke, hvis altså bare jeg viste hvordan pokker jeg kunne få det indsat i label funktionen

Private Sub CommandButton1_Click()

        Open "d:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "d:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
           
 
    Dim MyDate
    MyDate = Date
    MyDate = Val(Format(Date, "ddmmyy"))
   
        Label1.Caption = "MyDate  " + Str(ser)

End Sub

Hvad gør jeg forkert???

mvh dsj
Avatar billede kabbak Professor
31. august 2008 - 13:47 #4
Private Sub CommandButton1_Click()

        Open "C:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "d:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
         

    Dim MyDate
    MyDate = Date
    MyDate = Val(Format(Date, "ddmmyy"))
 
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
    acell.Range.Text = "MyDate  " & Str(ser)
    num = num + 1
Next acell

 
End Sub

leg selv videre
Avatar billede kabbak Professor
31. august 2008 - 13:48 #5
fjern lige  num = num + 1, det var fra hjælpen


This example inserts numbers and text into the first column of the first table in the active document.

num = 90
For Each acell In ActiveDocument.Tables(1).Columns(1).Cells
    acell.Range.Text = num & " Sales"
    num = num + 1
Next acell
Avatar billede kabbak Professor
31. august 2008 - 16:20 #6
nåå, helt rigtigt var det ikke, har er de rettede koder.



    Set myRange = ActiveDocument.Range(0, 0)
    ActiveDocument.Tables.Add Range:=myRange, NumRows:=1, NumColumns:=18



    With Selection.Tables(1)    ' indstiller højde og bredde på celler
        .Columns.PreferredWidth = CentimetersToPoints(0.8)
        Selection.Rows.HeightRule = wdRowHeightExactly
        Selection.Rows.Height = CentimetersToPoints(4.2)

        If .Style <> "Tabel - Gitter" Then
            .Style = "Tabel - Gitter"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With



    With Selection.Cells(1)
        .WordWrap = False
        .FitText = False
    End With

    With Selection.Tables(1)
        .TopPadding = CentimetersToPoints(0)
        .BottomPadding = CentimetersToPoints(0)
        .LeftPadding = CentimetersToPoints(0)
        .RightPadding = CentimetersToPoints(0)
        .Spacing = 0
        .AllowPageBreaks = True
        .AllowAutoFit = False
    End With

    For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
        acell.Select
        Selection.Orientation = wdTextOrientationUpward
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
        Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
    Next acell

End Sub
Private Sub CommandButton1_Click()

        Open "C:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "d:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
       

    Dim MyDate
    MyDate = Date
    MyDate = Val(Format(Date, "ddmmyy"))
   

For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
    acell.Range.Text = MyDate & "  " & Format(Str(ser), "000")
    num = num + 1
Next acell


End Sub
Avatar billede kabbak Professor
31. august 2008 - 16:25 #7
Jeg glemte at rette stien i den sidste

Private Sub CommandButton1_Click()

        Open "D:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "D:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
    Dim MyDate
    MyDate = Date
    MyDate = Val(Format(Date, "ddmmyy"))
   
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
    acell.Range.Text = MyDate & "  " & Format(Str(ser), "000")
    num = num + 1
Next acell

End Sub
Avatar billede dsj1972 Juniormester
01. september 2008 - 06:55 #8
Hej kabbak,

Ja undskyld jeg ikke har svaret tilbage før nu, men blev altså sparket udenfor og lave have arbejde....skal jo også gøres.....men var så bagefter bestemt ikk i humør til at kigge på problemet.

Men har lige kigget og afprøvet kode....og det ser jo rigtig lækkert ud....lige på nær at den vender datoformat på en mærkelig måde eks:
idag 010908  0001 det skriver den istedet som 90108  0001 altså så skriver den ikke "ddmmyy" men istedet "mmddyy", hvor den så bare udelader foranstillet nul, ihvertfald sådan som jeg ser det, og det ser jo lidt amerikansk ud, men jeg har dansk version officepakke og operativ system, så det må vel være noget i kode som er problemet.

Men ellers ser det hele rigtig nice ud, lige på nær at der mangler noget cenctrering af tekst verticalt (øhh, eller også er det omvendt) ihverrtfald vender den ikke tekst retning 90 grader og centrer derfra. men det kan jeg ikk forstå for er det ikke det som denne stump kode burde gøre:

For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
        acell.Select
        Selection.Orientation = wdTextOrientationUpward
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
        Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
    Next acell

Sidst men ikke mindst skal jeg lige spørge dig om der i dit sidste svar ikke skulle ha været fjernet linien: num = num + 1, som du jo i tidligere svar skrev at skulle fjernes ;-)

mvh dsj
Avatar billede kabbak Professor
01. september 2008 - 08:08 #9
Private Sub CommandButton1_Click()

        Open "D:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "D:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1
    Dim MyDate
    MyDate = Date
     
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
    acell.Range.Text = Day(MyDate) & Month(MyDate) & Year(MyDate) & "  " & Format(Str(ser), "000")
Next acell
Avatar billede kabbak Professor
01. september 2008 - 08:09 #10
acell.Range.Text = Day(MyDate) & Month(MyDate) & Right(Year(MyDate),2) & "  " & Format(Str(ser), "000")
Avatar billede dsj1972 Juniormester
01. september 2008 - 09:51 #11
hej igen,

ja det ligner da noget, jeg prøvede begge dine svar, men første svar fra dig idag, var det bedste, men men dato format er stadig forkert, nu skriver den 192008  0001
årstal ligger jo rigtig nok, men aner ikk hvor den får de 19 20 fra.....noget bud på det???
Avatar billede kabbak Professor
01. september 2008 - 10:30 #12
Private Sub CommandButton1_Click()

        Open "D:\SerieNr.txt" For Input As #1
            Line Input #1, a$
        Close #1
        ser = Val(a$)
        ser = ser + 1
        Open "D:\SerieNr.txt" For Output As #1
            Print #1, Str(ser)
        Close #1

For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
acell.Range.Text = Day(Date) & Month(Date) & Right(Year(Date),2) & "  " & Format(Str(ser), "000")Format(Str(ser), "000")
Next acell

prøv denne
Avatar billede dsj1972 Juniormester
01. september 2008 - 11:37 #13
Undskyld, men er det ikke den samme som før, bare omskrevet lidt til mindre antal linier??? den ville ikke acceptere dobbelt Format(Str(ser),"000") så slettede de sidste.

Når der skrives & Right(Year(Date),2) &  så går der kage i den og den skriver det kun som 1908, hvis jeg så fjerner Right og 2 tal så der står & Year(Date) & så skriver den stadig 192008, så der er stadig noget uldent ved det dato format.
Avatar billede kabbak Professor
01. september 2008 - 12:06 #14
hvordan er din dato på computeren ?
Avatar billede dsj1972 Juniormester
01. september 2008 - 12:12 #15
Altså når jeg kigger på min dato i højre hjørne på min vista, så viser den 01-09-08
Avatar billede dsj1972 Juniormester
01. september 2008 - 12:26 #16
Hjææææælp, gjorde lige noget dumt vist nok, jeg tænkte at jeg lige ville gemme også genstarte og det blev så med det resultat at jeg nu ikke kan se noget tekst i cellerne
Avatar billede dsj1972 Juniormester
01. september 2008 - 12:27 #17
Ahhh glem lige det.....det var nok bare noget opdatering på visning...kan se det nu
Avatar billede kabbak Professor
01. september 2008 - 12:45 #18
Har fundet fejlen

det er fordi Dag = 1 og måned = 9
1908

sæt denne  linje ind i stedet

acell.Range.Text = Format(Day(Date), "00") & Format(Month(Date), "00") & Right(Year(Date), 2) & "  " & Format(Str(ser), "000")
Avatar billede dsj1972 Juniormester
01. september 2008 - 12:54 #19
Ja, den var lige i øjet.....super duper.....nu mangler jeg bare at ændre det lidt således at der tælles en frem pr celle og derved også på SerieNr.txt, men det var da skønt at få rigtig format på
Avatar billede kabbak Professor
01. september 2008 - 13:22 #20
hvad skal tælle frem? (ser)
eller dato
Avatar billede kabbak Professor
01. september 2008 - 13:23 #21
X = 0
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
acell.Range.Text = Format(Day(Date), "00") & Format(Month(Date), "00") & Right(Year(Date), 2) & "  " & Format(ser + x, "000")
X = X + 1
Next acell
Avatar billede dsj1972 Juniormester
01. september 2008 - 13:27 #22
Jeg fandt frem til sådan her:

Private Sub CommandButton1_Click()

                Open "C:\test\SerieNr.txt" For Input As #1
                    Line Input #1, a$
                Close #1
                Ser = Val(a$)
                Ser = Ser + 18
                Open "c:\test\SerieNr.txt" For Output As #1
                    Print #1, Str(Ser)
                Close #1
               
             
               
                   
                    num = Ser
            For Each acell In ActiveDocument.Tables(1).Rows(1).Cells
                acell.Range.Text = Format(Day(Date), "00") & Format(Month(Date), "00") & Right(Year(Date), 2) & "  " & Format(Str(num), "0000")
                num = num + 1
            Next acell
                   
               
               
End Sub
Avatar billede dsj1972 Juniormester
01. september 2008 - 13:29 #23
Jeg måtte tilføje et xstra Null da vi er oppe på 4 ciffret serienummer nu
Avatar billede dsj1972 Juniormester
01. september 2008 - 13:32 #24
Det virker hamrende godt, tusind tak for hjælpen....det var super duper.

smid lige svar, så får du point, for super hjælp.
Avatar billede kabbak Professor
01. september 2008 - 14:12 #25
et svar ;-))

det ser godt ud
Avatar billede dsj1972 Juniormester
01. september 2008 - 14:18 #26
Værs´go velfortjente point til dig.

ja, det virker bare lækkert, dog har jeg lige opdaget en mærkelig lille ting....der er en halv ramme omkring 1´ste celle, som ikk skal være der, men kan ikke lige hitte noget i kode som skulle give anledning til at lave den halve ramme, men den kommer med på papir når jeg printer ud.
Avatar billede dsj1972 Juniormester
01. september 2008 - 14:21 #27
Hey lige et lille tillæg spm, kan man lave den sub botton clik om til en knap på værktøjslinie, så jeg er fri for at have den på papir.
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