Word és excel fájlok konvertálása egy pdf-be VBA-val.

Word és excel fájlok konvertálása egy pdf-be VBA-val.
2017-01-14T14:14:13+01:00
2017-01-16T20:37:34+01:00
2022-10-15T23:06:02+02:00
vergab
Sziasztok,

Egy mappában vannak word és excel file-ok. Ezekből szeretnék pdf-eket készíteni. Egy pdf-nek tartalmaznia kell 1 word és 3 excel fájlt olyan sorrendben, ahogy a mappában vannak. a word file-ok 1 oldalasok, és az excel file-ok 1 laposak. Hogyan lehet ezt lekódolni egy excel-ből indított VBA-ban?
Mutasd a teljes hozzászólást!

  • Én azt tenném, hogy egymásután megnyitogatnám a fájlokat, save as, pdf majd ha megvan, akkor PDF creatorral összeraknám 1 PDF-be. Ingyenes csak ilyesmi van, illetve az office verziónak is támogatnia kell a pdf-be mentést.
    Mutasd a teljes hozzászólást!
  • Ez jó megoldás 1-2 pdf esetén, akkor nem is kellene a VBA. De ha már 100 pdf-et kell legyártani, akkor valahogy automatizálni kellene.
    Mutasd a teljes hozzászólást!
  • Szia!

    Én is úgy gondoltam. Külön egy makrós Excel, amiben olyan rutin, ami kilistázza a dokumentumok helyét, majd megnyitja a word-ot, és egy új Excelt, majd alatta váltogatja a dokumentumokat, persze save as to pdf. Ha megvan a kért csomag, akkor a PDF creatornak egy Shell parancs, ami összefűzi. De nem 100%, hogy ez a creator tud összefűzni. Azért javasoltam a creatort, mert az ingyenes. Gondolom az adobe-vel, is lehet, sőt, de az fizetős, ha jól tudom.

    A másik lehetőség, hogy magába az Excelbe rántani a Word doc-ot, kissé problémás.
    Mutasd a teljes hozzászólást!
  • Sziasztok, talán fordítva mehet: Word-be rántani az Exceleket.
    @vergab: próbáld meg "kézzel" és makrórögzítővel, hogy hogyan importálja be. Tipikusan új szakaszt kell nyitni, azt fekvő formára, és oda beszúrás/objektum az Excel oldalt. Ha sikerül, abból már lehet általános kódot szerkeszteni.
    Nem egyszerű feladat, szép mutatvány lesz!
    Mutasd a teljes hozzászólást!
  • Amúgy nekem is jól jöhetne egy, később hátha kell. Nézegettem ingyeneseket, mintha a Total PDF tudna ilyet, de nem 100%
    Mutasd a teljes hozzászólást!
  • Épp most csináltam hasonlót.
    Excelbe elég egyszerűen bele lehet pakolni az egy oldalas Word-öt, úgy ahogy van, formázással, mindennel együtt.
    Talán egyszerűbb úgy, ha csinálsz egy file-t, amiben van 3 db beágyazott Word + 1 Excel sheet.

    Végigmész a mappán egy looppal és nyitogatod a file-okat. Azért arra nem vennék mérget, hogy jó lesz a sorrend... nem ártana valami check. Viszont ha már megvannak a file-nevek, akkor a Word-öt így teheted bele az Excelbe:

    Dim appWord As Object
    Dim docWord As Object
    Dim objWordEmbedded As OLEObject
    Dim objWordDocEmbedded As Object 'Word.Document

    Set objWordEmbedded = CélSheetNeve.OLEObjects("BeágyazottWordObjektumNeve")

    Set appWord = CreateObject("Word.Application")

    Set docWord = appWord.Documents.Open(Filename:=InputWordFileElérésiÚtja&Neve, ReadOnly:=True)

    docWord.Content.Copy

    objWordEmbedded.Verb Verb:=xlPrimary
    Set objWordDocEmbedded = objWordEmbedded.Object

    objWordDocEmbedded.Content.Paste

    docWord.Close SaveChanges:=False

    Ha az Excel inputot is beletetted, akkor már csinálhatsz belőle pdf-et.
    Mutasd a teljes hozzászólást!
  • Bármelyik megoldás jó lehet (én inkább az Excel-t ültetném be egy Word doksiba és utána egyszerűen PDF-ként menteni ezt mind meg lehet oldani VBA-ban, külső program nélkül, maga az Office tud PDF-be menteni). A probléma majd az oldaltorésekkel lesz, mert a Word úgy van tervezve, hogy a dokumentum eleve oldalakon helyezkedik el, amit könnyű illeszteni egy nyomtatási képhez, de az Excel nem nyomtatáshoz van tervezve. Még ha kézzel csinálod is nagyon nehéz egy táblázatot egy oldalra eröltetni, hogy ne kerüljön át egy-két oszlop egy másik oldalra.
    Mutasd a teljes hozzászólást!
  • Szia!


    Szia,

    „Talán egyszerűbb úgy, ha csinálsz egy file-t, amiben van 3 db beágyazott Word + 1 Excel sheet.” Milyen fájlt kell készíteni, docx vagy xlsx?

    CélSheetNeve.OLEObjects("BeágyazottWordObjektumNeve")
    A CélSheetNeve a teljes elérési út a fájl névvel? A BeágyazottWordObjektumNeve
    pedig a docx fájl a teljes elérési úttal? Pl. C:\documentum\docfiles\12.doxc ?
    Mutasd a teljes hozzászólást!
  • Csak próbaképpen makrórögzítővel:

    Selection.EndKey Unit:=wdStory Selection.InsertBreak Type:=wdSectionBreakNextPage Selection.PageSetup.Orientation = wdOrientLandscape Selection.InlineShapes.AddOLEObject ClassType:="Excel.Sheet.12", FileName _ :="C:\Documents\ABC-2015p16.xlsx", LinkToFile:=False, _ DisplayAsIcon:=False
    Mutasd a teljes hozzászólást!
  • "Milyen fájlt kell készíteni, docx vagy xlsx?"

    Bármelyik jó lehet, az én javaslatom szerint Excel (*.xlsx). De az is jó, ha a Word-öket copyzod egybe és abba teszed az Excelt.

    "CélSheetNeve.OLEObjects("BeágyazottWordObjektumNeve")
    A CélSheetNeve a teljes elérési út a fájl névvel? A BeágyazottWordObjektumNeve
    pedig a docx fájl a teljes elérési úttal? Pl. C:\documentum\docfiles\12.doxc ?"

    Nem. Azt hiszem, nem volt egyértelmű, amit írtam. Én csinálnék egy template-et, vagy mondjuk "master file"-t. Legyen mondjuk master.xlsx
    Ebben legyen 4 db worksheet, nevei mondjuk word01, word02, word03 és excel01.
    A word01, 02, 03 sheetekre be kell ágyazni 1-1 word objektumot és ezeknek célszerű valami értelmes nevet adni (hogy ne Object 8-ként vagy ilyesmiként kelljen hivatkozni rá) - legyen mondjuk objWord01, objWord02 és objWord03.

    A kódnak ki kell nyitnia ezt a master.xlsx-et és az input file-okat.
    A "CélSheetNeve" a master.xlsx file-ban "word01" stb. - leginkább egy változóba bepakolva (akkor a változó neve).
    A "BeágyazottWordObjektumNeve" pedig az objWord01, 02, 03.

    Ha megvan, akkor már csak az Excel inputot kell beledobni és mehet a pdf.

    Majd következhet az újabb 3 db Word és 1 db Excel.

    Írta itt valaki, hogy az Excel-ben gond lehet a PrintArea-val - de mivel itt templatet használsz, azt csak egyszer kell beállítani és utána jó lesz.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd