Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vba otwieranie innego skoroszyu

2,460 views
Skip to first unread message

martels

unread,
Jan 16, 2008, 2:35:40 AM1/16/08
to
Witam,

W jakis sposob zrealizowac w VBA w Excelu?

Jestem w skoroszycie test1 w arkuszu2

Musze odwolac sie na chwile do skoroszytu test2 do arkusza1 zaczytac dane do
tabeli (w pamieci) i wrocic do
skoroszytu test1 arkusz2

Prosze o podpowiedz jak zrobic takie przeskoki miedzy arkuszami.

dzioback


Brünner

unread,
Jan 16, 2008, 3:20:06 AM1/16/08
to
Użytkownik "martels" <m...@inter.pl> napisał w wiadomości
news:fmkchk$621$1...@nemesis.news.tpi.pl...

dim oWrk1 as Excel.Workbook
dim oWrk2 as Excel.Workbook
dim oArk1 as Excel.Worksheet
dim oArk2 as Excel.Worksheet
dim oZakres as Excel.Range

Set oWrk1 = Workbooks("Zeszyt1")
Set oWrk2 = Workbooks("Zeszyt2")
Set oArk1=oWrk1.Sheets("Arkusz2")
Set oArk2=oWrk2.Sheets("Arkusz1")
Set oZakres=oArk2.Range("A1:D6")

pzdr

brunner


Jędrek

unread,
Jan 16, 2008, 3:22:21 AM1/16/08
to
Witam
Jeśli masz oba skoroszyty odtworzone to jest takie polecenie Activate
Wtedy Excell ustawia odpowiedni skoroszyt jako aktywny.
Tym samym poleceniem aktywujesz interesujący Cię arkusz.
np: Workbooks("Zeszyt1").Activate
Pozdrwiam

Użytkownik "martels" <m...@inter.pl> napisał w wiadomości
news:fmkchk$621$1...@nemesis.news.tpi.pl...

Xanta

unread,
Jan 16, 2008, 4:04:00 PM1/16/08
to
Użytkownik "martels" <m...@inter.pl> napisał w wiadomości
news:fmkchk$621$1...@nemesis.news.tpi.pl...

A ja robię w tym celu formułę tablicową w ukrytym arkuszu do odpowiedniego
skoroszytu. Podczas wstawiania formuly nast. natychmiastowe pobranie danych,
otem mozna ją usunąć! Otwieranie skoroszytu jest bez sensu, bo zabiera
wiecej czasu!

martels

unread,
Jan 17, 2008, 6:18:21 AM1/17/08
to
> Wtedy Excell ustawia odpowiedni skoroszyt jako aktywny.
> Tym samym poleceniem aktywujesz interesujący Cię arkusz.
> np: Workbooks("Zeszyt1").Activate
> Pozdrwiam
>

witam.
Dzieki za pomoc ale gdy wpisuje w arkuszu

Workbooks("slowniki").Activate

(slowniki to nazwa drugiego skoroszytu do kotrgo chce sie odwloac. Jest
oczywiscie uruchomiony.)

to przy uruchamianiu pojawia mi sie komunikat:
Run-time error '9'
Subscript out of range

Moze jeszcze jakies wskazowki?

martels

Brünner

unread,
Jan 17, 2008, 8:34:23 AM1/17/08
to
Użytkownik "martels" <m...@inter.pl> napisał w wiadomości
news:fmne16$iu2$1...@nemesis.news.tpi.pl...

Sprawdź, czy dobrą nazwę wpisujesz. Może nazywa się "slowniki.xls" na
przykład...

pzdr

brunner


pxd74

unread,
Jan 22, 2008, 5:37:00 AM1/22/08
to
Użytkownik "martels" <m...@inter.pl> napisał w wiadomości
news:fmkchk$621$1...@nemesis.news.tpi.pl...

Nie musisz otwierać tego drugiego skoroszytu. Wystarczy, że użyjesz metody
ExecuteExcel4Macro

wartość = ExecuteExcel4Macro("'D:\Moje
dokumenty\[Zeszyt2.xls]Arkusz1'!R1C1")

Musisz uważać, żeby odwoływać się do komórek w notacji R1C1 (angielski
odpoweidnik notacji W1K1).


--
Pozdrowienia
pxd74

ML

unread,
Jan 22, 2008, 7:09:14 AM1/22/08
to
> Nie musisz otwierać tego drugiego skoroszytu. Wystarczy, że użyjesz
> metody ExecuteExcel4Macro
> wartość = ExecuteExcel4Macro("'D:\Moje
> dokumenty\[Zeszyt2.xls]Arkusz1'!R1C1")

Nie znalem tej metody... Czy na pewno jest lepsza niz bezposrednie
odwolanie tablicowe:
{=D:\Moje dokumenty\[Zeszyt2.xls]Arkusz1'!$B$2:$C$3} -bo to przeciez
prostsze... :)

pxd74

unread,
Jan 22, 2008, 8:29:21 AM1/22/08
to
Użytkownik "ML" <ML.WY...@gazeta.pl> napisał w wiadomości
news:fn4mdn$a9j$1...@news.onet.pl...


No, ale dlaczego wykorzystujesz tutaj formułę tablicową, bo nie rozumiem.

Jeśli chodzi Ci o rozwiązanie przedstawione przez użytkownika Xanta to mój
sposób ma taką przewagę, że nie używa komórek pomocniczych. Nie trzeba
utrzymywać dodatkowego ukrytego arkusza, przeliczać tej formuły za każdym
razem czy używać dodatkowych instrukcji do wpisywania i usuwania tej
formuły.

Oczywiście te różnice to właściwie nie mają dużego znaczenia i tak naprawdę
co jest lepsze zależy od indywidualnych odczuć danego programisty.


--
Pozdrowienia
pxd74

ML

unread,
Jan 23, 2008, 4:22:05 PM1/23/08
to
>> Nie znalem tej metody... Czy na pewno jest lepsza niz bezposrednie
>> odwolanie tablicowe:
>> {=D:\Moje dokumenty\[Zeszyt2.xls]Arkusz1'!$B$2:$C$3} -bo to przeciez
>> prostsze... :)
> No, ale dlaczego wykorzystujesz tutaj formułę tablicową, bo nie rozumiem.

Ano po to zeby jednym linkiem odczytac dowolny zakres danych bez otwierania
zrodlowego skoroszytu -szybkosc b. duza! Oczywiscie kazdy mysli i robi
swoje, ale nie wmawiajcie mi, ze otwieranie innych plików excela w celu ich
odczytywania jest dobrym sposobem... Z W-wy do Zakopca mozna jechac tez
przez Szczecin, jezeli komus zalezy na widoczkach....

> Jeśli chodzi Ci o rozwiązanie przedstawione przez użytkownika Xanta to
> mój sposób ma taką przewagę, że nie używa komórek pomocniczych. Nie
> trzeba utrzymywać dodatkowego ukrytego arkusza, przeliczać tej formuły
> za każdym razem czy używać dodatkowych instrukcji do wpisywania i
> usuwania tej formuły.
> Oczywiście te różnice to właściwie nie mają dużego znaczenia i tak
> naprawdę co jest lepsze zależy od indywidualnych odczuć danego
> programisty.

OK, myslalem, ze niezle by bylo te dane zatrzymac gdzies w arkuszu... ale
skoro nie, to Twoj pomysl jest OK i wielkie dzieki za neigo, bo go nie
znałem. Pozdrawiam

pxd74

unread,
Feb 25, 2008, 6:27:57 AM2/25/08
to
ML <ML.WY...@gazeta.pl> napisał(a):

> >> Nie znalem tej metody... Czy na pewno jest lepsza niz bezposrednie
> >> odwolanie tablicowe:
> >> {=D:\Moje dokumenty\[Zeszyt2.xls]Arkusz1'!$B$2:$C$3} -bo to przeciez
> >> prostsze... :)
> > No, ale dlaczego wykorzystujesz tutaj formułę tablicową, bo nie rozumiem.
>
> Ano po to zeby jednym linkiem odczytac dowolny zakres danych bez
otwierania
> zrodlowego skoroszytu -szybkosc b. duza! Oczywiscie kazdy mysli i robi
> swoje, ale nie wmawiajcie mi, ze otwieranie innych plików excela w celu
ich
> odczytywania jest dobrym sposobem... Z W-wy do Zakopca mozna jechac tez
> przez Szczecin, jezeli komus zalezy na widoczkach....

Chodziło mi o to, że zamiast formuły tablicowej możesz wpisać zwykłą formułę
w jedną komórkę:

=D:\Moje dokumenty\[Zeszyt2.xls]Arkusz1'!B2

i skopiowiać ją do innych komórek. Ten sposób ma tą przewagę, że nie znać
dokładnych rozmiarów zakresu, a po drugie w każdej chwili możesz usunąć
tylko część danych - wprzypadku tablicy możesz usunąć tylko całą tablicę.

--
Pozdrowienia
pxd74


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

0 new messages