Dizájnos megoldás értékábrázolásra Powerpoint dián

2017. július 16. - Office Guru

Manapság a prezentációk készítése során a legnagyobb kihívást nem a tartalom, hanem inkább annak kreatív, újdonság erejével ható megjelenítése jelenti, így nem csoda, ha tömegével találhatunk az interneten pénzért vagy ingyen diákat, templateket kínáló oldalakat, ahonnan aztán könnyebben lehet a vizuális megjelenítést csiszolgatni prezinkben. Egy-egy szuper kis megoldás láttán az ember el is gondolkodik, hogy vajon mi a megvalósítás háttere, mennyire munkás egy-egy designos diát összedobni - nos, a mai posztban egy egyszerűbb kis trükköt nézünk meg együtt.

Üres diánkat kezdjük egy, az Insert ribbonfül Illustrations szekciójának Shapes menüjéből beszúrt kis kockával:

 

pp1.jpg

pp2.JPGEbből most csináljunk például négyet, de lehet akár öt, nyolc vagy kettő is:

pp3.JPGMajd mindegyik kis kockát másoljuk le, hozzuk létre még egyszer, majd az újonnan létrehozott kockákra kattintva (értelemszerűen egyszerre csak eggyel kezdve), a megjelenő Format ribbonfül alatt az Edit Shape menüből válasszuk az Edit Points funkciót:

pp4.JPGSzépen addig módosítgassuk a formáját a kis kockának, míg nagyjából el nem érünk valami ilyesmit az első kocka felett elhelyezkedő másik kockával:

pp5.JPGTehát van egy alsó sorunk, négy kockával, efelett pedig szintén négy kocka, amelyikből a bal szélsőt és a jobb szélsőt szépen megformázzuk az Edit Shape segítségével, hogy valami ilyesmi legyen az eredmény:

pp6.JPGEzután kattintsunk a felső sor első kockájára, majd a megjelenő Format ribbonfül alatt a Shape Fill menüből lépjünk a More Fill Colors almenüre:

pp7.JPGItt válasszunk az eredeti színnél valamivel sötétebb színt:

pp8.JPGÉs ezt ismételjük el mind a négy kockapárunknál, hogy valami ilyesmi eredményt érjünk el:

pp9.JPGEzután az Insert ribbonfül Shapes menüjéből szúrjunk be egy egy lekerekített téglalapot:

pp10.JPGValahogy így:

pp11.JPGElsőként állítsuk át a kitöltő színét olyanra, mint az alsó sor bal szélső kockájának színe, majd a jobb gombbal előhívható Context menüből válasszuk a Send to Back funkciót és küldjük "háttérbe" ezt az alakzatot:

pp12.JPGÉs ezt tegyük meg négyszer:

pp13.JPGHa ez megvan, akkor kicsit a méreteket hozzuk összhangba, hogy nagyjából itt tartsunk kinézetben:

pp14.JPGEzután a két szélső, nagyjából félbevágott trapéznak tűnő alakzatot ismét az Edit Points funkcióval szerkesszük meg úgy, hogy a felső széleik pontosan a felettük elhelyezkedő, lekerekített téglalap széleivel vágjanak egybe:

pp15.JPGEzután a lekerekített téglalapok kitöltő színét állítsuk át olyanra, mint a legalsó sorban hozzájuk tartozó kocka színe:

pp16.JPGEzután már csak csiszolgatni kell a formákat, elsőként az Insert menüből szúrjunk be egy TextBoxot, ami majd az értékeinket fogja tartalmazni:

pp17.JPGTehetünk rá ikonokat, szöveget, bármit, amit csak akarunk:

pp18.JPGÉs ezután finomítgassuk, ahogy nekünk tetszik:

pp19.JPG

Sok sort tartalmazó cella szétvágása soronként külön cellába

A mai poszt nem lesz túl hosszú, hiszen egyrészt maga a kérdés is eléggé rövid (bár életszerű), másrészt a megoldás is mindössze néhány kattintás - ettől függetlenül remélhetőleg ez az írás segítség lesz néhány Olvasónak. Adott tehát az alábbi cella:

hola1.JPGMilyen módon érjük el azt, hogy az egy cellában, egymás alatt sortöréssel felsorolt értékek külön cellákban jelenjenek meg egymás alatt?

Első lépésként menjünk a Ribbonünk data füle alatt található Data Tools szekcióba, ahonnan hívjuk meg a Text to Columns funkciót:

hola2.JPGAz első ablakban válasszuk a Delimited opciót:

hola3.JPGÉs a második lépést meghatározó ablakban jön az egész művelet kulcsa, az elválasztók (Delimiters) típusai közül válasszuk az Other típust, majd az üres mezőbe kattintás után nyomjunk egy CTRL+J-t. Miért pont CTRL+J-t? Mert az ASCII karaktercsomagban a sortörés a tízes karakter, aminek az ASCII control kódja a CTRL+J, tehát nagyjából azt adtuk be a Text to Columns funkciónak, hogy a sortöréseknél vágja szét a cella tartalmát:

hola4.JPGÉs ezután már szimplán csak végigkattintjuk a hátralévő lépéseket és már látjuk is az eredményt:

hola5.JPGEzután már csak egyetlen lépés van hátra, méghozzá az oszlopba rendezés. Ehhez először CTRL+C-vel másoljuk az egymás mellett elhelyezkedő cellákat a vágólapra, majd jobb egérgomb lenyomása után lépjünk a Paste Special menübe:

hola6.JPGItt már csak egy Transpose flaget kell betennünk és mehet is az OK:

hola7.JPGÉs íme, itt az eredmény, amit kerestünk:

hola8.JPG

TextBoxok tartalmának makrós feldolgozása

Korábbi posztokban már részlegesen érintettük ezt a témát, de most olvasói kérdésre válaszként következzen annak bemutatása, hogy például egy Excelben készített űrlap vagy adatlap TextBoxként beszúrt mezőiből hogyan tudunk egyszerűen adatot kinyerni, hogy aztán később ezekkel az értékekkel műveleteket hajthassunk végre. Értelemszerűen az Excel Developer ribbonfülének Controls szekciójából beszúrható TextBoxról van szó:

textbox1.JPGÍme egy roppant egyszerű kis űrlap, ami nagyjából bármilyen feladatnál képezheti a kis dashboardunk, munkalapunk részét:

textbox2.JPGAz elvárás pedig az, hogy valahol a sheeten vagy akár egy másik sheeten elhelyezett kis táblázat megfelelően kitöltődjön, amennyiben a megfelelő mezőket kitöltötte a felhasználó:

textbox3.JPGA legegyszerűbb megoldás, amit bevetnék egy ilyen esetben, valószínűleg a TextBox tulajdonságai között fellelhető LinkedCell tulajdonság lenne, amelynek megadásakor automatikusan töltődne a kapcsolt cella:

textbox4.JPGNa de ha valamilyen okból makrót szeretnék (például mert különféle ciklusokat szeretnénk használni, hogy az egyszer beírt adatok akár tárolódjanak egy sheeten), akkor jön jól az az alapként használható kód, amelyet az ALT+F11 lenyomásával előhívható VBA-editorba pötyögünk be. Elsőként egy OLEObject típusú változó deklarálásával kezdünk, amely ugyebár egy Active-X controlt/ beágyazott OLE-objektumot tud felvenni egy adott munkalapon (OLE mint Object Linking and Embedding).

textbox5.JPGA változó deklarálása után egyetlen ciklusra van csak szükségünk, ami egyszerű konyhanyelven nem fog mást tenni, mint sorban megnézi (For Each Box) a Sheet1 munkalap (In Worksheets ("Sheet1") összes OLEObjektumát (.OleObjects), majd ha talál köztük olyat, amelynek a progID-ja (If Box.progID =) a TextBoxunk progID-ja, akkor (Then) az adott TextBox bal legfelső cellájától számítva hét oszloppal arrébb található (Box.TopLeftCell.Offset(0,7)) cellát töltse ki az adott TextBox értékével (Box.Object.Value).

textbox6.JPGVegyük észre az eddig még nem használt progID tulajdonságot, amely egy adott OLEObject elméleti/programbeli azonosítóját adja vissza. Ugyanígy egy adott OLEObject TopLeftCell tulajdonsága az adott objektum bal, legfelső celláját adja vissza.

Lekerekített végű vagy éppen hegyes oszlopdiagramok használata

Több kérdést kaptam már a múltban arra vonatkozóan, hogyan lehet egy Clustered/Stacked Column vagy éppen Bar diagram esetén az alapvetően téglalap-formájú oszlopokat lekerekíteni. A következő posztban két nagyon egyszerű módszert mutatok be ennek az eredménynek az elérésére.

Ez a kiinduló helyzet, a Ribbon Insert fülének Charts szekciójából szúrjunk be egy tetszőleges Column (vagy éppen Bar) típusú Chartot:

roundchart1.JPGAz első módszer eléggé triviálisan adja magát, szintén az Insert ribbonfülre kattintunk, itt az Illustrations szekcióból a Shapes almenüt válasszuk ki:

roundchart2.jpgInnen pedig szúrjunk be egy tetszőleges formát, nem muszáj ragaszkodnunk a kerekhez:

roundchart3.JPGEzután szimplán kijelöljük a beszúrt formát, nyomunk egy CTRL+C-t, majd az összes oszlopot kijelölve (tehát a Data Seriest) CTRL+V lenyomásával egyszerűen beillesztjük:

roundchart4.JPGÉs ez ilyen simán működik más formákra is:

roundchart5.jpgEz pedig az, amit kerestünk:

roundchart6.jpgA formákkal úgy játszhatunk, ahogy csak akarunk, tehát ha a fenti például túlságosan lekerekített, akkor változtassunk az eredeti formán és illesszük be újra.

A másik módszer kizárólag chart-toolokkal dolgozik, tehát eléggé át kell dolgoznunk a diagramunk struktúráját. Első lépésként a chartunk kijelölése után megjelenő Design ribbonfülre kell kattintanunk, ahol a Select Data menüt válasszuk:

roundchart7.jpgAz itt felugró ablakban kattintsuk az Add gombra a Legend Entries (Series) szekciónál, majd a képen látható módon adjuk hozzá még egyszer ugyanazt az adattartományt egy új "Series"-ként:

roundchart8.jpgEzután még mindig a chartot kijelölve szintén a Design ribbonfül alól válasszuk ki a Change Chart Type menüpontot, ahol a másodikként beszúrt Seriest állítsuk egy alap-Scatter chartra:

roundchart9.JPGInnentől kezdve pedig már adja magát a tennivaló, a diagram-oszlopaink tetején megjelenő kis pontokat válasszuk ki, majd a Format Data Series menüpontot válasszuk (jobb gombbal való kattintás után) és a jobb oldalt megjelenő menüben formázzuk meg a Marker pontokat:

1. Változtassuk meg a pontok méretét
2. A kitöltés legyen Solid
3. Ne legyenek körvonalak (No Border)
4. És végül a szín legyen ugyanolyan, mint az oszlopoké

És szintén itt, a Line beállításainál egyszerűen válasszuk ki, hogy ne legyen összekötő vonal (No Line).

Valahogy így:

roundchart10.JPG

Kurzor alakjának változtatása userformon és a hozzá tartozó gombokon - egy kis extra agymenéssel

A userformok Excelben igen kedvelt kommunikációs csatornának számítanak, ha felhasználóinktól szeretnénk begyűjteni és rögzíteni mindenféle adatot, akár mondjuk egy konferenciára való jelentkezést vagy éppen időpontok foglalását tekintve. Egy alap userform elkészítése egy kis makróval kiegészítve alapvetően nem iszonyúan ördöngős feladat, de egy-két ügyes húzással könnyedén extrákat is adhatunk hozzá, ebből mutatok meg most egyet egy kérdésre válaszolva.

Tegyük fel, hogy a VBA-editor Insert menüjéből már be is szúrtunk egy egyszerű userformot:

pointer1.JPGHa automatikusan nem jelenik meg, akkor F4 lenyomásával hívjuk elő a Properties ablakot, amelyben látunk egy MousePointer névre hallgató tulajdonságot:

pointer2.JPGEnnek állítgatásával azt érhetjük el, hogy a kurzorunk az egyszerű nyílról meg fog változni valami másra, ha a userformunk fölé húzzuk. Például a 14-es fmMousePointerHelp paraméter egy kis kérdőjelet fog az egerünk mellé tenni:

pointer3.JPGA 13-as aztán egy indulást/töltődést jelző kis karikát fog nekünk kidobni:

pointer4.JPGHa pedig már kipróbáltuk az összes elérhető default típust és olyasmit szeretnénk, amit az Excel alapból nem tud, akkor válasszuk a 99-es, fmMousePointerCustom névre hallgató paramétert:

pointer5.JPGMajd az eggyel felette elhelyezkedő MouseIcon nevű tulajdonság sorában kattintsunk a három kis pöttyre és válasszuk ki a nekünk tetsző kis ikont:

pointer6.JPGItt akár berakhatunk egy céges logót, egy monogramot, bármit, amit szeretnénk, hogy megjelenjen ha a userform fölé húzzuk a kurzort. És értelemszerűen ez nem csak egy egész formon működik, a View menüből elérhető toolboxból beszúrható nagyjából bármilyen formára/controlra készíthetünk ilyet:

pointer7.JPGMaga ez a poszt tehát nem egy komplex történet, remélhetőleg azonban ad ötletet akár csak egyetlen Olvasónak is - én azonban az írás során olyan érdekes kis problémába botlottam, ami közvetlenül nem érinti az Officet, de elgondolkodtató.

Csináljunk egy egyszerű userformot a fentiek szerint mondjuk a 13-as típusú pointerrel, majd próbáljunk róla printscreent készíteni!

Az egyszerűbb screenshot-készítőkkel (pl. Snipping Tool, SnagIt) vagy a sima PrintScreen gombbal nem fogunk sikerrel járni, vagy egy extrább alkalmazást kell bevetnünk vagy használjuk a Windows beépített "Problem recorder" toolját. De ha valakinek van default, mindenféle külső alkalmazás nélküli jó ötlete, ne kíméljen!

Egy újabb Excel-kalkulációs hiba, ami valójában nem is az - 2. rész

Volt már hasonló kis finomságokról szó itt a blogon és a mai posztban ismét az Excel "iparági szabványból" következő határvonala kerül feszegetésre, ami igazából nem újdonság, de valószínűleg sokak számára még nem ismert. Ez pedig az Excel ún. 15-számos korlátja.

Adott a következő szorzás Excelben:

calculation.JPGHa megnézzük egy sima számológépben az eredményt, akkor ezt látjuk:

calculation2.JPGViszont ha Excelben nyomunk egy Entert a kis szorzásunkra, akkor ezt látjuk:

calculation25.JPGBizony, az Excel nem jó eredményt adott a szorzásunkra! És ez nem csak specifikusan ennél a szorzásnál van így, láthatjuk, hogy ha két 222 milliós számot szorzunk össze, akkor sincs minden rendben:

calculation3.JPGSőt, ilyen hosszú számokat be sem tudunk írni, az Excel 15 számjegy utána automatikusan 0-ra kerekít. Ha csak egy kalkulációnál futunk bele ebbe, akkor még azt is hihetjük, hogy valami gond van a táblázatkezelőnkkel, pedig amúgy nincs, amit tapasztalunk az szándékos és ismert korlát.

Ahogy ebben az írásban már fejtegettem, a magyarázat az Institute of Electrical and Electronics Engineers eredetileg kizárólag villamosmérnököket később aztán már informatikusokat is tömörítő szakmai szolgáltató szervezet egyik számformátumának követelményéből adódik, ami azt írja elő, hogy a számokat bináris formátumban kell tárolni (ez az IEEE 754/1985 lebegőpontos számformátum). Ebben a követelményrendszerben 15 számjegynél hosszabb számok tárolása nagyobb memóriát és erőforrást igényelne, így iparági szabványoknak megfelelően az erőforrások optimalizálása érdekében 15 számjegy után jön a kerekítés.

És bár szorzásnál ez annyira nem valószínű, hogy érinteni fog bennünket, de fontos észben tartani ezeket a korlátokat, hiszen pl. az 1/3 sem azt az eredményt fogja Excelben adni, mint amit matematikai tanulmányaink során próbáltak megtanítani nekünk.

További korlátokat láthatunk még a fentebb már linkelt írásban is, ahogy a lehetséges megoldásokat is, azaz a ROUND függvény vagy a Precision As Displayed funkció használatát.

Azért persze ez nagyjából olyan súlyú probléma, mint amikor régen a kéziszámológépek sem tudtak egészen egyszerű műveleteket megfelelően kezelni ilyen-olyan okokból kifolyólag, például amikor beadtuk a 369/258/147 osztást, majd az így kapott eredményt megszoroztuk előbb 147-tel, majd 258-cal - és a végeredmény nem 369 lett pontosan.

E-mail generálás Excelből kizárólag formulák segítségével

A VBA-s e-mailküldés valószínűleg az egyik legismertebb és leggyakrabban használt makró napjaink irodai hétköznapjaiban, de ahogy más hasonló esetekben lenni szokott, ha nem is ilyen széleskörű lehetőségekkel és valódi automatizmusként, de az Excel beépített formuláival is felépíthetünk valamit, ami részben ilyesmit képes mutatni nekünk - hangsúlyozom, a kettő nem összehasonlítható, de a következő formulás trükközés azért a maga módján igencsak előremutató.

A HYPERLINK függvény a lelke a következő kis posztnak, amely alapesetben a következőt tudja:

hyperlink01.JPGAhogy látható, első paraméterként megadjuk azt az internetes címet, elérési utat, ahova szeretnénk irányítani felhasználónkat, a második paraméterként pedig megadjuk azt a szöveget, ami a cellánkban fog majd szerepelni.

Ezt e-mail címmel is tudjuk használni, ilyenkor az első paraméternél a mailto: tag után beadjuk az érintett e-mailcímet, majd itt is adunk egy rövidebb, egyszerűbb nevet:

hyperlink02.JPGÉrtelemszerűen pontosvessző használatával több címet is meg tudunk adni, majd ha a linkre kattintunk, akkor az alapértelmezett levélküldőnkben meg fog nyílni egy új levél:

hyperlink03.JPGAzért a korlátok azok korlátok, webalapú levélküldőknél nem fog működni a dolog.

Fokozhatjuk a dolgot tovább, az első paraméterben a mailto: tag és az e-mail cím(ek) megadása után egy ?subject= utasítással tárgyat is tudunk adni az e-mailünknek, valahogy így:

hyperlink04.JPGSőt, még a levél szövegét is megírhatjuk, ha ez előbb megadott címzett(ek) és tárgy után egy &body= taget rakunk a HYPERLINK első paraméterébe, majd beírjuk, amit akarunk:

hyperlink05_1.JPGLáthatjuk, hogy ez így elég nyers és formázatlan kis anyag, de szépen meg is tudjuk törni a szövegünket, ahogy szeretnénk, méghozzá úgy, hogy pl. a sortöréseknél egy %0A kódot illesztünk a szövegbe:

hyperlink06.JPGEzeket a kódokat persze nem kell fejből megtanulnunk, ebben van segítségünkre ugyanis az ENCODEURL névre hallgató formula, ami annyit tesz, hogy egy beadott, tört szöveget megfelelően enkódol (minden nem alfanumerikus karaktert kódolni kell). Azaz szépen fel tudunk építeni egy kis táblát bizonyos mértékig automatikus levélküldésre (vagy inkább generálásra), hiszen a címzett, tárgy és szöveg mezőket kitöltetjük a felhasználóval, a szöveget egy ENCODEURL függvénnyel átalakítjuk, majd az egészet összefűzzük és végül egy linkre kattintva már meg is generálódik a levél:

hyperlink07.JPGTúlságosan persze ne örüljünk, ez csak rendkívül egyszerű levelekre és alapfeladatokra működhet, hiszen a HYPERLINK első paramétere maximum 255 karakter hosszú lehet, tehát igazán komplex történetekre nem felhasználható a fenti bűvészkedés.

Visszatérő poszt 3 Outlook-tanáccsal avagy hogyan tartsunk meg a naptárunkban egy visszautasított megbeszélést?

Jelentősebb, privát elfoglaltságoknak köszönhető kihagyás után ismét folytatódik a mindenféle Office-tanácsok, kérdések-válaszok, megoldások posztfolyama, rögtön kezdve egy egyszerű Outlookos írással, amelyben három, az elmúlt időszakban felmerült apró kérdésre keressük és találjuk meg a választ. Meg ezzel talán én is könnyebben visszarázódom a megszokott posztolási ritmusba.

Valószínűleg sokak szembesültek már azzal a problémával egy komplexebb levél nagy sebességgel történő gépelése során, hogy alapbeállításként az Outlook korrigálni fogja szavainkat, ha esetleg az első nagybetűt egy újabb nagybetű követné. Valahogy így:

outlook1.JPGA megoldás mindösszesen egyetlen pipa kikattintása, amelyhez lépjünk először az Outlook Options menübe a File menü Options almenüjére való kattintással, majd a Mail menüt kiválasztva kattintsunk a Spelling and Autocorrect gombra:

outlook2.JPGItt a Proofing alatt következzen az AutoCorrect options:

outlook3.JPGAz mondjuk már érdekes kis kérdés lenne, hogy az előző menüben az Autocorrect miért kis c-vel szerepel, amikor a következőben már nagy C-vel...

Az AutoCorrect menüben aztán végül az AutoCorrect fül alatt találjuk a minket érdeklő opciót, de ha körbenézünk ezeken a füleken, akkor elég sok finomhangolási lehetőséget találunk még:

outlook4.JPGA következő tanács az Outlook naptárját érinti, amelyben alapesetben harminc perces beosztások szerint tudunk megbeszéléseket, feladatokat ütemezni, de azért sokszor előfordulhat, hogy nem éppen egészkor vagy félkor kell kezdenünk egy találkozót, hanem mondjuk 45-kor vagy éppen 10-kor. És ha nem akarjuk állandóan kézzel hegesztgetni a meghívóinkat, akkor esetleg át is állíthatjuk a naptár beosztását. Ehhez a naptáron állva nyomjunk jobb gombot, majd válasszuk a View Settings opciót:

outlook5.JPGItt az Other Settingsre kattintva már láthatjuk is, hogy milyen opcióink vannak a naptár beosztását illetően:

outlook6.JPGÉs a végére a harmadik, végképp szükségtelen kis tanács, amely egy megbeszélés meghívójának visszautasítását érinti. Hogyan oldjuk meg azt a kérdést, ha egy meghívót vissza akarunk utasítani, de közben pedig szeretnénk magát a találkozót megtartani a naptárunkban?

A megoldás erre nem egy funkció, hanem egy szimpla kis trükközés, azaz először CTRL+C és CTRL+V segítségével másoljuk le a megbeszélésünket, ezután utasítsuk vissza az eredeti megbeszélést és már meg is vagyunk, hiszen a másolattal ott van a naptárunkban a találkozó, de közben pedig vissza is utasítottuk.

Word dokumentumokat egyesítő makrókezdemény

Különféle fájlok egyesítése, adattartalmuk egybemásolása elég gyakran felmerülő igény az Office különféle moduljaiban és ez nincs másként a Wordben sem. Így egy olvasói kérdés kicsit kibővített válaszában egy olyan kis VBA-makrót készítünk, amely gombnyomásra összemásolja különböző WORD dokumentumok tartalmát egyetlen fájlba.

Szóval adott egy folder, azon belül pedig ez a két példafájl:

w1_1.jpgMindkettő csak teljesen véletlenszerűen generált tartalommal van tele, de értelemszerűen ez a megoldás független a fájlok tartalmától:

w2_1.jpgCsak a példa kedvéért legyen valahol máshol egy fájlunk, amelyben lesz egy gomb, ami majd elindítja a másolási folyamat - persze ez csak kizárólag ebben a posztban lesz így, amúgy kitehetünk a Ribbonra is egy gombot, akár indítással futtatható makrót is készíthetünk, a lényeg, hogy valamilyen módon indítsuk el a programot:

w3_1.jpgSzépen lépjünk át a VBA-editorba és a gombhoz hozzárendelt makrót elkezdjük felépíteni, elsőként a változók deklarálásával. Szükségünk lesz három változóra és egy konstans értékre, kell egy változó a fájlnév és elérési út tárolására (File As String), egy változó az új dokumentum létrehozásához (Doc As Document) és egy változó a tartalom begyűjtésére a különböző fájlokból (rng As Range). A konstans értékünk az a folder lesz, ahonnan összesítjük a fájlokat, de ezt roppant egyszerű módon átalakíthatjuk arra is, hogy manuálisan választhassuk ki a foldert, de úgy is a kód átalakításával, hogy a fájlokat választhassuk ki egyesével.

Private Sub CommandButton1_Click()
Dim rng As Range
Dim Doc As Document
Dim File As String
Const Folder = "C:\"

Ezután a Doc változónkat meghatározzuk mint egy Documents.Add metódus, ami jelen esetünkben a Normál WORD template alapján megnyit és létrehoz egy teljesen új WORD-fájlt.

Set Doc = Documents.Add

A File változónk meghatározása előtt a DIR funkcióval kell megismerkednünk, ami egy speciális funkció VBA-ban, ugyanis ez egy olyan Stringet ad nekünk vissza, ami egy fájl nevét, elérési útvonalát jelenti - és ezt hangsúlyozni kell, hogy kizárólag a nevét, elérési útvonalát, mert egyéb attributumok begyűjtéséhez a FileObjectSystemet kell használunk.

File = Dir$(Folder & "*.docx")

Szintaxisa szerint a DIR első paramétereként az elérési utat adjuk meg, ami jelen esetben látszik is, hogy a folder, amit konstansként fentebb megadtunk, majd hozzáfűzve a docx kiterjesztés - azért használunk * karaktert, mert a fájl neve nem, csak a kiterjesztése érdekel minket. És hogy mi a $ jel? Ha ezt írjuk a DIR mögé, akkor biztosan Stringet ad vissza a funkció, ha nem írunk semmit, akkor egyértelműen Variant adattípust. Ilyen karakter például még a %, ami Integert ad vissza, az &, ami Longot és így tovább. Szóval ez jelen esetünkben simán el is hagyható egyébként.

Ezután pedig jön jóbarátunk a Do...Loop utasítás, amely szintaxisa szerint egészen addig ismétel egy vagy több utasítást, amíg a megadott feltételek fennállnak.

Jelen esetünkben például egészen addig másolgassa össze a fájlokat, amíg a folderben van .docx kiterjesztésű dokumentum:

Do Until File = ""

És mit csináljon? Fogja meg az üres, előbb létrehozott új fájlt, a Range.Collapse metódus wdCollapseEnd paramétere segítségével ugorjon a benne esetlegesen lévő tartalom végére, majd a Range.InsertFile metódus segítségével szúrja be ide a ciklusban aktuális kiválasztott fájl tartalmát. Ezután pedig tegye üressé ismét a File változót.

Set rng = Doc.Range
rng.Collapse wdCollapseEnd
rng.InsertFile Folder & File
File = Dir$()

Ezek után már csak egy dolog maradt hátra, méghozzá a Do...Loop utasítás lezárása a Looppal (esetleg egy MsgBox az eredménnyel).

Loop
MsgBox ("Kész!")
End Sub

Word-fájl tartalma a lehető leggyorsabban PowerPointba diákba

A mai poszt két Office-program, a Word és a PowerPoint kapcsolatát fogja kicsit boncolgatni egy olvasói kérdés megválaszolásán keresztül. A kedves kérdező arra volt kíváncsi, hogy milyen egyszerű módszerek léteznek Word dokumentumok gyors PowerPoint prezentációvá történő alakítására. A következőkben tehát egy ilyen módszert fogok bemutatni, amely az én véleményem szerint szöveges tartalmú prezentációknál az egyik leggyorsabb módszer erre az átalakításra - persze jöhetnek más, jobb, hatékonyabb ötletek kommentben, Facebookon vagy levélben.

Adott tehát a következő szövegfájlunk, ebből szeretnénk villámgyorsan prezentációt készíteni:

ppword1.jpgVégezzünk el rajta bizonyos formázásokat előzetesen, első lépésként azokat a címeket/bekezdéseket, amelyeket külön slide-okra akarunk és amelyek a slide-ok főcímei lesznek, a Home ribbonfül Styles szekciójában állítsuk Heading 1 típusú formátumra.

ppword2.jpgAz alcímeket/fő bullet pointokat állítsuk Heading 2 típusra:

ppword3.jpgÉs végül a szöveg, az alcímekhez tartozó tartalom legyen Heading 3:

ppword4.jpgÉrtelemszerűen ha további alábontásokat, tartalmakat is akarunk még, akkor azokhoz a szövegrészekhez rendeljünk egy külön Heading típust.

Ha beformáztuk megfelelően a Word fájlunkat, akkor Wordben a File menü Options almenüjéből válasszuk a Quick Access Toolbar opciót, majd a Ribbonon nem szereplő parancsok legördülő menüjének kiválasztása után tegyük ki a QAT-re a Send to Microsoft Powerpoint parancsot:

ppword5.jpgEzután már csak annyi dolgunk van, hogy rákattintunk a gombra:

ppword6.jpgÉs íme, elkészült az eredmény:

ppword7.jpgAhogy az a folyamat során valószínűleg elég egyértelműen látszott, olyan formátumban pakolhatjuk át a szövegeinket, amilyenben csak akarjuk, annyi szükséges hozzá, hogy előtte dolgozzuk meg a Word formátumát is.