Renata Dankiewicz

Renata Dankiewicz Operations Manage
System Clerk

Temat: Nazwy dla wielu arkuszy w skoroszycie

Mam skoroszyt z 50-oma arkuszami, jak nadać im automatycznie nazwy - np. wrzes1, wrzes2, wrzes3..., by nie trzeba było klikać na każdy arkusz "zmień nazwę".

konto usunięte

Temat: Nazwy dla wielu arkuszy w skoroszycie

Najszybciej zrobisz to przy pomocy VBA. Wklej poniższy kod do modułu i uruchom (F5):

Sub ZmienNazwyArkuszy()
Dim Arkusz As Worksheet
Const WspolnaCzescNazwy As String = "wrzes"

For Each Arkusz In Worksheets
Arkusz.Name = WspolnaCzescNazwy & Arkusz.Index
Next Arkusz
End Sub


--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

W zmiennej nazwa ustawiamy prefix.
Numeracja jest nadawana na postawie pozycji danego arkusza w skoroszycie.


Sub nazwy()
Dim nazwa As String
Dim sh As Worksheet
nazwa = "wrzes"

For Each sh In Sheets
On Error GoTo err_h
sh.Name = nazwa & sh.Index
Next sh

Exit Sub
err_h:
Sheets(nazwa & sh.Index).Name = "temp" & CInt(Rnd() * 100)
Resume
End Sub

Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

Paweł K.:
Najszybciej zrobisz to przy pomocy VBA. Wklej poniższy kod do modułu i uruchom (F5):

Sub ZmienNazwyArkuszy()
Dim Arkusz As Worksheet
Const WspolnaCzescNazwy As String = "wrzes"

For Each Arkusz In Worksheets
Arkusz.Name = WspolnaCzescNazwy & Arkusz.Index
Next Arkusz
End Sub


--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
A kolejne uruchomienia wygenerują błąd :).

konto usunięte

Temat: Nazwy dla wielu arkuszy w skoroszycie

Sławomir Broda:
Paweł K.:
Najszybciej zrobisz to przy pomocy VBA. Wklej poniższy kod do modułu i uruchom (F5):

Sub ZmienNazwyArkuszy()
Dim Arkusz As Worksheet
Const WspolnaCzescNazwy As String = "wrzes"

For Each Arkusz In Worksheets
Arkusz.Name = WspolnaCzescNazwy & Arkusz.Index
Next Arkusz
End Sub


--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
A kolejne uruchomienia wygenerują błąd :).

Nie wydaje mie się ;-)

konto usunięte

Temat: Nazwy dla wielu arkuszy w skoroszycie

Sławomir Broda:
For Each sh In Sheets

Nie polecam używania kolekcji Sheets, gdy chcemy wykonać pętle tylko po arkuszach.
Renata Dankiewicz

Renata Dankiewicz Operations Manage
System Clerk

Temat: Nazwy dla wielu arkuszy w skoroszycie

Działa :)

wielkie dzięki
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

Paweł K.:
Sławomir Broda:
Paweł K.:
Najszybciej zrobisz to przy pomocy VBA. Wklej poniższy kod do modułu i uruchom (F5):

Sub ZmienNazwyArkuszy()
Dim Arkusz As Worksheet
Const WspolnaCzescNazwy As String = "wrzes"

For Each Arkusz In Worksheets
Arkusz.Name = WspolnaCzescNazwy & Arkusz.Index
Next Arkusz
End Sub


--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
A kolejne uruchomienia wygenerują błąd :).

Nie wydaje mie się ;-)
A proszę przestawić jedną zakładkę :).

konto usunięte

Temat: Nazwy dla wielu arkuszy w skoroszycie

Sławomir Broda:
Paweł K.:
Sławomir Broda:
Paweł K.:
Najszybciej zrobisz to przy pomocy VBA. Wklej poniższy kod do modułu i uruchom (F5):

Sub ZmienNazwyArkuszy()
Dim Arkusz As Worksheet
Const WspolnaCzescNazwy As String = "wrzes"

For Each Arkusz In Worksheets
Arkusz.Name = WspolnaCzescNazwy & Arkusz.Index
Next Arkusz
End Sub


--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
A kolejne uruchomienia wygenerują błąd :).

Nie wydaje mie się ;-)
A proszę przestawić jedną zakładkę :).

Procedura, którą podałem należy do serii szybkich, jednorazowych, doraźnych procedur, do użycia przez świadomego użytkownika. Zmieniach nazwy w jednym skoroszycie i temat zamknięty. Po co mam uruchamiać kolejny raz tę procedurę, skoro wynik działania był poprawny?
Zgodnie z Brzytwą Ockhama oraz regułą KISS, dla tego typu procedur nie dorabiam obsługi błędu, bo nie jest konieczna.

Procedura, którą podałeś zawiera obsługę błędu, jednak w tym samym przypadku (przestawienie pozycji arkusza i ponowne uruchomienie kodu) nie ma pewności, że CInt(Rnd() * 100) nie wygeneruje nam dwa razy takiej samej liczby, tak więc obsługa błedów nie zawsze zadziała dobrze. Przy jednym nie, bo jest prefix, ale jak pozmieniamy pozycję wielu arkuszy (jak szaleć, to szaleć), to już prawdopodobieństwo dubleka wzrasta.

Jeżeli już chcielibyśmy koniecznie dobrabiać obsługę błędów (co w tym przypadku moim zdaniem jest zbędne zbędne i tej wersji będę się trzymał, używamy prosty kod raz), to w procedurze pętlę ze zmianą nazw arkuszy powinniśmy uruchomić dwa razy: raz zmieniając nazwy na takie, żeby zmienić na unikalne (metoda dowolna), a drugie uruchomienie byłoby tym właściwym. Wtedy eliminujemy błąd oraz wynik zmian nazwy nie wymaga od nas już żadnych zmian (te arkusze z prefiksami trzeba będzie zmienić ręcznie).
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: Nazwy dla wielu arkuszy w skoroszycie

Jeśli pozwolicie ja zadam pytanie innego rodzaju.
Mam plik z arkuszami od styczeń do grudzień 2012 (poprawnie zapis wygląda styczeń_2012...grudzień_2012). Jak powinno wyglądać makro, które po zmianie roku w komórce A4 zmieni końcówkę nazwy wszystkich arkuszy?
W A4 mam link do listy rozwijalnej w innym arkuszu.
Z góry dziękuję za odpowiedź.
I jeszcze jeden kłopot - używam Excela 2003 - bardzo proszę o makro, które będzie działać w tej wersji i w wersji 2002 (taką mam w pracy).

konto usunięte

Temat: Nazwy dla wielu arkuszy w skoroszycie

Marek Zadęcki:
Jeśli pozwolicie ja zadam pytanie innego rodzaju.
Nie będę czekał, aż pozwolą, dam małą podpowiedź ode mnie. Po drobnych modyfikacjach można zastosować kody do zmiany nazw podane przez piszących w tym wątku.
Mam plik z arkuszami od styczeń do grudzień 2012 (poprawnie zapis wygląda styczeń_2012...grudzień_2012). Jak powinno wyglądać makro, które po zmianie roku w komórce A4 zmieni końcówkę nazwy wszystkich arkuszy?
W A4 mam link do listy rozwijalnej w innym arkuszu.
Wartość z komórki A4 aktywnego arkusza odczytamy za pomocą
Range("A4").Value

Czyli uruchamiamy makro z tego arkusza, gdzie jest to A4. Jeżeli z innego, to przed oczytaniem wartości należy dodać odwołanie do arkusza:
Worksheets("NazwaArkusza").Range("A4").Value


Przyda się też funkcja Len (sprawdziwmy długość nazwy poszczególnych arkuszy), Left (pobierzemy nazwę arkusza, ilość znaków nazwy pomniejszona o 4, bo będziemy zmieniać rok).
Z góry dziękuję za odpowiedź.
I jeszcze jeden kłopot - używam Excela 2003 - bardzo proszę o makro, które będzie działać w tej wersji i w wersji 2002 (taką mam w pracy).
Te wskazówki pozwolą napisać makro, które będzie działało również w tych starszych wersjach Excela.

--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: Nazwy dla wielu arkuszy w skoroszycie

Paweł K.:
Te wskazówki pozwolą napisać makro, które będzie działało również w tych starszych wersjach Excela.

--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office

Bardzo przepraszam - czy mógłbym prosić o kod całego makra dostosowany do moich potrzeb.
Jestem ledwie raczkującym w dziedzinie pisania makr. Moje własne dokonania nie są warte publikacji. Wciąż się uczę wyznając zasadę, że najlepiej uczyć się od fachowców na ich przykładach.
Ideałem byłby załącznik. Ale o to nie śmiem prosić - poza tym skopiowanie i umieszczenie w module makra lub Worksheet to już nie jest filozofia.
Z góry dziękuję za poświęcony czas.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

Marek Zadęcki:
Paweł K.:
Te wskazówki pozwolą napisać makro, które będzie działało również w tych starszych wersjach Excela.

--
Paweł Kiraga, piszący blog o praktycznym wykorzystaniu pakietu Microsoft Office

Bardzo przepraszam - czy mógłbym prosić o kod całego makra dostosowany do moich potrzeb.
Jestem ledwie raczkującym w dziedzinie pisania makr. Moje własne dokonania nie są warte publikacji. Wciąż się uczę wyznając zasadę, że najlepiej uczyć się od fachowców na ich przykładach.
Ideałem byłby załącznik. Ale o to nie śmiem prosić - poza tym skopiowanie i umieszczenie w module makra lub Worksheet to już nie jest filozofia.
Z góry dziękuję za poświęcony czas.
Nauka to chyba nie przyklejanie gotowego kodu? Bo o to po raz kolejny na tym forum Pan prosi.

Ps.: Proszę jeszcze czcionkę na 40 i migające kolory dodać, gdyby ktoś przez przypadek nie zauważył b i u.Sławomir Broda edytował(a) ten post dnia 08.09.12 o godzinie 11:10
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: Nazwy dla wielu arkuszy w skoroszycie

Panie Sławku,

pojęcia nie mam czemu w Panu tyle złośliwości? Czy Pan od urodzenia był geniuszem Excela?
Nie proszę dlatego, że mi się nie chce próbować (jak wynika z Pana tonu wypowiedzi).
Fizycznie nie mam czasu. Gdybym go miał - sam bym do wszystkiego dochodził.
Nie jest to forum do wynurzeń osobistych. Poprzestanę więc na tej skrótowej odpowiedzi.
Jeśli ktoś z Państwa może poświęcić swój cenny czas i podać mi pełny kod makra (dla Excela 2002) będę bardzo wdzięczny.
Jeśli nie - proszę o nie zamieszczanie złośliwych komentarzy. Jest mi przykro, że zmuszony jestem prosić o bezpłatną pomoc. Jak tylko mogę unikam tej formy. Niestety ostatnio życie zmusza mnie do bardzo szybkich decyzji i jeszcze szybszych reakcji.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

To nie złośliwość. To proste stwierdzenie faktu. Z jednej strony cały czas Pan chce się uczuć, a z drugiej cały czas chce gotowy kod. O tą sprzeczność mi chodzi.
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: Nazwy dla wielu arkuszy w skoroszycie

Nie widzę w tym żadnej "sprzeczności". Fizycznie nie mam kiedy się uczyć.
Zdaję sobie sprawę, że może to zostać odczytane jako wykręt, ale taka jest prawda. Na moje potrzeby najlepiej by było, by doba miała co najmniej 48 godzin. Nie lubię niczego odkładać na potem, jednak z konieczności muszę.
Dlatego proszę o "gotowca". Jestem przekonany, że to nie sprawi specjaliście w dziedzinie VBA żadnych problemów.
Tomasz Gryzio

Tomasz Gryzio Dyrektor
zarządzający/Trener/
Konsultant - It
School

Temat: Nazwy dla wielu arkuszy w skoroszycie

Witam,

Panie Marku proszę bardzo kod całego makra - makra z pierwszego postu autorstwa Kolegi Sławka Brody (i tutaj podkreślam, że pełne prawa do kodu i pozdrowienia lądują u Kolegi) dostosowany do Pana Potrzeb.


Obrazek


Pozdrawiam!Tomasz Gryzio edytował(a) ten post dnia 08.09.12 o godzinie 15:19
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Nazwy dla wielu arkuszy w skoroszycie

Tomasz Gryzio:
Witam,

Panie Marku proszę bardzo kod całego makra - makra z pierwszego postu autorstwa Kolegi Sławka Brody (i tutaj podkreślam, że pełne prawa do kodu i pozdrowienia lądują u Kolegi) dostosowany do Pana Potrzeb.


Obrazek


Pozdrawiam!
Kurczę, a już wisiałem na telefonie do prawnika żeby pozew pisać :(.
Co do jpg'a to gratuluję poczucia humoru :).
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: Nazwy dla wielu arkuszy w skoroszycie

Tomasz Gryzio:
Witam,

Panie Marku proszę bardzo kod całego makra - makra z pierwszego postu autorstwa Kolegi Sławka Brody (i tutaj podkreślam, że pełne prawa do kodu i pozdrowienia lądują u Kolegi) dostosowany do Pana Potrzeb.


Obrazek


Pozdrawiam!

Faktycznie pomysł z jpg nauczy mnie przepisywać bezbłędnie. Dziękuję Panie Tomaszu.

Po przetestowaniu potrzebuję jeszcze modyfikacji
1. obecnie otrzymuję wrzes_13, wrzes1_13 itd
2. chciałbym by Excel modyfikował tylko nazwy arkuszy miesięcy (od stycznia do grudnia) a pozostałe nazwy zostawiał niezmienne.
3. jak w kodzie kończącym działanie makra zawrzeć nakaz zachowywania pliku z nazwą zakończoną "_rok " (np. kadry_13.xls)
Kombinowałem z tablicą
Array={styczeń, luty, marzec, kwiecień, maj, czerwiec, lipiec, sierpień, wrzesień, październik, listopad, grudzień}

ale nie wiem jak zmienić podany przez Pana kod.
Bardzo proszę o podpowiedź. Marek Zadęcki edytował(a) ten post dnia 09.09.12 o godzinie 00:20
Tomasz Gryzio

Tomasz Gryzio Dyrektor
zarządzający/Trener/
Konsultant - It
School

Temat: Nazwy dla wielu arkuszy w skoroszycie

Panie Marku,

Spokooojnieee... - jeden temat na raz.

ad 1
Każde makro jest uzależnione od warunku początkowego (dla jakiego jest uruchamiane) - określił go Pan zdaniem:

Mam plik z arkuszami od styczeń do grudzień 2012 (poprawnie zapis wygląda styczeń_2012...grudzień_2012). Jak powinno wyglądać makro, które po zmianie roku w komórce A4 zmieni końcówkę nazwy wszystkich arkuszy?.

Czy przepisane z obrazka makro dla powyższego warunku podczas testowania generuje: obecnie otrzymuję wrzes_13, wrzes1_13 itd ?

Mam wrażenie, że przepisał Pan Makro błędnie - myląc zmienną nazwa z .Name w kodzie lub testuje Pan makro nie dla przypadku, który określił Pan wyżej.
Dla pewności proszę o wklejenie kodu, który Pan przepisał.

ad 2
Zakładam, że chodzi Panu o to, że ma Pan więcej niż 12 arkuszy w jednym skoroszycie i chciałby Pan, żeby modyfikacji nazw podlegały jedynie te, które spełniają w sensie nazwy warunek: NazwaMiesiaca_NumerRoku ?
Proszę o wklejenie fragmentu kodu, który Pan przepisał, który odpowiedzialny jest za - Uwaga(!) - zmianę nazwy każdego arkusza ze zbioru arkuszy.

ad 3
Proszę o wklejenie kodu makra, który udało się Panu nagrać przy pomocy nagrywarki kodu czyniącego na skoroszycie np Zeszyt1.xls nie mniej i nie więcej niż:
1. Zapisz jako
2. Na pulpicie
3. Z nazwą Zeszyt1_13.xls

I od tego momentu będziemy myśleć dalej.
PozdrawiamTomasz Gryzio edytował(a) ten post dnia 09.09.12 o godzinie 13:52

Następna dyskusja:

Zestawienie wielu arkuszy w...




Wyślij zaproszenie do