[ FTBlack @ 23.07.2010. 06:51 ] @
Da li je moguce i ako jeste kako uraditi, da mi celije u jednoj koloni na primjer sadrze redne brojeve stavki, a da su za te brojeve linkovani neki drugi fajlovi. I nakon toga, da li je moguce napraviti da pri otvaranju te celije se otvori i fajl koji je linkovan za nju?

Na primjer

1
2
3
4
5
6


za 1 je vezan fajl1; za 2 je vezan fajl 2; za 3 je vezan fajl3;..; I onda kad kliknem celiju u kojoj je 1, on da mi otvori ili ponudi otvaranje fajla 1; kad kliknem celiju u kojoj je 2, da mi otvori ili ponudi otvaranje fajl2...

?


edit: naso sam kako - HYPERLINK funkcija.
Novo pitanje je, kako na jednu celiju da referenciram 2 fajla?

Primjer:
1
2
3

Kad kliknem 1 da mi otvori o1.xls i p1.xls?
Hvala

[Ovu poruku je menjao FTBlack dana 23.07.2010. u 09:13 GMT+1]
[ Jpeca @ 23.07.2010. 08:54 ] @
Možeš da otvoriš oba fajla i snimiš ih kao Workspace (http://office.microsoft.com/en...ged-workspace-HP010250051.aspx). Onda u linku refernenciraj taj xlw fajl.
[ FTBlack @ 23.07.2010. 12:52 ] @
to je to, hvala.

jos me zanima jedna stvar.. postoji li mogucnost da u referenci na fajl koristim podatak iz neke od celija?

na primjer za redni broj 1, fajl koji otvaram je "1.xls", za redni broj 2, fajl koji otvaram je "2.xls". Da li postoji nacin da referencu na fajl dobijem dinamicki, odnosno napisem nesto kao "$prvaCelijaIzVrste.xls". pa bi to za prvu vrstu bilo "1.xls", za drugu "2.xls"... ?
[ Jpeca @ 23.07.2010. 14:44 ] @
Koristiš funkciju HYPERLINK. Npr formula:
Code:
=HYPERLINK("C:\My Documents\Razno\" & A2 &".xls";"TEST")

Će upisati TEST kao naziv za link i na klik otvoriti Excel radnu svesku iz foldera C:\My Documents\Razno\ čije naziv upisan u ćeliju A2



[Ovu poruku je menjao Jpeca dana 23.07.2010. u 16:15 GMT+1]
[ FTBlack @ 24.07.2010. 07:06 ] @
To je sintaksa koja mi je bila potrebna. Hvala!
[ FTBlack @ 27.07.2010. 08:44 ] @
Evo jos jednog pitanja...

Zelim da u trenutno otvorenom fajlu koristim podatak iz celije iz drugog fajla. To mogu da uradim.
Ali ja zelim da dio reference na fajl u kome je celija ciji sadrzaj zelim uzeti, dolazi iz podataka koji su u celijama mog fajla.

Na primjer:
=HYPERLINK("C:\Documents and Settings\Korisnik\Desktop\P "&C3&C4&"01.xls","LINK").

Zelio bih na isti nacin da izvucem podatak iz celije u eksternom fajlu, a ne da pravim link ka eksternom fajlu.

Obicno linkovanje na fajl mi radi, ali u njemu nikako da natjeram referencu na fajl, dinamicki kreiranu iz celija da proradi...
[ Jpeca @ 27.07.2010. 10:38 ] @
Nije mi baš jasno tvoje pitanje, ali evo načelnog odgovora
Referenca na ćeliju iz druge radne sveske (koja nije otvorena) je Fascikla + Naziv radne sveske u uglastim zagradma + naziv lista iz te radne sveske+ znak ! + adresa ćelije koja se referencira. Npr.
Code:
='C:\Temp\[Test.xls]Sheet1'!$A$5

Ovakvu referencu možeš koristiti u funkcijama i formulama.
[ FTBlack @ 27.07.2010. 10:58 ] @
Prije svega, veliko hvala na pomoci Predraze.

Sto se pitanja tice...
Jasno je meni kako da referenciram celiju iz nekog drugog fajla( ti kazes radne sveske, nadam se da mislimo na isto ).
Ono sto ja zelim je sledece:
Kako da napisem referencu na radnu svesku, ako zelim da ime sveske, u toj referenci, kreiram od teksta koji mi se nalazi u celijama sveske u kojoj sam vec.


Na primjer:
Radne sveske su mi u folderu C:\temp\
ako u otvorenoj radnoj svesci imam celiju c3 u kojoj je tekst "marko", a u celiji c4 je tekst "markovic", ja zelim da u celiji d5 izvucem podatak iz celije a5 iz radne sveske markomarkovic.xls. Ali ne zelim da pisem apsulutnu referencu ='c\temp\[markomarkovic.xls]Sheet1'!$A$5 , vec zelim da apsolutno pisem dio reference koji se tice foldera "c:\temp\" , a dio reference "markomarkovic.xls", zelim da preuzmem iz celija c3 i c4. Nesto kao "C:\temp\"&c3&c4&".xls".

U funkciji HYPERLINK sam uspjesno koristio ovakvu sintaksu..
[ Jpeca @ 27.07.2010. 12:37 ] @
Moze se postići sa INDIRECT funkcijom tako što joj proslediš tekst reference kao argument.
Code:
=INDIRECT("["&C3&C4&"]Sheet2!B5")


Problem je što u tom slučaju radna sveska (workbook) iz koje vučeš podatke mora biti otvorena. Na internetu se mogu naći nadgradnje koje prevazilaze ovaj nedostatak INDIRECT funkcije

Npr ovde imaš kod za PULL funkciju koja zamenjuje INDIRECT u ovom pogledu: http://groups.google.com/group...functions/msg/e249f6c074a3adfd

Nju možeš da dodaš u korisničke funkcije.
[ neptuncokg @ 27.07.2010. 18:45 ] @
Ja bih samo jedno malo pojasnjenje na ovu interesantnu temu. Ako sam dobro razumeo, u nekoj proceduri mozemo da stavimo cod:
naprimer - ActiveSheet.Range("A1").Value ='C:\Temp\[Test.xls]Sheet1'!$A$5 ...(JPecin post)
I da u trenutno aktivnom sheetu, aktivne radne sveske, u celiji A1 - preuzmemo vrednost sa C diska, foldera Temp, radne sveske Test, Sheeta1, celije A5 ???
A sta je sa apostrofom (') ispred C i posle Sheet1 (apostrof u proceduri cod pretvara u obican tekst - napomenu) ?
Izvinjavam se unapred ako nisam dobro razumeo o cemu se zapravo radi. Pozdrav
[ Jpeca @ 27.07.2010. 20:31 ] @
Ovde je bilo reči o formuli koja bi vraćala vrednost ćelije iz druge radne sveske, a ne o načinu kako se to realizuje u VBA kodu.

Realizacija u VBA kodu nije problematična.
Ukoliko ti odgovara da je radna sveska iz koje se preuzima vrednost otvorena, koristiš standardne metode Range/Cells. (Pri tome otvorena radna sveska ne mora da se prikazuje korisniku, može biti skrivena)

Code:
Dim wbk As Workbook
 Set wbk = Application.Workbooks.Open(Filename:="c:\Temp\Test.xlsx")

 Vrednost = wbk.Sheets("Sheet1").Range("B5").Value 


Ako hoćeš da pročitaš vrednost iz zatvorene radne sveske, pogledaj kod iz prethodnog odgovora. Videćeš da ključna funkcija ExecuteExcel4Macro. Najbolje da u tom slučaju napraviš svoju funkciju koju ćeš pozivati po potrebi. Vidi npr. rešenje ovde http://spreadsheetpage.com/ind...et_a_value_from_a_closed_file/


U primeru ćeš takođe videti ono što je tebe mučilo - jedosturki navodnik (apostrof) stavlja se između dvostrukih navodnika u kodu da ne bi bilo zabune.

Naravno funkcija GetValue sa navedenog linka može se pozvati i direktno iz formule radnog lista, ne mora iz VBA koda.

Mozda još bolje rešenje je korišćenje ADO konekcije za čitanje iz zatvorene radne sveske http://www.ozgrid.com/forum/showthread.php?t=17158


[Ovu poruku je menjao Jpeca dana 27.07.2010. u 22:04 GMT+1]
[ neptuncokg @ 27.07.2010. 21:59 ] @
Sad i ja vidim o cemu se radi. Primer na "Ozgridu" je zaista dobar, ali pre-naporan (za mene).
Meni konstano treba u proceduri, uvek jedan isti podatak - value, koji se nalazi na : "C:\ARHIVA\Plate.xls\Sheets("Baza").Range("D11").Value" - daleki NEAKTIVAN folder-podatak
Ja bih da preuzmem taj podatak - value, u trenutno aktivan dokument - aktivan sheet - celiju A1. Naprimer:
ActiveSheet.Range("A1").Value = "C:\.........Range("D11").Value
Moze li u mom slucaju neka skracena verzija da odradi posao, ili da pre-pre-radjujem Ozgridov primer ?
Hvala unapred. Pozdrav
[ Jpeca @ 28.07.2010. 07:44 ] @
Prvi primer koji sam naveo koji koristi ExecuteExcel4Macro (da ponovim link http://spreadsheetpage.com/ind...et_a_value_from_a_closed_file/)
je krajnje jednostavan za upotrebu.
Prekopiraj funkciju GetValue takva kakva je kod sebe u modul i onda je pozovi iz koda:
Code:
ActiveSheet.Range("A1").Value = GetValue("C:\Arhiva", "Plate.xls", "Baza", "D11")
[ neptuncokg @ 28.07.2010. 11:46 ] @
Hvala na odgovoru.
Sve sam uradio po uputstvu, ali na zalost ne radi. Evo u prilogu kako izgleda kad "pukne" makro. Pozdrav
[ Jpeca @ 28.07.2010. 16:11 ] @
Pošto je funkcija deklarisana kao Private onda mora biti u istom modulu kao i procedura iz koje je pozivaš.
[ neptuncokg @ 28.07.2010. 18:26 ] @
Reseno ! Hvala i pozdrav.