Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Obrazy w excelu (galeria excel)

05 Sty 2011 16:13 8750 25
  • Poziom 9  
    Witam

    Mam kolejny mały problem. No może nie mały ale jakże usprawniający moją pracę
    A mianowicie chodzi mi o możliwość dodania w excelu obrazków
    Dokładniej w taki sposób aby klikając na odpowiednią komórkę wyświetlał się folder z obrazkami albo galeria obrazków.. a po najechaniu myszą pojawiała się miniatura w komentarzu...

    Oczywiście wiem jak to zrobić krok po kroku... ale nie mam zielonego pojęcia jak zrobić to tak aby automatycznie po dodaniu nowego kodu (np k011) od razu pojawiało się w odpowiedniej komórce słowo więcej z hiperłączem do folderu o nazwie kodu (dla przykładu k011) i miniaturką zdjęcia z folderu.. Zmniejszyłoby to mój ogrom prac i klikania..

    Nie jestem pewna czy przykład zadziała bo moje pliki znajdują się na dysku K wiec trzeba zmienić hiperłącze i źródło do miniaturki...

    Jakby ktoś nie był pewien jak poradziłam sobie z miniaturką to nic innego jak Komentarz z tłem w postaci obrazka.

    Uf to chyba tyle. Mam nadzieję ze ktoś zrozumie mój bełkot.

    Proszę o podpowiedzi i sugestie;)
    Pozdrawiam
    Załączniki:
  • Poziom 28  
    A jak u Ciebie z VBA? Bo tylko w ten sposób zautomatyzujesz te czynności. :cry:
    Na początek proponuję zacząć od obsługi zdarzenia
    Code:
    Worksheet_SelectionChange
    arkusza 1 i tam zmusić (ładne słowo) go do reakcji na zmiany w kolumnie A. Do dodania linku służy:
    Code:
    .Hyperlinks.Add
    w którym podajesz lokalizację:
    Code:
    Address:="Zdjęcia/K001"
    i
    Code:
    TextToDisplay:="Więcej"
    tekst do wyświetlenia. Adres możesz pobrać z komórki, którą zmieniasz. W przykładowym przypadku:
    Code:
    Address:="Zdjęcia/" & Range("A2")

    Komentarz montujesz za pomocą:
    Code:
    Range("E2").AddComment


    Dodane:
    Ups. Zapomniałem najważniejszego. :cry:
    Obrazek w komentarzu umieszczasz:
    Code:
    Range("E2").Comment.Shape.Fill.UserPicture "ścieżka do obrazka"

    Widzisz jakie to proste? Jeżeli taki laik jak ja dał sobie z tym radę to i Ty też sobie poradzisz. :D
  • Poziom 9  
    Kurcze nie do końca wiem jak to działa... ale mam pytanie czy wystarczy przepisać ten kod do nowego modułu?

    Myślałam że może jest jakiś tajemny sposób aby napisać formułę
    coś w ten deseń
    Code:

    =HIPERŁĄCZE("J:\Krzewy\Zdjęcia\"+A6;Więcej)


    popełniłam coś takiego ale mam chyba za mało podstaw bo już w pierwszej linijce pokazuje się błąd.. nie bardzo rozumiem czemu bo w pomocy składnia jest taka sama. Ale naprawdę dawno nie widziałam VBA więc wybaczcie moje niechlujstwo

    Code:

    Sub Komentarz()
    Worksheets(1).Select
    .Hyperlinks.Add
    Anchor = Range("E2")
    ScreenTip = "Kliknij aby otworzyć folder"
    TextToDisplay = "Więcej"
    Address = "Zdjęcia/" & Range("A2")

    Range("E2").AddComment
    Range("E2").Comment.Shape.Fill.UserPicture "ścieżka do obrazka"
    End Sub

  • Poziom 28  
    A to troszkę wolniej i po kolei.
    Jeżeli nie chcesz automatu to może być jako procedurka. Początek dobry :D
    Code:
    Sub Komentarz() 

    dalej proponuję:
    Code:

    Activesheet.Hyperlinks.Add Anchor = Range("E2"), TextToDisplay = "Więcej", _
    Address = "Zdjęcia/" & Range("A2") 

    I tyle jeżeli chodzi o hypersuper link. :D Sprawdź ten kawałek kodu i myślę że powinien działać bez problemu. Upierdliwością jest to, że po każdym uruchomieniu będzie odwoływał się do tej samej komórki. Ale to temat na dalszy ciąg. Małymi kroczkami na przód.
  • Poziom 9  
    Procedura nie działa ;/

    a z kodem mniej więcej wiem o co chodzi... ale nie działa niestety

    Code:
    Run-time error '13'
    
    Type mismatch


    Nie bardzo rozumiem jak działa składnia tego polecenia nawet help mi nie wiele powiedział.
  • Poziom 28  
    No i wpuściłem Cię w małe maliny. :cry:
    Nie wiedziałem, że nie zauważysz braku dwukropków.
    Za karę wrzucam działający plik z przykładem automatycznego linkowania na Twoich zasadach.
    Wpisuj w kolumnie A nazwy folderów i obserwuj kolumnę E. :D
  • Poziom 9  
    wierz mi lub nie ale dodałam := a i tak nie chodziło
  • Poziom 28  
    A w załączniku chodzi?
  • Poziom 9  
    No oczywiście że nie:)
    musiałam posprzątać....

    więc tak był mały problem z offset ale dałam radę sama to poprawić.. Proszę się nie śmiać tu powinno być wielkie wow dla mnie :D
    czepiał się o Address bo offset był ustawiony (0,-1) no ale szczegół.
    Code:

    ActiveSheet.Hyperlinks.Add
    anchor:=Range(aktywna).Offset(-1, 4),
    Address:="Zdjęcia/" & Range(aktywna).Offset(-1, 0),
    TextToDisplay:="Więcej"


    działało ale zaczęłam broić :D no i przestało wszystko w załączniku ;)
    Załączniki:
  • Poziom 40  
    Ja na razie tylko na chwilkę, bo jeszcze nie poznałem dokładnie problemu ale mam prośbę do autorki (i pewną wskazówkę). Jak dołączasz plik (a to tobie zależy na uzyskaniu pomocy) to przed wciśnięciem "Dodaj załącznik" zaznaczaj "wyłącz punkty za plik" (lub wpisuj -0,01).Wtedy inni nie będą musieli "płacić" za pobranie twojego załącznika. (Wiem że to niewiele, ale po co? Tym bardziej że jak wspomniałem to tobie zależy na uzyskaniu pomocy.
    (I na marginesie: w każdej chwili możesz to poprawić wciskając na swoim poście "zmień").
  • Poziom 9  
    o kurka.. już to robię... mój błąd nie jestem doświadczoną forumowiczką

    wybacz za naciąganie cię na pieniądze;)
    Wyślę sms dla ciebie ;)
  • Poziom 28  
    No to teraz trochę powyjaśniamy:
    Llink miał być wstawiany w tym samym wierszu do komórki przesuniętej o 4 w prawo od A1.
    Code:
    aktywna = ActiveCell.Address(xlA1)

    przypisuje zmiennej adres aktywnej komórki którą w obsłudze zdarzenia jest komórka aktywująca się po wciśnięciu Entera.
    I tu mam olśnienie...
    Chciałem marudzić, że ciut namotałaś, ale... nie. Jest OK.
    Dzieje się tak dla tego, że mam ustawiony przeskok w prawo a Ty w dół, więc pięknie poprawiłaś. :D Teraz u Ciebie będzie działać a u mnie nie. Ale to już mój problem :D. Jeżeli chcesz żeby było uniwersalne i niezależne od wcześniej wspomnianych ustawień trzeba będzie pokombinować, ale to może na trochę później. A w załączniku co nie działa, bo jeszcze się do niego nie dobrałem?

    Dodane:
    Dobra, już wiem. Użyj:
    Code:
    MkDir "nazwa foldera + ścieżka"

    do utworzenia foldera. Powinno ruszyć.
  • Poziom 9  
    No właśnie próbuje ale coś mi nie idzie... Chyba coś z tym warunkiem pomieszałam

    No i jeszcze jedna kwestia nie myślałam o tym wcześniej ;) właśnie mnie uświadomiłeś. Wszystko ok jeżeli po edycji wcisnę enter bo jak wcisnę tab to jest mały problem ;)
  • Poziom 28  
    Z jakim warunkiem, bo nie rozumiem?
    MkDir wymaga podania ścieżki i nazwy tworzonego foldera. Np.
    Code:
    MkDir "D:\Zapasowe\Nowy"

    gdzie Nowy to nazwa tworzonego.

    Dodane:
    W załączniku masz rozwiązanie problemu. Oczywiście z przesuwem w prawo po Enterze. Dorób tylko obsługę błędów. Będą na pewno :cry: po wpisaniu w komórce nazwy istniejącego folderu.
  • Poziom 9  
    Witam ponownie po dłuższej przerwie

    Przepraszam za brak odzewu z mojej strony ale miałam małą powódź w domu i nie miałam internetu przez kilka dni ;/

    Wracając do tematu dalej mam problem z tworzeniem folderu...
    Po prostu nie działa i nie rozumiem dlaczego
    No i ten nieszczęsny komentarz....
  • Poziom 28  
    Rozwiń trochę opisy problemów bo zgaduje się ciężko.
  • Poziom 9  
    wiec na początek mam problem już w linijce gdzie jest definiowana ścieżka

    Code:
    folder = ThisWorkbook.Path & "\Zdjęcia\" & Range(aktywna).Offset(0, -1)


    po wklepaniu entera błąd 1004 nie mam głowy co i jak.. jak przestawie offset na -1,0 działą po enterze...

    chyba zgubiłam się ze wszystkimi offsetami.
  • Poziom 28  
    I nie ma co wpadać w panikę. Napisałem przecież, że u mnie Enter przesuwa w prawo, więc Twoja poprawka jest jak najbardziej prawidłowa.
  • Poziom 9  
    No ok... Ale nie rozumiem za bardzo jak zabezpieczyć makro przed błędami w takim przypadku... Żeby działo tylko po zatwierdzeniu enterem... No i jeżeli istnieje już folder to też będzie powodować błąd... ehhh czemu wszystko musi być takie pokręcone...
  • Poziom 22  
    Ogrodniczka napisał:
    No i jeżeli istnieje już folder to też będzie powodować błąd...

    Trzeba po kolei przewidzieć potencjalne błędy i przechwycić je. Zajmuje to niejednokrotnie do 2/3 czasu poświęconego na napisanie samego tylko kodu/makra/programu i znacznie wydłuża czas pracy nad projektem. Zadanie żmudne i prawie niewidoczne "na zewnątrz", bo przecież jeśli błąd nie wystąpi to i bez tego wszystko działa ;) Niemniej jednak warto i na to poświęcić czas. Później mówi się, że program jest np. przyjazny dla użytkownika, że podpowiada, poprawia oczywiste błędy...

    Dla folderu warto wcześniej sprawdzić czy istnieje i jeśli nie, to dopiero wtedy go tworzyć. Można przez:
    If Dir(tutaj_sciezka & nowy_folder, vbDirectory) = "" Then ...

    Jeśli jednak tu na forum byłyby pisane makra ze wszystkimi możliwymi wariantami "a jeśli ... to co?", to właściwe makro byłoby mało czytelne :|
  • Poziom 9  
    No dobrze mam kolejne pytanie...

    Jak sprawić aby makro działało nie w momencie zmiany aktywnego pola a po naciśnięci np entera... tak aby uniknąć błędów z offserami
  • Poziom 28  
    Moim zdaniem ta kombinacja nie doprowadzi daleko. A przynajmniej nie do upragnionego celu. Prostszym rozwiązaniem będzie (chyba) wpisanie przechodzenia na sztywno.
    Można to zaprogramować w sposób:

    Code:
    Private Sub Workbook_Open()
    
        If Application.MoveAfterReturnDirection <> xlDown Then
            Application.MoveAfterReturnDirection = xlDown
        End If
    End Sub
  • Poziom 9  
    No cóż ja biedna mam powiedzieć... Muszę się zgodzi... i ponownie popaść w depresję bo sama bym na to nigdy od tej strony nie popatrzyła..
  • Poziom 14  
    Witam,

    Ja mam z kolei inna prośbę.
    Chciałbym aby po najechaniu na nazwe części wyświetlała się jej miniatura.
    Wiem, że kiedyś była możliwość dodawania zdjęć w komentarzach ale w wersji 2007 i 2010 z tego zrezygnowali.

    Co do VBA to wiem tylko tyle, że po najechaniu na nazwe arkusza i kliknięcie prawym przyciskiem można wyświetlić kody pól ale co dalej z tym zrobić, żeby to działało nie mam najmniejszego pojęcia ;)

    Z góry dziękję za pomoc.

    Pozdrawiam
    Łukasz Pytlakowski
  • Moderator Programowanie
    Misiak-007 napisał:
    ale w wersji 2007 i 2010 z tego zrezygnowali.
    Chyba nie...
    Obrazy w excelu (galeria excel)
  • Poziom 14  
    A właśnie, że nie ;P
    Excel 2010 PLUS

    Obrazy w excelu (galeria excel)

    Są to 3 kroki ktore wykonalem aby powstal komentarz i go edytować.