How to distribute VBA macros inside company?

Anonimowe
2017-06-27T15:11:42+00:00

I'm writing a set of macros that we want to be able to use in various *.xlsm files. We will be updating our 'library' as the time goes and we need the changes to propagate to users (we can copy files manually, that's not an issue). There is no common structure for our depository so different users can have different paths to where they store the files. Some users use newer versions of Office (2010 is the oldest) - it needs to work in all cases.

So based on those requirements I created an *.xlam Excel Add-In that has a module with macros in it. By doing so those macros are now available in any Excel files I open without the need to set them up. Whenever I have a new version of macros I replace the *.xlam file. The Add-In is placed in the c:\Users\USER_NAME\AppData\Roaming\Microsoft\AddIns\ folder.

The problem is that if my co-worker copies the *.xlam file on their machine Excel is searching for the file in wrong folder - it uses MY username in the directory path rather than his. As if the path to the *.xlam file would be hardcoded even though it's placed inside Microsoft\AddIns folder.

How can I force it to stop using hardcoded path and instead search for the file in current user's AppData\Roaming\Microsoft\AddIns?

Alternatively, we have a depository where we store the files and have a system env var set for the root of depot. I could use that location instead but I see no way to point Excel to a path using env var.

Alternative 2: I'm opened to a totally different way of distributing macros.

Microsoft 365 i Office | Excel | Do użytku domowego | Windows

Pytanie zablokowane. To pytanie zostało zmigrowane ze społeczności pomocy technicznej firmy Microsoft. Możesz zagłosować, czy pytanie jest pomocne, ale nie możesz dodawać komentarzy ani odpowiedzi, ani też śledzić pytania.

Komentarze: 0 Brak komentarzy

Odpowiedzi: 5

Sortuj według: Najbardziej pomocne
  1. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2017-06-28T12:16:06+00:00

    No to jeszcze raz i coś ponad to.

    Możesz dodać do folderu XLSTART pliki oraz linki do plików.

    Tak to wygląda u mnie:

    Katalogi nie są brane pod uwagę (w nich pliki nie są uruchamiane przez Excela).

    Ta metoda nie jest w 100% dobra ponieważ link musi mieć swoje odzwierciedlenie w prawdzie, jeśli prowadzi do ścieżki na zasobach udostępnionych (np intranecie). Jeśli plików nie będzie to link może zostać usunięty i trzeba by go sukcesywnie odnawiać.

    Możesz zastosować np dodatek jaki napisałem, w którym wybiorczo (przy wyszukaniu po nazwie) uruchomisz dane rozwiązanie: Kontener na dodatki. Brak powiązania nie będzie skutkował wywaleniem linku. Jest to dla mnie dużym ułatwieniem bo napisałem ok 160 dodatków i ciężko by było uruchamiać je wszystkie w każdej sesji aplikacji. Warunki jego otrzymania opisałem w pow linku.

    Czy ta odpowiedź była pomocna?

    1 osoba uznała tę odpowiedź za pomocną.
    Komentarze: 0 Brak komentarzy
  2. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2017-06-29T14:34:40+00:00

    Super - chcecie się/swoją pracę automatyzować, to polecam się.

    Pozdrawiam.

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  3. Anonimowe
    2017-06-29T13:43:41+00:00

    Dziękuję! Problem rozwiązany.

    Dla potomnych: stworzyłem skrót w XLSTART i w opcjach skrótu użyłem zmiennej środowiskowej do wskazania roota repozytorium.

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  4. Anonimowe
    2017-06-28T11:29:16+00:00

    Tak też próbuję to zrobić.

    Rozwiązanie z ręcznym otwieraniem dodatku przy każdym otwieraniu pliku jest czymś na co nie możemy się zgodzić.

    Próbowałem już wcześniej stworzyć skrót w katalogu AddIns ale Excel nie widzi pliku wskazanego w ten sposób.

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy
  5. Oskar Shon 49,336 Punkty reputacji Moderator wolontariuszy
    2017-06-27T17:40:40+00:00

    Tomasz, polskie forum, to też pozwolę sobie odpowiedzieć w naszym języku.

    Jeśli chcesz dystrybuować makra, to należy zapisać je jako dodatek. W tym przypadku udostępnić pliki podpinając je w konfiguracji, wskazując miejsce przechowywania.

    Dodatek po otwarciu robi kopię na czas otwarcie w komputerze użytkownika, a więc jeśli masz zasoby współdzielone to będzie chodzić.

    Dodatkowo do katalogu AddIns folder możesz wykonać link, do dodatku a nie kopię pliku.

    Natomiast jeśli aplikacja nie znajdzie pliku po linku to będzie wnioskować o jego usunięcie (bo nie ma rozwiązania).

    Czy ta odpowiedź była pomocna?

    Komentarze: 0 Brak komentarzy