Ændre kolonnebredde automatisk på en variable tabel via vba
Ændre kolonnebredde automatisk på en variable tabel
Jeg har en tabel some er 4,31cm bred pr kolonne, der skal kortes ned til 3 cm. Pr. kolonne.
Tabellen er indpasted fra et andet dokument, proceduren skal gentages ca. 2-300 gange, og hver gang vil antallet af linier være forskellige.
Nedenstående makro kode, kan håndtere mit behov når tabellen er statisk i sin størrelse, d.v.s. lige mange rækker hver gang. Hvordan laver en makro der tæller antallet af linier og bruger resultatet, således nedenstående makro gør det rigtige.
Jeg har faktisk en ligende udfordring hvor mit worddokument skal kigge ind i en excel fil og paste en række udfyldte celler. Udfordringen er også her at området hvor data står fra case til case, har forskellige antal rækker/linier. Vedlagte makro, kan håndtere mit behov, når data er er statisk i sin størrelse, d.v.s. har lige mange linier hver gang.
Sub hent ()
Dim xlApp As Object
Set xlApp = CreateObject("excel.application") xlApp.Visible = True
xlApp.workbooks.Open FileName:="C:\udtræk til statusrapport.xls"
Selection.GoTo What:=wdGoToBookmark, Name:="tilvalggrafisk" With ActiveDocument.Bookmarks .DefaultSorting = wdSortByName .ShowHidden = False End With Selection.PasteAndFormat (wdFormatPlainText) xlApp.Quit Set xlApp = Nothing End Sub
Det vil altid være således at 1.position i arket vil være j 98:k98 men jeg ved ikke hvor mange linier der udfyldes. Jeg vil kunne anføre et maks område hvor jeg ved at det ikke kommer ud over eks. J98:k110. Men problemet er så at det vil være forskelligt fra sag til sag hvor mange linier, og der med celler der er udfyldt og hvor mange der er tomme, jeg skal kun have pasted de ikke tommer celler i området.
Er det muligt at lave et tillæg til vedlagte makro, der kan håndtere denne udfordring. Eller vil det være nemmere at overføre maks området j 98;k110, og benytte evt. makroen fra den 1. angivne udfordring?
Måske har jeg misforstået opgaven, men ville det ikke være nemmere at markere hele tabellen på en gang og så ændre alle kolonner under ét. så er antallet af rækker ligegyldigt.
fx Sub KolBred Selection.Tables(1).Select Selection.Columns.PreferredWidthType = wdPreferredWidthPoints Selection.Columns.PreferredWidth = CentimetersToPoints(3) End Sub
Tak for dit svar, Jeg har prøvet at lægge dit forslag ind i og afspille den.
Men det virker ikke. Jeg har måske ikke forklaret min udfordring tydeligt, så jeg prøver lige igen. Det er ikke muligt at markere tabellen, dette skyldes at denne operation, kun er et delelement ud af en større række hændelser. Den eneste måde til at finde netop denne tabel (som også er vist) er ved brug af bogmærker. Bogmærket "bidrag_start" efterfølges af tabellen, så de nedenfor indsatte linier i VBA er min måde at få markeret min tabel på. Måske findes der en anden. Men disse vba linier passer kun, når tabellen er på 4 linier. Næsten case er tabellen på 3 linier eller 5 linier, og så passer koden ikke. Selection.MoveDown Unit:=wdLine, Count:=1 Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Kære Jkrons Tak for dit svar - det virker så mange tak. Har du et bud på hvordan jeg i excel i et evt. på forhånd defineret området eks. J98:k110 kun kopier og overføre til word, de celler der er "ikke tomme", og lader de celler tilbage der er tomme. Jeg tildeler foreløbig 60 points for dit foreløbige super svar, i håb om at du så også har et svar på den 2.del.
Kære Jkrons Jeg for forsøgt at stille op hvordan jeg kan forestille mig kolonne og række vil være udfyldt i excel arket, og hvordan de så skal se ud i word: original i excel udseende i word r/c j k r/c j k 1 10 20 1 10 20 2 11 21 2 11 21 3 tom tom 4 12 22 4 12 22 5 13 23 5 13 23 7 14 24 6 tom tom 8 15 25 7 14 24 10 16 26 8 15 25 9 tom tom 10 16 26
Det var en variant - her kommer anden variant original udseende udseende i word j k L k L tom 1 2 1 2
j k L j L 1 tom 2 1 2
j k L j k 1 2 tom 1 2
Med venlig hilsen
Hvis du løser denne venligst svarer på den super kort under excel her er den også lagt ud - så vil der jo være yderligere point.
Kære Jkrons Mine tabeller ser lidt mærkelige ud - de har tilsyneladende forskubbet sig. så jeg prøver igen - nu skulle det gerne se lidt pænere ud og nemmer at forstå. r/c j k r/c j k 1 10 20 1 10 20 2 11 21 2 11 21 3 tom tom 4 12 22 4 12 22 5 13 23 5 13 23 7 14 24 6 tom tom 8 15 25 7 14 24 10 16 26 8 15 25 9 tom tom 10 16 26
Det var en variant - her kommer anden variant original udseende udseende i word j k L k L tom 1 2 1 2
j k L j L 1 tom 2 1 2
j k L j k 1 2 tom 1 2
MVH HHB
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.