Microsoft Office Excel
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Excelu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Složeno kopiranje datoteka

Nivo:  NIVO 4 - klinite za objašnjenje


Klasična teza po kojoj VBA predstavlja logičan nastavak Excela i u ovom primeru dobija potvrdu. Pogledajte kako se rešava složena distribucija sadržaja iz jedne u više radnih svezaka.

U jednoj diskusionoj grupi sam pronašao sjajnu raspravu o pripremi veće količine datoteka za distribuciju saradnicima. Problem je sledeći: postoji složena radna sveska sa mnogo listova. Svakom saradniku bi trebalo uputiti novu radnu svesku, ali tako da se u njoj nalazi jedan zajednički radni list, zatim radni list koji se odnosi na saradnika i (što je poseban problem) sadržaj modula sa nekim namenskim makroima. Ako se ovo radi ručno, potroši se prilično vremena, pa ćemo videti kako se proces može automatizovati.

Rešenje problema vidite u sledećem makrou. Da bismo pojednostavili primer, napravićemo pripremne sadržaje. U polaznoj radnoj svesci postoje radni listovi po imenima: Tabela, Pera, Mika i Laza; makroi koje treba preneti se nalaze u modulu pod generičkim imenom Module1. Ubacićemo još jedan list po imenu Spisak, u čiju kolonu A (počev od A1) ćemo upisati tačna imena posebnih radnih listova koje treba izvesti. Još jedna prečica (zbog jednostavnijeg koda) je ona u kojoj For...Next petlja ima unapred poznati broj ciklusa. Da se u ciljne radne sveske ne bi preneo i ovaj makro, koji će ostati u polaznoj radnoj svesci, potrebno je staviti ga u novi modul (Insert / Module u VBE), pazeći da mu ime bude drugačije od Module1.

Sub Distribucija()

' Brisanje stare instance modula na disku, ako ona postoji

On Error Resume Next
Kill ("c:\modul.bas")
On Error GoTo 0

' izvoz modula na disk
ActiveWorkbook.VBProject.VBComponents("Module1") _
    .Export ("c:\modul.bas")

' poznati broj ciljnih datoteka
For i = 1 To 3
    ' čitamo buduće ime datoteke
    ImeFajla = Sheets("spisak").Range("A" & i).Value

    ' prenosimo samo tabelu i odabrani list
    ' nova radna sveska postaje aktivna
    Sheets(Array("Tabela", ImeFajla)).Copy

    ' uvozimo modul u novu adnu svesku
    Application.VBE.ActiveVBProject.VBComponents.Import ("c:\modul.bas")

    ' snimamo i zatvaramo ciljnu datoteku
    ' polazna radna sveska postaje aktivna
    ActiveWorkbook.SaveAs Filename:=ImeFajla

    ActiveWorkbook.Close
Next i

' brišemo modul sa diska
Kill ("c:\modul.bas")

End Sub

Makro će najpre izvesti radni modul u posebnu datoteku (c:\modul.bas na disku), pa u petlji formirati novu radnu svesku od odabranih radnih listova (primetite red Sheets.Array(...).Copy), uvesti u nju modul sa diska, a potom je snimiti i zatvoriti pod imenom koje odgovara imenu saradnika. Ciljne datoteke ćete pronaći u istom folderu gde se nalazi i polazna datoteka. Naravno, ovaj prosti kostur možete dodatno "iskomplikovati", posebno programirajući ime ciljne datoteke, automatizujući unapred nepoznati broj radnih listova za izvoz (npr. od trećeg do poslednjeg lista, koliko god da ih ima) i slično.

 

  (C) 2000-2009 Praktikum na Webu

PC 71


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.