Zbigniew Drozdowski

Zbigniew Drozdowski Kierownik, Poczta
Polska S.A.

Temat: makro wstawiające kod makra w innym pliku

Mam makro, które otwiera wskazany przeze mnie skoroszyt i dokonuje w nim pewnych zmian, Czy jest możliwe, a jeżeli tak, to jaki jest kod na wstawienie w otwieranym pliku kodu makra w module Arkusza1?
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: makro wstawiające kod makra w innym pliku

Jest taka możliwość, choć jeżeli plik jest zapisany jako xlsx, to wyklucza to dodanie doń kodu VBA.
Maciek Gluszak

Maciek Gluszak McGluszak
MacroIndustries

Temat: makro wstawiające kod makra w innym pliku

Jeżeli jesteś pewien, że chodzi o kod w module arkusza to odpowiedz sobie na pytanie, czy nie lepiej mieć ten "arkusz1" z gotowym kodem w pliku w którym odpalasz makro, przenieść go (łącznie z kodem się przeniesie) do pliku docelowego i podmienić zawartość arkusza (tzn. wziąć zawartość oryginalnego "arkusz1" i przekleić do tego nowego, z kodem) a nie "programatically" zmieniać sam kod w arkuszu.

Jest to jakieś 800x prostsza operacja niż to o co pytasz i nie wymaga uprawnień "programmatic access"
Zbigniew Drozdowski

Zbigniew Drozdowski Kierownik, Poczta
Polska S.A.

Temat: makro wstawiające kod makra w innym pliku

Ja wiem, że tak można. Chodzi jednak o to, że plików takich do których miałoby być przypisane makro jest wiele. Codziennie są nowe i za każdym razem muszę wejść i wstawiać ten kod. Dlatego pomyślałem, że zrobiłoby to za mnie makro. Plik jest zapisany jako xls. Czy to wyklucza możliwość wstawiania makra?
Maciek Gluszak

Maciek Gluszak McGluszak
MacroIndustries

Temat: makro wstawiające kod makra w innym pliku

Stary, nie rozumiesz co piszę.
Łatwiej Ci napisać makro które podmienia arkusz, niż makro które pisze kod w arkuszu.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: makro wstawiające kod makra w innym pliku

Przecież możesz zapisać kod w pliku makr osobistych i traktować każdy plik jako potencjalny magazyn danych przy użyciu tego kodu. Co więcej możesz napisać sobie dodatek i mieć go dostępnego na tyle maszyn ile chcesz. Kod nie musi się wcale zawierać w pliku z danymi (co zwiększa niebezpieczeństwo modyfikacji danych źródłowych).

Pytałeś wszakże czy można dodać kod, kodem - tak można. Generalnie takiej metody używa się przy modyfikacji plików z kodem, ale wolę wydać nowy dodatek (nową edycje uwzględniającą zmiany) niż modyfikować komuś plik.
Zbigniew Drozdowski

Zbigniew Drozdowski Kierownik, Poczta
Polska S.A.

Temat: makro wstawiające kod makra w innym pliku

Maciek G.:
Stary, nie rozumiesz co piszę.
Łatwiej Ci napisać makro które podmienia arkusz, niż makro które pisze kod w arkuszu.
Rzeczywiście nie zrozumiałem Ciebie. Zastanawiam się tylko czy w związku z tym co napisałeś, jest możliwość,aby makro najpierw skopiowało dane do arkusza w moim pliku, a później podmieniło arkusz na ten z którego zostały skopiowane dane. Jeżeli jest to możliwe to będę wdzięczny za napisanie części kodu, która byłaby odpowiedzialna za podmianę arkusza.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: makro wstawiające kod makra w innym pliku

Pan kierownik sobie nagra wpierw makro, a potem podda go modyfikacji celem oczyszczenia śmieci, które zostaną nagrane przy okazji tegoż automatu.

Na forum nie możemy ci podać kompletnego kodu bez dostępu do plików źródłowych (no bo jaki zakres danych, który arkusz, jaki skoroszyt docelowy...)
Zbigniew Drozdowski

Zbigniew Drozdowski Kierownik, Poczta
Polska S.A.

Temat: makro wstawiające kod makra w innym pliku

Oskar S.:
Pan kierownik sobie nagra wpierw makro, a potem podda go modyfikacji celem oczyszczenia śmieci, które zostaną nagrane przy okazji tegoż automatu.

Na forum nie możemy ci podać kompletnego kodu bez dostępu do plików źródłowych (no bo jaki zakres danych, który arkusz, jaki skoroszyt docelowy...)
Dzięki za mobilizację i uwagi na innym forum. Tak jak pisałem wyszło coś takiego
For i = 1 To .SelectedItems.Count
Set wkb2 = Workbooks.Open(.SelectedItems(i)) 'TU wytępuje ostatni raz
With wkb1.Sheets(tblArkusze(i - 1))
.Visible = True
End With
With wkb2.Sheets(1)
.AutoFilterMode = False
.Columns("A:N").Copy wkb1.Sheets(tblArkusze(i - 1)).Columns("A:A")
wkb1.Sheets(tblArkusze(i - 1)).Copy Before:=wkb2.Sheets(1)
End With
With wkb2.Sheets(2)
.Delete
End With
With wkb2.Sheets(1)
.Name = "Lista odczytowa"
End With
JTen post został edytowany przez Autora dnia 28.02.17 o godzinie 22:46

Następna dyskusja:

Makro- kopia/zapisanie i wy...




Wyślij zaproszenie do