< návrat zpět

MS Excel


Téma: Ovladani jineho souboru makrem rss

Zaslal/a 26.1.2018 0:41

Dobrý den,
potrebuju ovladat jednim souborem radu dalsich.
vytvroil jsem si makro, ktere chci spoustet ve vsech ovladanych souborech, ale nedari se mi to rozchodit.
vsechny "podsoubory" mam v jedne slozce a halvni makro by je melo po jednom pootvirat a v kazdem spustit dalsi makro.
nevim jak zadat cestu do souboru. navic pri otevirani kazdeho souboru, excel vyhodi hlasku "Soubor, který chcete otevřít.. je v jiném formátu , než určuje přípona souboru...Chcete soubor nyní otevřít?" potreboval bych aby makro automaticky odpovedelo Ano.
Sub nejmakro()
Application.ScreenUpdating = True

'On Error GoTo my_error

Dim poleNazvu()
Dim a As Integer
Dim c As Integer
Dim x As Integer

Dim xlApp As New Excel.Application

w = Range("List1!i4").Text
'nacte adresu slozky se zdrojovymi soubory

MyFile = FileSystem.Dir(w & "\" & "*.*")


Do While MyFile <> ""
ReDim Preserve poleNazvu(x)
poleNazvu(x) = MyFile
MyFile = FileSystem.Dir
x = x + 1
Loop

a = UBound(poleNazvu) + 1
'spocita soubory ve slozce
Range("a1").Value = a

Application.ScreenUpdating = True
For c = 0 To a - 1
xlApp.Workbooks.Open (w & "\" & poleNazvu(c))


Application.Run "'" + poleNazvu(c) + "'" + "!makro25"

'a je pocet souboru, poradi posledniho je ale a-1

xlApp.Workbooks(poleNazvu(c)).Close
Next

Application.ScreenUpdating = True

'my_error:
'If Err.Number = 1004 Then

Range("B1").Select
ActiveWorkbook.Save

End Sub

Zaslat odpověď >

Strana:  1 2   další »
#039234
avatar
zacasl by som tymto

ChDrive C: - pripadne iny disk
ChDir Application.ThisWorkbook.Path - pripadne cestu k suborom, ak niesu pri hlavnom suborecitovat
#039237
avatar
Nechápu logiku věci. Když už jste si vytvořil ovládací sešit, tak proč nejsou všechna makra v něm? V sešitech jsou stejná makra? Takže až budete chtít udělat udpate, tak budete opravovat všechny procedury ve všech sešitech?

Nesmyslně řešíte cestu, když můžete použít zmíněný ThiWorkbook.Path.

Na jednu stranu komentujete kód a na druhou používáte názvy procedur jako Makro25?citovat
#039238
avatar
@misocko - dekuju, podivam se na fci Application.ThisWorkbook.Path

@xlnc - vsechna makra bych mel v hlavnim/materskem/ovladacim souboru. Ve zdrojovych souborech bych je jen spoustel.
viz vyse.
nazev makro25 je jen pomocny, jsem ve fazi kdy potrebuju rozbehat soucinost jednotlivych souboru.
jsem vedle vas asi zacatecnik. ale i kdybych chtel pouzit nazev makro25 finalne, nevidim na tom zas tak nic spatnyho, krome neprehlednosti :) ale diky i Vam. Na vzkaz jste mi neodpovedel, tak se v tom patlam a asi trochu ztracim.. ale never give up ;)citovat
#039240
avatar
Nemáte připravené ani zadání. Pardon, ale pro mě ztráta času.citovat
#039241
avatar
tak jestli tomu dobre rozumim, ThisWorkbook.Path mi zadava cestu k souborum? to mam reseny pres w = Range("List1!I4").Text, pricemz v bunce I4 si uzivatel zada cestu k souborum, pokud neni zadana jeste jinak.
To bych teda mohl nechat?

Ale nedari se mi porad otevrit ty jednotlive soubory...
jinak jsme pouzil vicemene radu pro me odsud z drivejska..
http://wall.cz/index.php?m=topic&id=13615
Diky!citovat
#039322
avatar
Ahoj. tak uz se blizim cili. ale porad nemuzu rozchodit spousteni makra v jinem souboru, kdyz mam makro v materskem, v tom, ze ktereho ho spoustim.

Porad to hlasi chybu v radku:
Application.Run "'" + poleNazvu(c) + "'!makro25"

nevite nedko co s tim? jestli je chyba jen v syntaxi radku, nebo se to takhle neda vubec spustit?
Diky moccitovat
#039324
avatar
Podstatu vašich problémů vidím v tom, že neumíte rozlišit práci s objekty ThisWorkbook a ActiveWorkbook.
Pokud současně otevřete víc sešitů, pak každý z nich vidí (a může použít) makra ze všech otevřených sešitů. Makro, ze kterého se volá ThisWorkbook, bude spolupracovat s daty toho sešitu, ve kterém je umístěno dané makro. Makro, ze kterého je volán ActiveWorkbook, bude pracovat s daty toho sešitu, který je právě aktivní. Když není sešit uveden, rozumí se ActiveWorkbook. Toto rozlišení je zásadní např. pro psaní doplňků (a samozřejmě i pro váš případ). Při jednom otevřeném sešitu ThisWorkbook a ActiveWorkbook jsou totožný objekt.citovat
#039331
avatar
Vovka, to máte pravdu, tyto dva objekty jsem až tak nevnímal. Díky moc za upozornění. Zkouším si s tím teď pohrát, a pokusama jsem zjistil, že (?) překvapivě active je porad puvodni soubor a ne ten, ktery se makrem otevre.

nedari se mi ale zaktivovat ten otevreny, mohu poprosit o radu jeste v tomto? ted mi makro bezi, ale v spusti se v materskem souboru, ne v tom otevrenem..
Dikycitovat
#039332
elninoslov
Nie, problém je myslím inde. Vy robíte novú inštanciu Excelu, teda nemôžete použiť z Vašej hlavnej inštancie Application.Run "'" + poleNazvu(c) + "'" + "!makro25"
do druhej inštancie xlApp. Musíte dať
xlApp.Run "'" + poleNazvu(c) + "'" + "!makro25"citovat
#039536
avatar
Dekuju Elninoslov.
Vypada to, že takto uz by to mohlo fungovat. ale narazil jsem na dalsi, trochu podivny problem. Normalne, kdyz mam otevrenych vic sesitu, v kazdem vidim makra z tech ostatnich. V sesitu otevrenem makrem viz vyse, ale nevidim makra z ostatnich sesitu! Da se tohle nejak nastavit? tim ze tam nejsou pristupna, nikdy se mnou pozadovane makro nedokaze spustit, protoze je v jinem souboru :(
?citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje