Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Excel VBA] różne referencje

Ninek007 17 Sie 2011 20:59 2181 2
  • #1 17 Sie 2011 20:59
    Ninek007
    Poziom 7  

    Witam.

    Kiedyś uzyskałem Waszą pomoc, więc liczę na kolejną. ;)

    Nie jestem biegły w programowaniu, ale staram się sobie jakoś radzić, jednak problem na który się natknąłem przerasta moje umiejętności.

    W pracy dorobiłem sobie makro w excelu, które w określony sposób wysyła dane do pliku Word'a (za pomocą schowka i zakładek w dokumencie worda).
    Wszystko byłoby dobrze gdyby nie fakt, że ten arkusz (umieszczony w naszej wewnętrznej sieci) otwierany jest przez różnych użytkowników mających zainstalowane różne wersje MS Office'a.
    Korzystamy z Office'a 97, 2003 i 2007.
    Problem leży w referencjach.
    Nawet jeśli otworzę plik w wersji "najniższej" i zaznaczę odpowiednią referencję do worda, to po otwarciu tego pliku na komputerze z zainstalowaną "wyższą" wersją office'a, wszystko działa, ale niestety po zapisaniu zaktualizowanego arkuszu referencja zostaje automatycznie zmieniona na "wyższą" wersję worda. Ponowne uruchomienie tego makra na komputerze z zainstalowanym Excelem 95, skutkuje oczywiście błędem (brak referencji do "wyższego" worda).
    Mam nadzieję, że problem opisałem czytelnie.

    Myślę, że rozwiązaniem byłoby rozszerzenie programiku o polecenia, które na starcie ustawiałyby odpowiednią referencję - odpowiednio do zainstalowanej wersji office'a. Nie wiem jak to zrobić, więc liczę na Waszą pomoc/podpowiedź.
    Z góry dziękuję.

  • #2 18 Sie 2011 08:41
    adamas_nt
    Moderator Programowanie

    W Internecie aż roi się od przykładów :) Pierwszy z brzegu odnośnik po wpisaniu "vba references" prowadzi do stronki Link z gotowym makrem usuwającym "missing references". Jest w nim sporo przydatnych poleceń.
    W Twoim przypadku musiałbyć zapuścić pętlę we wszystkich używanych wersjach Excela i sczytać id w oknie immediate (Ctr+g) Tu przykład z jakimś AcrobatCośTam
    [Excel VBA] różne referencje

    Wg mnie procedura powinna wyglądać tak:
    1) usuwasz wszystkie "missing"
    2) w zależności od wersji Excela (w E2k7 Val(Application.Version)=12 ) sprawdzasz, czy referencja o GUID właściwym dla danej wersji jest w kolekcji i jeśli nie, dodajesz

  • #3 18 Sie 2011 10:45
    Ninek007
    Poziom 7  

    Dzięki za odpowiedź.
    Przeglądałem strony, na stronę do której podałeś link też trafiłem. Problem w tym, że dla mnie to zbyt skomplikowane. Tak jak pisałem nie jestem biegły, po prostu taki "samouczek" coś tam sobie od czasu do czasu prostego utworzę, coś w necie znajduję i próbuję przerobić na swoje potrzeby itp.
    Już czegoś o moim problemie (w tzw. "międzyczasie") się dowiedziałem - lepiej zmienić sposób na późne wiązanie - omija się tego typu problemy (o "wczesnych" i "późnych" wiązaniach w ogóle nie miałem pojęcia).

    VBA praktycznie nie znam (kiedyś przed wieloma laty nieco bawiłem się Turbo Pascalem - więc teraz VBA to dla mnie zupełnie obcy twór).
    Więc zmieniam swój kod.
    Dodałem do swojego kodu:
    Set oWord = CreateObject("Word.Application")
    oWord.Documents.Open Filename:= Nazwa_pliku

    Teraz głowię się jak do określonej zakładki w dokumencie worda wpisać wartość ze zmiennej z mojej procedury w Excelu, ale szukam rozwiązania. ;)

    EDIT:

    Już chyba rozwiązałem swój problem. Dzięki za zainteresowanie.

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo