Elektroda.pl
Elektroda.pl
X

Search our partners

Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Eksport z Excela do Pdf. Jak zapisywać wybrane arkusze

pmatyjapm 05 Dec 2021 20:47 270 9
  • #1
    pmatyjapm
    Level 2  
    Mam Makro, które pobierając dane z Arkusza zapisuje aktywny arkusz w lokalizacji określonej w komórce arkusza pod nazwą również pobieraną z komórki. Ograniczeniem jest to, że zapisywany jest aktywny arkusz. Co dopisać, aby do pdf były zapisywane arkusze, których nazwy również byłyby pobierane z komórki wskazanego arkusza?
    Code: vbscript
    Log in, to see the code
  • #2
    michson1
    Level 10  
    Do komórki B13 dodaj nazwę exportowanego arkusza. Kod nie zawiera obsługi błędów w przypadku wystąpienia znaków niedozwolonych w nazwie pliku lub braku wystąpienia arkusza o takiej nazwie. Niemniej użyj tego kodu:
    Code: vbscript
    Log in, to see the code
  • #3
    pmatyjapm
    Level 2  
    Super, dzięki. Działa!
    A jeżeli chciałbym wyeksportować dokument składający się z więcej niż 1 arkusza?
    Nie potrafię tego rozwiązać... :-(
  • #4
    michson1
    Level 10  
    To wtedy użyj tego kodu:
    Code: vbscript
    Log in, to see the code
    W wyskakującym oknie wybierz zakres, w którym będziesz miał wpisane nazwy Arkuszy do wyeksportowania.
  • #5
    kinggustav
    Level 26  
    Zastosowałem kilka razy wskazywanie zakresów, ale mi się nie spodobało. Obecnie unikam tego jak ognia. Czy nie byłoby lepiej przygotować gdzieś (w określonym, stałym miejscu - przynajmniej początek) tablicę nazw arkuszy do wyeksportowania i nią się posłużyć? W ostateczności można przecież zbudować taką tablicę dynamicznie, po otwarciu skoroszytu.
  • #6
    pmatyjapm
    Level 2  
    Cała zabawa polega na tym, że skoroszyt ma być szablonem dokumentów systemowych. Chodzi o to , żeby każda osoba tworząca dokument określiła w komórkach arkusza EXPORT lokalizację i nazwę oryginalnego pliku, lokalizację i nazwę kopii, którą udostępnia użytkownikom, oraz lokalizację i nazwę dokumentu nieedytowalnego do wykorzystania przez dział produkcyjny (np.instrukcja). O ile kopie plików w formatach xlsm mam rozpracowane, o tyle kłopot sprawia zapis dokumentów w pdf, jeżeli są złożone z kilku arkuszy (wiele stron). Na co dzień korzystam z takiego makra:
    Code: vbscript
    Log in, to see the code


    Nie umiem "przetłumaczyć " kodu "Sheets(Array("STR2", "RAPORT")).Select", aby nazwy arkuszy pobrał z komórki wskazanego arkusza.
  • Helpful post
    #7
    Maciej Gonet
    VBA, Excel specialist
    Zakładając, że komórka A4 zawiera nazwę "STR2", a komórka B4 nazwę "RAPORT", to tak:
    Code: vbscript
    Log in, to see the code
    Jeśli te nazwy są w innym arkuszu niż aktywny, to można dodać kwalifikator.
  • #8
    Prot
    Level 38  
    pmatyjapm wrote:
    skoroszyt ma być szablonem dokumentów systemowych. ... O ile kopie plików w formatach xlsm mam rozpracowane, o tyle kłopot sprawia zapis dokumentów w pdf

    Jeśli jest tak jak piszesz :?: to z praktycznego doświadczenia :idea: proponuję poświęcić więcej uwagi na dopracowanie prawidłowego wyglądu tego "szablonu wydruku" (jednego z danych wielu arkuszy) :D
    Jeśli uzyskasz właściwy (i kompletny :!: ) wygląd szablonu do wydruku - ustawienie nagłówków, stopek i przede wszystkim dynamiczne ustawienie obszaru wydruku - to w efekcie obojętnie czy wyjdziesz z tymi danymi na drukarkę czy będziesz je eksportował do PDF - zawsze uzyskasz zamierzony wygląd wydruku lub pliku PDF :spoko:
  • #9
    pmatyjapm
    Level 2  
    Maciej Gonet wrote:
    Zakładając, że komórka A4 zawiera nazwę "STR2", a komórka B4 nazwę "RAPORT", to tak:
    Code: vbscript
    Log in, to see the code
    Jeśli te nazwy są w innym arkuszu niż aktywny, to można dodać kwalifikator.


    O to chodziło. Działa wybornie. Wielkie dzięki!!!
  • #10
    kinggustav
    Level 26  
    Ogólnie trzeba jakoś załadować nazwy do tablicy i zrobić tego Selecta. Można je załadować jawnie jak w tym przykładzie, ale też np. splitem jeżeli są wymienione po przecinku (dowolny separator), w pętli (np. gdy nie wiemy ile ich jest) z komórek albo bezpośrednio z Sheets - wtedy wogóle nie muszą być nigdzie zapisane, albo w jeszcze inny sposób, jaki tylko sobie można wymyślić. VBA to naprawdę mocne narzędzie, tak mocne, że M$ sam je zaczyna zwalczać. :)