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:

https://zsir.blog.hu/api/trackback/id/tr13922238

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

Én PDA-t használok, amivel ha akarnám, még szerkeszthetné is a doksit :)

 

 

 

süti beállítások módosítása