"Nyomtatóbarát" word dokumentum
2009.02.04. 16:30
Nem tudom, ki hogy van vele, de én gyakran nyomtatok ki ezt-azt internetről, hogy utazás közben, vagy egyéb elektronika nélküli szituációkban tudjak olvasgatni. Azonban az ilyen jellegű nyomtatgatás rendkívül költséges és pazarló tud lenni. Arról nem is beszélve, hogy a pénztárcánk kímélése mellett környezettudatosak is vagyunk, mert az a menő. Szóval emiatt általában nyomtatás előtt bemásolom a szöveget/képeket satöbbit egy word dokumentumba másolom, és teszkó gazdaságosra formázom. Néha egészen elképesztő méretűre lehet zsugorítani egész hosszú értekezéseket is. A gond csak annyi, hogy ezt megfelelő módon megcsinálni minden alkalommal elég macerás, úgyhogy kitaláltam erre egy jobb módszert: csinálja helyettem szuperkomputerem. Végül is erre találták ki, csak meg kell tanítani rá. De hogyan?
A válasz egyszerű, egy word makrót kell írni, ami elvégzi helyettünk a piszkos munkát. Word alá makrót írni nagyon szórakoztató dolog, hiszen a feladatok nagy részét megoldhatjuk azzal, hogy egyszerűen "felvesszük" azt, amit tenni szeretnénk, majd meglessük az elkészült kódot, és finomítgatunk rajta.
Na elég a sok rizsából, lássuk a kódot (gyorstipp a használathoz: Tools/Macro/Visual Basic Editor; keressük meg a normal.dot sablon a Project böngészőben, és rakjuk bele a ThisDocument modulba; mentés; ezután már simán rárakhatjuk a makrót egy gombra, egy menübe vagy a gyorsbillentyűre).
Sub CreatePrinterFriendlyDocument()
'''''''''''''''''''''''''''''''''''''''''''''''''''
'Ezt azért, hogy ne akadjunk fenn minden problémán'
'''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Először kitöröljük a dokumentumból az összes ábrát és képet'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each Shape In ActiveDocument.Shapes
Shape.Delete
Next
For Each InlineShape In ActiveDocument.InlineShapes
InlineShape.Delete
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'A további beállításokhoz jelöljük ki az egész dokumentumot'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.WholeStory
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Nagyon sok helyet nyerhetünk, ha a margó méretét 1 centiméterre 'állítjuk
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.PageSetup.BottomMargin = CentimetersToPoints(1)
Selection.PageSetup.TopMargin = CentimetersToPoints(1)
Selection.PageSetup.LeftMargin = CentimetersToPoints(1)
Selection.PageSetup.RightMargin = CentimetersToPoints(1)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Sok helyet nyerhetünk, ha az egész dokumentumot két hasábra 'osztjuk
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.PageSetup.TextColumns.Add Spacing:=CentimetersToPoints(0.5), EvenlySpaced:=True
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Így persze a tartalomjegyzék szétesik, hozzuk helyre'
''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each TOC In ActiveDocument.TablesOfContents
TOC.RightAlignPageNumbers = False
TOC.Update
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Állítsuk a font méretet 8-as, így sok helyet takarítunk meg és a 'szöveg is olvasható marad
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.Font.Size = 8
''''''''''''''''''''''''''''''''''''''''''''''
'Szedjük ki a fejezetek előtti oldaltöréseket'
''''''''''''''''''''''''''''''''''''''''''''''
Selection.ParagraphFormat.PageBreakBefore = False
'''''''''''''''''''''''''''''''''''''''''''''''''''
'És a fejezetek előtt is mögötti felesleges helyet'
'''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.ParagraphFormat.SpaceAfter = 0
Selection.ParagraphFormat.SpaceBefore = 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'A táblázatok is szétestek a hasábos változtatás miatt, igazítsuk 'meg őket
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each Table In Selection.Tables
Table.PreferredWidthType = wdPreferredWidthPercent
Table.PreferredWidth = "100"
Table.UpdateAutoFormat
Next
End Sub
Szerencsére a kód elég rövid és átlátható ahhoz, hogy bizonyos dolgokat ki/be lehessen pakolni, így van egy kis lehetőség a masszírozásra is. Ha esetleg valakinek van valami ötlete hogyan lehetne még kisebbre összenyomni a dokumentumot, akkor kommentbe vele!
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
Gery Greyhound // · http://www.bestofgyurcsany.hu 2009.02.04. 18:02:33
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal