NAPAKA PRI IZVRŠEVANJU MAKRA

Pomoč pri izdelavi makrov
Odgovori
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

Pozdravljeni, da razložim moj problem:
v excelu imam narejeno razpredelnico katero s pomočjo spojevanja spojim na wordovem dokumentu potrebne podatke.Navedeno spojevanje sem v wordu s pomočjo ustvarjenega makra poenostavil, ter se tako ob zagonu Wordovega dokumenta avtomatično izvrši makro ki spoji dokument. vendat tukaj pa nastopi problem. Če poskušam v excelu, kjer imam razpredelnico odpreti wordov dokument preko hyper povezave, mi napiše error in se sklicuje na napako, da ni odprtega aktivnega dokumenta (predvidevam da se dovolj hitro ne odpre dokument in se avtomatični makro ne izvede), če pa samostojno odprem wordov dokument pa mi izvede makro postopek normalno in zadevo spelje do konca, in ne navede nobenega errora? kateri faktorji bi lahko vplivali na nedelovanje?

hvala za odgovor
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

Pomislil sem tudi na to da mogoče obstaja kakšna možnost, da vstavim kodo da bi ignorilalo navedeno error napako in bi nadaljevalo s procesom?? ostalo mi ne pade na pamet...
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a admin »

Niste napisali kakšno napako točno makro javi. A iz vašega siceršnjega opisa sklepam, da želite makro pognati iz odprte Excelove datoteke, na katero se skljicuje tudi sam makro. Kot pravite pa makro spaja dokumente, kar pomeni da tudi makro želi odpreti to isto datoteko v kateri se nahajate in to mu seveda ne more uspeti, saj imate datoteko odprto Vi!

Sklepam torej, da je problem v dejstvu, da imate vi odprto datoteko, ki jo sicer želi odpreti tudi makro in zato javi napako.
lp,
Matjaž Prtenjak
Administrator
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

Da poskušam bolje razložiti.
V excelu imam list 1 in list 2. V listu ena imam narejeno hiperpovezavo do wordovega dokumenta. V listu 2 pa imam napisane podatke, katere nato s pomočjo spajanja dokumentov wordov dokument vstavi v napisano besedilo. Ker sem hotel, da se zadeva izvede avtomatično, sem si ustvaril makro, ki ob odprtju wordovega dokumenta izvede oz. sproži postopek makra, kateri spoji podatke z dokumentom. Zadeva deluje če imam odprt excel in nato še samostojno odprem wordov dokument, kateri izvede celotni postopek makra. Zatakne se pa ko hočem preko lista 1 preko hiper povezave odpreti wordov dokument, pa napiše Microsoft Visual Basic run-time error "4248" z razlago Tega ukaza ni na voljo, ker ni odprtih dokumentov.
Makro ki je napisan takole:

Koda: Izberi vse

Sub postopek()
'
' postopek Makro
'
'
        ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI.xls" _
        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI .xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OL" _
        , SQLStatement:="SELECT * FROM `__1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
      ThisDocument.Close OriginalFormat
End Sub
pa napiše oz se rumeno obarva pri naslednji alineji
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI.xls" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI .xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OL" _
, SQLStatement:="SELECT * FROM `__1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess


Pomislil sem tudi na to, da navedeni makro poskuša z ukazom odpreti že odprt dokument in mogoče je napaka v tem, in mogoče obstaja samo kakšna finta oz. manjša sprememba makrota, zato se obračam na vas, ker upam da mi boste lahko pomogali!
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a admin »

Da, to je tisto, kar sem vam raložil... Vi želite iz Excelovega dokumenta odpreti Wordov dokument, ki povrato odpre taisti Excelov dokument, kar a seveda ne bo šlo.... :(

Poskusite makro popraviti tako, da najprej delovni zvezek Podatki.XLS prekopirate v npr. Podatki1.XLS in potem odprete ta prekopirani delovni zvezek!
lp,
Matjaž Prtenjak
Administrator
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

mi lahko pomagate s kodo glede kopiranja v drug dokument ter s kodo v tem smislu, da se potem prekopirani del zapre in se ne shrani?

hvala
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a admin »

Tako kot sem vam napisal; najprej prekopirate datoteko in nato združevanje izvajate nad kopijo:

Koda: Izberi vse

Sub postopek()

  ' kopirate
  filecopy "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI.xls", _
           "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls", _
            
  ' združujete nad kopijo            
  ActiveDocument.MailMerge.OpenDataSource Name:= _
      "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls", _
      ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
      .... itd...
lp,
Matjaž Prtenjak
Administrator
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

Ta nasvet sem upošteval vendar nadaljuje z napako in sicer se zaustavi pri naslednji vrstici With ActiveDocument.MailMerge. Potrebno bi bilo napisati nek drug ukaz kot pa aktivni dokument, sem poskušal imenom dokumenta pa ne rata? kje je napaka? PRAV TAKO TUDI NE NAREDI KOPIJE OZ JO POSODOBI?
prilagam tudi celotni makro:

Koda: Izberi vse

Sub postopek()
'
' postopek Makro
'
'filecopy "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI.xls", _
           "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls", _

     ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls" _
        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA .xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OL" _
        , SQLStatement:="SELECT * FROM `__1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
      ThisDocument.Close OriginalFormat
End Sub
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a admin »

km... Glede na priloženi makro vam stvar sploh ne more delovati, saj imate vrstico za kopiranje zakomentirano... Če nič drugega, potem mora makro izgledati VSAJ takole:

Koda: Izberi vse

Sub postopek()
'
' postopek Makro
'
 filecopy "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI.xls", "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls"

     ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Documents and Settings\Administrator\Desktop\IZDELKI\PODATKI_KOPIJA.xls" _

in tako naprej
lp,
Matjaž Prtenjak
Administrator
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

Hvala za ureditev, sedaj mi kopiranje deluje, vendar ko imam odprt dokument PODATKI in s pomočjo hiper povezave, katero imam povezano z wordovim dokumentov, kateri nadalje izvrši že predhodno napisan makro, ter tako iz dokumenta PODATKI_KOPIJA izvede spajanje napiše VBA run-time error "70", Premission denied", kako bi lahko to napako obvozil oz bi vseno izvedlo kopiranje dokumenta in nato spajanje?
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a admin »

Napake na morete kar zaobiti. Če bi jo lahko, potem to nebi bila napaka... Sicer pa ta konkretna napaka pomeni, da želite kopirati datoteko, ki je odprta. Excel očitno ne pusti kopiranja datoteke, ki je trenutno odprta... Makro v tej smeri zatorej preprosto ne bo deloval.

Kot sem rekel je problem dokaj jasen. Vi imate v Excelu odprto datoteko iz katere kličete Wordoov dokument, ki posledično spet želi odpreti to isto datoteko, kar seveda ne gre. To sva poskušala rešiti tako, da bi odprto datoteko najprej kopirala in nato izvedla spajanje a Excel tudi tu javi napako, zato to pač ne deluje.

No vi sicer trdite, da kopijo ustvari in če jr to res potem sicer imate možnost, da bi vam stvar delovala (vsekakor pa to ni prava pot...). Torej če pravite, da Excel kopijo ustvari potem res lahko ignorirate napako in izvedete makro... Pred FileCopy ukaz napišite sledeče:

Koda: Izberi vse

  On Error Resume Next
  FileCopy ....
No prava pot oz. prava rešite v vašem primeru pa je seveda ta, da da iz Excela izvedete spajanje dokumentov...
lp,
Matjaž Prtenjak
Administrator
d3ath
Prispevkov: 17
Pridružen: Sr Jun 15, 2011 6:21 pm

Re: NAPAKA PRI IZVRŠEVANJU MAKRA

Odgovor Napisal/-a d3ath »

HVALA ZA VAŠ TRUD, pomagali ste mi v veliki meri, razumem, da določenih stvari ni mogoče storiti, se bom pač moral prilagodit dovoljenim stvarem.

HVALA
Odgovori