Stránka 1 z 1

Excel-makro na "ovládání" wordu  Vyřešeno

Napsal: 17 srp 2013 00:15
od saabturboclub
Ahoj,
mohl bych někoho poprosit, zda by mi jen nenapsal "část" kódu ve VBA/makra do excelu, který bych si doplnil do již vytvořených částí a jednalo by se konkrétně o to, jak by měl kód vypadat, pokud bych chtěl aby mi excel "přepnul" na otevřený "daný názvem (např: xxxx.doc)" word dokument. Zbytek mám již připraveno,ale nemůžu najít jen tuto část,abych mohl dle názvu určit jaký "dokument" má excel z otevřených použít.
Případně ještě poprosím jen zas část kódu,který by mi případně řekl, že daný word dokument (dle zadaného názvu) není otevřený a vyhodil by na mně hlášku.

Děkuji moc za pomoc....Pavel (hledal jsem a koumal týden ale poprosím Vás o radu)

Re: Excel-makro na "ovládání" wordu

Napsal: 17 srp 2013 08:26
od Uziv00
Není mi jasné co vlastně chceš.
Předpokládám, že pokud budeš mít na počítači otevřený dokument xxxx.doc, tak jej má zobrazit?

Re: Excel-makro na "ovládání" wordu

Napsal: 17 srp 2013 20:20
od saabturboclub
Ahoj, v excelu mám částečně naprogramované tlačítko, které mi po stisku nakopíruje určitou oblast buněk (kde se i tlačítko nachází) a tuto část mi má vložit do wordu = do dokumentu .doc . Ale podařilo se mi dát dohromady (z různých jiných příkladů) to, že mi tu oblast nakopíruje do dokumentu,který jsem naposledy proklikl na liště (=mám třeba více .doc otevřených souborů). Tak že nakopíruje dobře, ale poslední dokument,který prokliknu nemusí být ten,kam chci data kopírovat, proto by mi postačilo poradit, napsat jen tu "část" kódu, jak by mělo vypadat když chci kopírovat oblast do wordu, ale definuji i název do jakého dokumentu má data kopírovat = pokud bych na liště z třeba tří dokumentů měl jeden,co se jmenu např. test.doc, tak by nakopíroval data do něj, pokud bych neměl na liště tento test.doc otevřený, tak by to mohlo vyhodit hlášku, že nemám otevřený "daný" dokument.
Nebo nějak jinak,jestli je lepší způsob, než co mně napadl...... nebo jestli je jednodušší aby excel vypsal třeba po stisku tlačítka otevřené .doc dokumenty a já bych vybral do jakého chci z otevřených danou oblast kopírovat?
Mně už to někdy nemyslí nad banalitou:-(

Děkuji Pavel

Re: Excel-makro na "ovládání" wordu

Napsal: 18 srp 2013 07:46
od Uziv00
Pořád mi není moc jasné wocogo...
Nicméně, pokud je word uzavřen, pak můžeš použít tohle: (nakopíruje to do zavřeného souboru)

Kód: Vybrat vše

Const END_OF_STORY = 6
Const MOVE_SELECTION = 0

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set objDoc = objWord.Documents.Open("c:\test\testdoc.docx")
Set objSelection = objWord.Selection
objSelection.EndKey END_OF_STORY, MOVE_SELECTION
Text = "pokusný text 007"
objSelection.TypeText "" & Text
objDoc.SaveAs ("c:\test\testdoc.docx")
objWord.Quit

Na otevřený dokument to ale nefunguje. Pokud máš vyřešeno kopírování do otevřeného dokumentu, pak by mělo stačit nastavit onen otevřený dokument před kopírováním jako aktivní.
Kontrolu na otevřenost souboru lze řešit pokusem o jeho otevření pro zápis a zachycením chyby:

Kód: Vybrat vše

sFilePath = "C:\test\testdoc.docx"


    Dim oFso : Set oFso = CreateObject("Scripting.FileSystemObject")

    On Error Resume Next

    Dim nErr : nErr = 0
    Dim sDesc : sDesc = ""
    Dim oFile : Set oFile = oFso.OpenTextFile(sFilePath, 8)
    If Err.Number = 0 Then
        oFile.Close
        If Err Then
            nErr = Err.Number
            sDesc = Err.Description
        End if
   End If
    Set oFile = Nothing
    Set oFso = Nothing
 WScript.Echo Err.Number & "  " & Err.Description

To funguje tak, že pokud je chyba = 0, pak je možné do souboru zapsat => soubor není používán (otevřen).

A pro aktivaci dokumentu by mohlo fungovat:

Kód: Vybrat vše

Set objShell = CreateObject("WScript.Shell")
objShell.AppActivate "Nazev_Dokoumentu" '(nebo část - v podstatě to, co se objevuje nahoře v liště dokumentu)

ještě doplním - pokud by byl dokument v liště a požadoval bys jeho maximalizaci:

Kód: Vybrat vše

Set objShell = CreateObject("WScript.Shell")
vysledek = objShell.AppActivate ("Technici")
' WScript.Echo vysledek
If vysledek = 0 Then objShell.sendkeys "% x" '...restore

Re: Excel-makro na "ovládání" wordu

Napsal: 18 srp 2013 23:01
od saabturboclub
Ahoj, děkuji za příklady a možnosti, použil jsem pomalu vše + implementoval do daných kódů a akorát mám drobný problém = od dopoledne jsem si s tím vším hrál na PC a zkoušel a "chyby" error či hlášky a další možnosti vyskakovali dobře a fungovalo a teďka jsem k večeru típnul celej word a i excel a chtěl jsem si to pro jistotu zkusit po xxTÉ, zda tlačítka a vše funguje (do té doby jsem ani jednu aplikaci Excel či Word za celej den úplně nezavřel), tak najednou přestalo v těch kódech fungovat vše co se týče "on Error" a kontrol :idea: celé odpoledne to vše fungovalo přesně jak má a jak i píšeš, když soubor nebyl tak mi to vyhodilo hlášku jakou jsem chtěl a stoplo vba a podmínky tím šli jak mají, ale nevím proč po vypnutí celé office aplikace to najednou nefunguje dle podmínek jak má a to jsem si vytvořil průběžně hodně záloh excelu, kdy to vždy během dneška šlo a v žádném to teďka nejde....(podmínky a chyby...)

Nevíš či nevíte, kde je asi problém? Mně to připadne, jak kdybych během dopoledne "něco" v excelu aktivoval pomocí "kódu" a celou dobu se to drželo a šlo a po vypnutí a zapnutí tam danou věc nemusím mít aktivní....no jen doměnka, nic jiného mně nenapadá, když vše šlo OK a jen típnutí celého wordu a zpět zase otevření všeho to najednou dělá jiné věci....

DĚKUJI, Pavel

Re: Excel-makro na "ovládání" wordu

Napsal: 19 srp 2013 21:42
od Uziv00
Kde je problém netuším. Jinak pokud nepoužíváš testování souboru jako funkci, nebo proceduru, mělo by být testování ukončeno nastavením Err.Number na 0 a dodán příkaz On Error Goto 0. Tím se zruší resume next.
Což (si myslím) ale nijak nesouvisí s tím, jak se to chová. Nicméně tvoje popisy jsou bohužel tak nepřesné a dvojjaké (či spíše několikajaké), že z toho těžko můžu něco najít. makro je jednou makro a zavření a znovu otevření souboru na ně nemá vliv - pokud zrovna tohle není součástí kódu.

Re: Excel-makro na "ovládání" wordu

Napsal: 25 srp 2013 15:04
od saabturboclub
Ahoj, tak jsem to vyřešil, měls pravdu, špatně jsem tam měl ukončeno nastavení a jednu proceduru funkce někde jinde.
DĚKUJI MOC JINAK, PAVEL