Word-ben automatikus vonalkód generálása megnyitáskor?
Szia.
Szetintem macróval valahogyan megoldható a dolog, bár a vonalkód generálása az egy nagy falat, azzal nem kinlódnék word macróban.
Én inkább csak arra irnék macrót, hogy egy adott mappából egy adott fájl tartalom alapján (esetlegesen ez a tartalom folyamatoson módosulna - egy szám növekedne benne) az adott mappában elhelyezett vonalkód képeket (amiket előre legenerálsz magadnak) beszúrja a fejlécbe vagy a láblécbe.
A wordben (2010) van (1)-Private Sub Document_New() és (2)-Private Sub Document_Open() macró, amik akkor hivódnak meg, ha új dokumentumot hozol létre (1), vagy megnyitsz egy létező dokumentumot (2).
Sok sikert.
üdv.
Szia.
Én a következő megoldást hoztam össze (Word 2010) :
1. Egy EXE program ami elkészíti a vonalkódot és bemásolja a vágólapra a vonalkód képét. A vonalkódot egy INI file alapján készíti el. És a programot a Word Macró hívja meg.
2. A word macró ami lefut ha új dokumentumot hoznak létre vagy ha megnyitnak egy létező dokumentumot (A normal.dotm-ben van a macró). Ez a Macró beilleszti a vágólap tartalmát a fejlécbe, majd a vonalkód értékben lévő számot növeli eggyel és visszaírja az ini fájlba, így a segéd exe program következő futtatásakor már az eggyel nagyobb számú vonalkód képét helyezi a vágólapra.
A "Csomag" innen letölthető : [link]
Ami A Csomagba van :
- WordBarCode.exe: A vonalkód generáló segéd program , virustotal ellenőrzőse : [link]
- WordBarCode.ini: a programot és a macrót is vezérlő INI file amelynek így néz ki valahogyan:
[New]
CodeValue=New-1
CodeType=CodeEAN128C
CodeText=True
CodeHeight=42
[Open]
CodeValue=Open-000001
CodeType=CodeEAN128C
CodeText=True
CodeHeight=42
Amint látszik két része van, egy [New] és egy [Open].
Mind két szekció ugyanúgy épül fel.
A "CodeValue=" utáni érték lesz a vonalkód értéke.
A "CodeType=" utáni érték a vonalkód tipusa (felhasználható tipusokat lást később).
A "CodeText=" utánni rész True/False érték lehet. True esetén a vonalkód értéke szövegként a vonalkód alá kerül, mig False érték esetén nem.
A "CodeHeight=" értéke a vonalkód magasságát határozza meg (pixelekben).
Választható vonalkód tipusok (CodeType):
Code_2_5_interleaved,
Code_2_5_industrial,
Code_2_5_matrix,
Code39,
Code39Extended,
Code128A,
Code128B,
Code128C,
Code93,
Code93Extended,
CodeMSI,
CodePostNet,
CodeCodabar,
CodeEAN8,
CodeEAN13,
CodeUPC_A,
CodeUPC_E0,
CodeUPC_E1,
CodeUPC_Supp2,
CodeUPC_Supp5,
CodeEAN128A,
CodeEAN128B,
CodeEAN128C
Alaptipus: CodeEAN128C, tehát ha nem felismerhető érték van a Tipusnál akkor CodeEAN128C lesz használva.
- Macro.bas: Ez a fájl tartalmazza a word macrót. Mielőtt installálnád az első két sort, az elérési útvonalakat javítani kell (Az EXE és az INI fájlok elérési útvonalai).
Private Const File1 As String = "C:\WordBarcode\WordBarCode.ini"
Private Const File2 As String = "C:\WordBarcode\WordBarCode.exe"
Vagy a WordBarCode.exe és a WordBarCode.Ini fájlt a C:\WordBarcode mappába pakolod be.
Installálása:
Elinditod a Wordot, Nyomsz neki egy ALT+F11-et. Bejön a Microsoft Visual Basic. Ebben A "normál" Szekció "Thisdocument" részéhez kell a fájl tartalmát másolni, Sima CTRL+C és CTRL+V (Megnyitod a jegyzettömbbel a MACRO.BAS fájlt kijelölöd az egészet, nyomsz neki egy CTRL+C, átmész a Microsoft Visual Basic-ba ott pediglen a megfelelő helyen nyomsz neki egy CTRL+V, majd mented az egészet). Kép: [link]
- Normal.dotm: Ebben is benne vannak a macrók, akkor érdemes ezt használni, ha nincs más macró installálva, akkor ezt a fájlt egyszerűen csak a következő helyre kell másolni, az ott lévőt felülíratni (érdemes az ott lévőről előtte biztonsági másolatot készíteni): c:\Users\[Felhasználó neve]\AppData\Roaming\Microsoft\Templates\Normal.dotm
Ami a vonalkód kinézetét befolyásolja (a word macróban): Get1 = UjVonalkodLetrehozasa(Get1, "-", 0, 6)
Első paraméter: A vonalkód amit beolvasott az ini fájlból.
Második paraméter: Az elválasztó karakter (Ha üres akkor következő paraméter van használatban)
Harmadik paraméter: A számok kezdetének karaktere (Ha a második paraméter nem üres nincs hatása)
Negyedik paraméter: A számok hossza (kitöltés vezető nullákkal pl : 00001)
Mint látod egész sok ismeretlen dolog van benne, így nem tudom garantálni, hogy csont nélkül fog menni (És természetesen csak is saját felelőségedre használd az esetleges károkért, felelőséget nem válalok). Mivel nagyon sok információval nem rendelkeztem. PL A Macró a fejlécbe másolja a vonalkód képeket, de előtte az egész fejlécet törli (Tehát csak a vonalkód lesz ott). Ha Nálad van valami a fejlécbe akkor át kell írni a word macrót, úgy hogy a megfelelő helyre rakja be a vonalkód képét, előtte törölve az ott lévőt.
Nekem a telefonom segítségével sikerült leolvastatni a képernyőről a vonalkódot. (Igaz a szöveget nem olvasta le, csak a számot).
Amikor elindítod a Wordot, akkor nem készít új vonalkódot (ezt sajnos nem tudom miért van). De ha a File-Új menüpontot használod és az új dokumentum a Normal sablonra épül akkor lesz a fejlécében vonalkód, illetve akkor is változik a fejléc ha már létező dokumentumot nyitsz meg.
Arra azért figyelj, hogy innentől kezdve (Ha installáltad a MACRO.BAS fájlt) minden dokumentum megnyitásakor a fejléc átíródik a vonalkódra, és ami eddig benne volt az törlődik. Ha ezt nem szeretnéd, akkor valamilyen szűrést kell a Macróba rakni (pl. Fájlnév alapján, csak azoknál a fájloknál módositja a fejlécet amik pl. "Szerz"_-sel kezdődnek)
Sok sikert.
üdv.
Szia.
Módosítottam a programon is és a macron is.
A letöltési link továbbra is él: [link]
Itt a módositott exeprogram virustotal ellenőrzése: [link]
Itt a macrót tudod megnézni (benne van a csomagban): [link]
Ami módosult:
A WordBarCode.exe program most már nem az INI filéből dolgozik, hanem négy paramétert vár (a vonalkód négy adatát - érték, tipus, szöveg, és magasság sorrendben) és ebből készíti el a vonalkód képét és bemásolja a vágólapra
A macróban történt változások:
- az INI filéből beolvassuk a vonalkód négy adatát és ezekkel az adatokkal meghívjuk a a WordBarCode.exe programot.
- Eddig az INI filében a a következő használatkor felhasználandó vonalkód értéke volt, most ez változott annyiban, hogy az INI file mindig a már felhasznált vonalkód értéket tartalmazza (beolvas, növel eggyel, visszaír, felhasznál)
- Illetve a megnyitási macró a vonalkódot a fejléc helyett a láblécbe pakolja.
A word indítását követő "hibát" miszerint ilyenkor nem generál új vonalkódot az új fájlnak a következő képen lehet megkerülni:
Létre kell hozni egy parancsikont a winword.exe programnak (saját gépben megkeresed a winword.exe filét: C:\Program Files\Microsoft Office\Office14\winword.exe) jobb egérgomb a winword.exe filén és a menüből Küldés -> Asztalra (Parancsikon létrehozás) menüpontot választva a parancsikon kikerül az asztalra.
Aztán megkeresed az asztalon az új winword parancsikonját, jobb egérgomb a parancsikonon -> Tulajdonságok -> Parancsikon fülön a "Cél"-nél (ahol a Winword.exe elérése van) a sor végére irj be egy /n -es kapcsolót (tehát igy nézz ki valahogy a "Cél"-ban lévő szöveg: "C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" /n ), majd Alkalmaz gomb és OK gomb.
Innentől kezdve ha az új parancsikonnal inditod el a wordot akkor elindítás után nem készít üres Dok1 fájlt. Hanem mindig a Fájl -> Új menüponttal hozható létre új dokumentum amibe pediglen bekerül a a vonalkód (a régi winwordos parancsikon természetesen a régi módon dolgozik, tehát egyből egy üres dokumentumot nyit meg amiben nincs vonalkód).
Sok sikert.
üdv.
Szia.
Újabb probléma derült ki, és ennek a problémának a megoldása a következő :
Bevezetésre került az INI filében a vonalméret : LineSize (Ezáltal az EXE program 5 paramétert vár : Vonalkód érték, Vonalkód típus, Szöveg megjelenítése, Vonalkód magassága, és a Vonal mérete). Alapértelmezett vonalméret : 2
Minden javítva a csomagban, letöltési link előző hozzászólásomban.
Üdv.
Szia!
Hű nagyon szépen köszönöm! Ahogy hazaértem egyből tanulmányozni is fogom! :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!