Option Explicit Option Base 1

Hasonló dokumentumok
Option Explicit Option Base 1

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Programozás alapjai. 5. előadás

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Egyszerű példaprogramok gyakorláshoz

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Visual Basic elméleti leti alapok 2.

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

A Budapesti Értéktozsde Részvénytársaság Vezérigazgatójának 265/2005. számú határozata

Smalltalk 2. Készítette: Szabó Éva

LibreOffice Makró Basic

AWK programozás, minták, vezérlési szerkezetek

Táblázatok fontosabb műveletei 1

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

A C# programozási nyelv alapjai

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

C# gyorstalpaló. Készítette: Major Péter

Algoritmizálás + kódolás C++ nyelven és Pascalban

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Programozás Minta programterv a 1. házi feladathoz 1.

Gyakorló feladatok Gyakorló feladatok

Érdekes informatika feladatok

AWK programozás, minták, vezérlési szerkezetek

Szkriptnyelvek. 1. UNIX shell

Számítástechnika. A Számítástechnika c. tárgy beosztása 2018/2019/I. tanévben. Szervetlen és Analitikai Kémia Tanszék

VISUAL BASIC ALAPISMERETEK

Algoritmizálás és adatmodellezés tanítása 1. előadás

Delphi programozás IV.

Megoldott feladatok. Informatika

1. Jelölje meg az összes igaz állítást a következők közül!

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Operációs Rendszerek II. labor. 2. alkalom

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Informatika terméktervezőknek

INFORMATIKA javítókulcs 2016

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

A JavaScript főbb tulajdonságai

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Internet programozása. 3. előadás

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

BASH script programozás II. Vezérlési szerkezetek

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

INFORMATIKAI ALAPISMERETEK

3. Gyakorlat Ismerkedés a Java nyelvvel

Java II. I A Java programozási nyelv alapelemei

Apple Swift kurzus 3. gyakorlat

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

3. modul - Szövegszerkesztés

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

3D-s technológiák a játékfejlesztésben UDK bevezetés

Programozási nyelvek Python

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Számítástechnika labor feladatok a 2012/2013. tanév őszi félévében

C# feladatok gyűjteménye

Az MS Word szövegszerkesztés modul részletes tematika listája

Adatszerkezetek 2. Dr. Iványi Péter

Szövegszerkesztés Word XP-vel. Tanmenet

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Változók és adattípusok Változók és adattípusok

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C programozási nyelv

Leírásukat lásd az egyes pontokban

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Algoritmusok Tervezése. 5. Előadás Visual Basic 2. Dr. Bécsi Tamás

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Programozási nyelvek JAVA EA+GY 1. gyakolat

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

3. modul - Szövegszerkesztés

BASH SCRIPT SHELL JEGYZETEK

2018, Funkcionális programozás

A feladat. A főprogram

117. AA Megoldó Alfréd AA 117.

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Hetedik témakör kiegészítés:

I. 288.: Utcai WiFi térkép

Kiterjesztések sek szemantikája

Tuesday, March 6, 12. Hasító táblázatok

6. A Pascal nyelv utasításai

Az MS Excel táblázatkezelés modul részletes tematika listája

7. Strukturált típusok

Java és web programozás

2018, Funkcionális programozás

Python bevezető foglalkozás Python bevezető foglalkozás

Algoritmusok és adatszerkezetek II.

Átírás:

Option Explicit Option Base 1 Dim para As Paragraph Dim Doc As Document Dim ParaIndex As Integer Dim osszesbekszam As Integer Dim bekszam As Integer Dim oldszam As Integer Dim b As Boolean Dim eloltorles As Boolean Dim sormagassagelol As Single Dim sormagassaghatul As Single Dim tombszam() As Integer 'A törölhető bekezdések számának tárolására. Dim tombindex As Integer 'A mindenkori tömbméret. Dim tombertek() As Single 'A törölhető bekezdéseket követő bekezdés térközének tárolására. Dim NemTorhetoSzokozMerete As Single Dim X As New EventClassModule Sub Register_Event_Handler() Set X.App = Word.Application End Sub Sub FormaiJavito() ' ' FormaiJavito Makró ' Rögzítés: 2008.12.22., készítő: dr. Száraz György

' 'Csak olyan, egy szakaszból álló, dokumentumokra alkalmas, amelyek nem tartalmaznak táblázatot! 'Csak olyan bekezdés törölhető, még karakterek hiányában is, amelyben nincs 'függőleges Tab vonal, nincs szegélyezve, s nincs mintázata. 'Ezért ezeket külön függvényekben ellenőrizzük. 'A teljes bekezdés törlését kölön menetben kell csinálni, mert különben a ciklus megbolondul. Set Doc = ActiveDocument oldszam = 1 tombindex = 0 'Az utolsó bekezdést külön vizsgáljuk: 'A térközök változását tömbbe kell tenni, s nem azonnal a bekezdéshez hozzárendelni, 'mert különben megváltozik a laptörés. 'Az első bekezdésnél az előtte lévő térközt figyelembe veszi a program! 'Ezért a törölt bekezdés térközeit az utána következő bekezdéshez rendeljük hozzá. 'De külön kell választani a tömbbe íráskor a törlendő bekezdésszám és az utána jövő bekezdés előtti térköz 'beírását, mert a törlendő utáni bekezdés elejéről még a későbbiekben lehet, hogy törlünk! 'Következik a törölhető bekezdések számának tömbben való rögzítése: bekszam = 1 'Vizsgálat az 1. bekezdéstől az utolsó előttiig: osszesbekszam = Doc.Paragraphs.Count bekszam = 0 For Each para In Doc.Paragraphs bekszam = bekszam + 1 If bekszam <> osszesbekszam Then If Torolheto(para) Then

tombindex = tombindex + 1 ReDim Preserve tombszam(tombindex) As Integer tombszam(tombindex) = bekszam Next para 'Következik a törölhető bekezdések utáni bekezdés elől lévő térközének tömbben való rögzítése: If tombindex <> 0 Then ReDim Preserve tombertek(tombindex) As Single For ParaIndex = 1 To tombindex tombertek(paraindex) = alsobekterkozeelol(paraindex) Next ParaIndex 'Következik a törölhetők utáni bekezdések térközének módosítása: 'Ha laptörés jellel kezdődik a bekezdés, akkor nem módosítjuk a térközét! For ParaIndex = tombindex To 1 Step -1 Set para = Doc.Paragraphs(tombSzam(ParaIndex) + 1) If Asc(para.Range.Characters.First) <> 12 Then para.spacebefore = tombertek(paraindex) Next ParaIndex 'Következik az üres bekezdések törlése. 'A törlést a dokumentum vége felől kell kezdeni, mert különben összezavarodik a bekezdések számozása. For ParaIndex = tombindex To 1 Step -1 Doc.Paragraphs(tombSzam(ParaIndex)).Range.Delete Next ParaIndex

'Utolsó bekezdés vizsgálata: 'A törlések miatt az utolsó bekezdés száma változott: bekszam = Doc.Paragraphs.Count osszesbekszam = bekszam Set para = Doc.Paragraphs(bekSzam) If Torolheto(para) Then para.range.delete End Sub Function Torolheto(bekezdObj As Paragraph) As Boolean Dim s As String Dim n As Integer Torolheto = False If NemMintazott(bekezdObj) = False Then If vankeret(bekezdobj) = True Then b = kitoltokarnincs(bekezdobj) bekezdobj.range.select If ujoldalon() = True Then

If (soroktorleseutankarszam() = 1) And (fuggvonalnincs(bekezdobj)) Then bekezdobj.spacebefore = terkozelol() Torolheto = True ElseIf eloltorles Then bekezdobj.spacebefore = terkozelol() Function soroktorleseutankarszam() As Integer 'Az utolsó sorvége jel törölhető, ha nincs nyomtatható karakter a sorban. Vigyázat a törölt sorok számával! 'Az elejétől kezdve is törölhető a sor, ha sor vége jelet tartalmaz, 's előtte nincs nyomtatható karakter. Dim s As String Dim KarSzam As Integer Dim NemTorhetoSzokozHelye As Integer eloltorles = False sormagassagelol = 0 sormagassaghatul = 0 'A bekezdés vizsgálata elölről: Csak addig vizsgáljuk a bekezdést, amíg törölhető sorokat találunk. 'Ha egy sor nem törölhető, utána abbahagyjuk az elölről való vizsgálatot. Do Selection.Collapse Selection.MoveEnd Unit:=wdLine, Count:=1 s = Selection.Text 'De vigyázat: ha a nem törhető szóköz karakter mérete eltér a bekezdés vége vagy sorvége jel méretétől, a sor 'magasság mind növekvő, mind csökkenő irányban átveszi a legnagyobb méretű nem törhető szóköz méretét!

'Külön programrészben kell megállapítani a legnagyobb méretű nem törhető szóköz méretét. De ha a bekezdés 'pontos sorközre van állítva, akkor ez az érték a döntö, s ekkor az 1,153-as szorzó sem kell! NemTorhetoSzokozHelye = InStr(s, Chr(160)) NemTorhetoSzokozMerete = 0 Do While NemTorhetoSzokozHelye <> 0 NemTorhetoSzokozMerete = Max(Selection.Characters(NemTorhetoSzokozHelye).Font.Size, NemTorhetoSzokozMerete) s = Replace(s, Chr(160), " ",, 1) 'Nem törhető szóköz első előfordulása szóközre cserélve NemTorhetoSzokozHelye = InStr(s, Chr(160)) Loop 'Ha a sorban csak szóközök és Tabulátor billentyűzések vannak, akkor a sor magasságát a sorvége vagy a 'bekezdés vége jel határozza meg. Ezek csak úgy törölhetők, ha helyükre azonos méretű karaktert teszünk. 'De ha nemtörhető szóköz is van, akkor ennek mérete a meghatározó! s = Trim(s) If b Then s = Replace(s, Chr(9), " ") 'Tabulátor szóközre cserélve s = Trim(s) KarSzam = Len(s) If (KarSzam = 1) Then If Asc(Right(s, 1)) = 11 Then 'A sor törölhető: eloltorles = True sormagassagelol = sormagassagelol + Sormagassag(Selection) Selection.Delete KarSzam = 0 ElseIf Asc(Right(s, 1)) = 13 Then

'Üres a bekezdés, azaz törölhető soroktorleseutankarszam = 1 NemTorhetoSzokozMerete = 0 Loop Until KarSzam >= 1 'A ciklus akkor ismétlődik, ha KarSzam = 0. 'A bekezdés vizsgálata hátulról: 'Ha ide jut a vezérlés, a bekezdés már nem lesz törölhető! para.range.select s = Selection.Text Do While Asc(Right(s, 2)) = 11 sormagassaghatul = sormagassaghatul + Sormagassag(Selection) 'A sorvége jelet tartalmazó sor magassága. Selection.Characters.Last.Previous.Delete s = Selection.Text Loop 'Az elölről és hátulról végzett vizsgálatok vége. soroktorleseutankarszam = Len(s) If bekszam <> osszesbekszam Then Doc.Paragraphs(bekSzam).SpaceAfter = Max(Doc.Paragraphs(bekSzam + 1).SpaceBefore, Doc.Paragraphs(bekSzam).SpaceAfter) + sormagassaghatul Function NemMintazott(bekezdesObj As Paragraph) As Boolean Dim b As Boolean

Dim F As Boolean Dim T As Boolean Dim mintazat As Shading Set mintazat = bekezdesobj.format.shading b = (mintazat.backgroundpatterncolor = wdcolorautomatic) F = (mintazat.foregroundpatterncolor = wdcolorautomatic) T = (mintazat.texture = wdtexturenone) NemMintazott = b And F And T Function vankeret(bekezdesobj As Paragraph) As Boolean Dim szegelyforma As ParagraphFormat Set szegelyforma = bekezdesobj.format vankeret = True If szegelyforma.borders(wdbordertop) = True Then If szegelyforma.borders(wdborderbottom) = True Then If szegelyforma.borders(wdborderleft) = True Then If szegelyforma.borders(wdborderright) = True Then

vankeret = False Function ujoldalon() As Boolean Dim ujoldszam As Integer ujoldszam = Selection.Information(wdActiveEndPageNumber) If oldszam = ujoldszam Then ujoldalon = False Else oldszam = ujoldszam ujoldalon = True Function kitoltokarnincs(bekezdesobj As Paragraph) As Boolean Dim b As TabStop Dim c As Boolean Dim tabszam As Integer Dim i As Integer tabszam = bekezdesobj.tabstops.count If tabszam > 0 Then For i = 1 To tabszam Set b = bekezdesobj.tabstops(i)

c = b.customtab If c = True And (b.leader <> wdtableaderspaces) Then kitoltokarnincs = False Next i kitoltokarnincs = True Function fuggvonalnincs(bekezdobj As Paragraph) As Boolean Dim b As Boolean Dim tabszam As Integer Dim i As Integer tabszam = bekezdobj.tabstops.count If tabszam > 0 Then For i = 1 To tabszam b = (bekezdobj.tabstops(i).alignment = wdaligntabbar) If b = True Then fuggvonalnincs = False Next i fuggvonalnincs = True

Function alsobekterkozeelol(tombfutoindex) As Single Dim torlendobekszam As Integer torlendobekszam = tombszam(tombfutoindex) Dim torlendobekezdes As Paragraph Set torlendobekezdes = Doc.Paragraphs(torlendoBekSzam) torlendobekezdes.range.select 'Az eredményt nem bekezdéshez rendelni, hanem tömbbe tenni! If tombszam(tombfutoindex) <> 1 Then 'Nem első bekezdés If tombfutoindex <> 1 Then If torlendobekszam - 1 = tombszam(tombfutoindex - 1) Then 'Ha egy törölhető bekezdést közvetlenül követő bekezdés törléséről van szó. alsobekterkozeelol = tombertek(tombfutoindex - 1) + Max(torlendoBekezdes.SpaceAfter, Doc.Paragraphs(torlendoBekSzam + 1).SpaceBefore) + Sormagassag(Selection) alsobekterkozeelol = Max(Doc.Paragraphs(torlendoBekSzam - 1).SpaceAfter, torlendobekezdes.spacebefore) + Max(torlendoBekezdes.SpaceAfter, Doc.Paragraphs(torlendoBekSzam + 1).SpaceBefore) + Sormagassag(Selection) Else 'Első bekezdés

alsobekterkozeelol = Max(Doc.Paragraphs(torlendoBekSzam + 1).SpaceBefore, torlendobekezdes.spaceafter) + torlendobekezdes.spacebefore + Sormagassag(Selection) Function Max(a, b) As Single If a >= b Then Max = a Else Max = b Function Sormagassag(kivalasztasObj As Selection) As Single 'Ha a bekezdés sortávolsága pontosan x pont, akkor annál nagyobb nem lehet!!! 'Ráadásul még akkor is ennyi, ha a karakterek mindegyike kisebb méretű!!! 'Törölhető sornál a sormagasság csak akkor vesz fel a sortávolságnál nagyobb 'értéket, ha a sorvége jel, azaz a sor utolsó karaktere vesz fel nagyobb 'értéket. Miután a sor úgyis csak akkor törölhető, ha a szóközökön és 'tabulátoron kívül mást nem tartalmaz (s ezek mérete hiába nagyobb, a sor 'magassága ezt nem veszi át, elég a sor utolsó karakterét ellenőrizni. 'A törlendő sor méretét kell az alábbiakban kiszámítani. Ez mind elől, mind 'hátul törlés esetén az utolsó karakter mérete, kivéve, ha a sorban nemtörhető szóköz van: If kivalasztasobj.paragraphs.linespacingrule = wdlinespaceexactly Then Sormagassag = kivalasztasobj.paragraphs.linespacing

ElseIf NemTorhetoSzokozMerete <> 0 Then Sormagassag = 1.153 * NemTorhetoSzokozMerete * kivalasztasobj.paragraphs.linespacing / 12 Else Sormagassag = 1.153 * kivalasztasobj.characters.last.font.size * kivalasztasobj.paragraphs.linespacing / 12 Function terkozelol() If bekszam <> 1 Then terkozelol = Max(Doc.Paragraphs(bekSzam).SpaceBefore, Doc.Paragraphs(bekSzam - 1).SpaceAfter) + sormagassagelol Else terkozelol = Doc.Paragraphs(bekSzam).SpaceBefore + sormagassagelol Vissza a magyarázathoz