27. august 2008 - 14:22Der 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
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"))
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.
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"))
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
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
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
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 ;-)
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
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???
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
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.
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
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å
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
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
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.
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.
Synes godt om
Ny brugerNybegynder
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.