logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel VBA - Wstawianie zdjęć do pliku, obsługa błędu jeśli tych zdjęć nie ma.

Przybysz89 14 Paź 2015 12:07 3537 20
REKLAMA
  • #1 15066251
    Przybysz89
    Poziom 8  
    Posty: 32
    Witam,
    napisałem kod, który wstawia mi zdjęcia, pozycjonuje i formatuje tak jak bym chciał, problem jest jedynie taki że w przypadku jeśli tych zdjęć jest mniej niż 6 (maksymalna założona liczba) to wyskakuje błąd (brak zdjęcia i koniec makra). Nie mogę poradzić sobie z obsługą błędu w tym przypadku. że jeśli któregoś zdjęcia/zdjęć nie ma to operacje ma wykonać tylko na tych co są.

    Jak to zrobić??

    kod poniżej:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 15066314
    Loker
    Poziom 39  
    Posty: 3368
    Pomógł: 575
    Ocena: 720
    On Error GoTo 0
    On Error Resume Next

    chyba losowo to wstawiałeś ;) Poczytaj w help'ie od VBA jak używać "On Error"
  • #3 15066360
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    Pewnie się wywala, bo nie znajduje pliku ze zdjęciem. Można to załatwić i poprzez On Error, ale ładniej sprawdzić czy plik istnieje. Jeżeli zrobisz On Error to musisz skoczyć na koniec wstawiania zdjęć chyba. Nie wiem czy jest możliwe, że np. tylko zdjęcia numer 2 nie będzie, czy zawsze brakuje ostatnich?
    Proponowałbym też zrobić procedurę z tego kawałka wstawiającego zdjęcie i np. wywołać ją w pętli tyle razy ile jest plików ze zdjęciami, albo poprostu 6. Będzie łatwiej analizować.
  • #4 15066397
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Zgadzam się z @kinggustav, tym bardziej, że zdjęcia mają nazwy liczbowe.
    Użyj właściwości Left i Top, aby umieścić zdjęcia na właściwym miejscu. Odpadnie 'Select' wszyskich i ich pozycjonowanie.(Jak brak jednego - blad)
    Przypisz zmiennej sciezku do plikow( ("\\sts0004\QS-test\REKLAMACJE\Zarządzanie Reklamacjami\Reklamacje do dostawców 2015\" & DOSTAWCA & "\LR15" & NUMEREK & "\ "
  • REKLAMA
  • #5 15322813
    Przybysz89
    Poziom 8  
    Posty: 32
    szczerze nie do końca umiem sobie z tym poradzić.. często też wywala mi błąd "Pobranie właściwości Insert klasy Puctures nie jest możliwe"...
  • #6 15322840
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Przed wstawieniem zdjęcie zrobić sprawdzanie
    
    If Dir(<tu sciezka do zdjęcia>) <> "" Then
       ActiveSheet.Pictures.Insert(<tu sciezka do zdjęcia>) 
    End If
  • #7 15322859
    Przybysz89
    Poziom 8  
    Posty: 32
    JRV, a jak to "zapętlić? próbowałem ale jeszcze słabo mi to wychodzi
  • REKLAMA
  • #8 15322907
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    W Twojem kodzie jest widoczne tylko rozmiar zdjęcia, ale nie ich lokalizacji w arkuszu. Tylko ruch względny. Z tego powodu trudno tej pętli do pisania. Rysunki są umieszczone w wierszach lub w kolumniach? Jeśli brakuje niektórych, pozostaje puste miejsce lub to miejsce następnego?
  • #9 15322940
    Przybysz89
    Poziom 8  
    Posty: 32
    zdjęcia są umieszczane luzem może to nie jest najlepsze rozwiązanie..,

    równie dobrze kolejne zdjęcia mogły by być w komórkach A66,A81,A96 i F66,F81,F96
  • #10 15323027
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #11 15325633
    Przybysz89
    Poziom 8  
    Posty: 32
    ok jeśli zdjęcia oraz plik do którego mają być wstawione zdjęcia są w tym samym folderze to działa,

    Ale jeśli np makro jest uruchamiany przez plik REKLAMACJE 2016 który jest na jednej lokalizacji,
    a zdjęcia mają być wrzucone do pliku o nazwie FORMULARZ PL który też jest gdzie indziej wstawiony, a folder zdjęć ma być "Zmienny" w zależności o którą reklamację, klienta chodzi - to już nie działa;/ nic nie wstawia :(


    Prawdopodobnie problemem są zmienne DOSTAWCA i NUMEREK
  • #12 15325671
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Do zdjęci jest określona pełna sciezka:
    DOSTAWCA = Workbooks("Reklamacje 2015.xlsm").Sheets("TEMP").Range("E1").Value
    NUMEREK = UserForm1.TextBox1.Text
    sciezka = "\\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Reklamacje do dostawcow 2015\" & DOSTAWCA & "\LR15" & NUMEREK & "\  ("

    To ja nie wymyślił, sobie przypomnieć(post #1)
    Przybysz89 napisał:
    zdjęcia mają być wrzucone do pliku o nazwie FORMULARZ PL który też jest gdzie indziej wstawiony

    Dlaczego jego nie otworzysz?
    Nie widzę, gdzie to jest, "gdzie indziej"
  • REKLAMA
  • #13 15325910
    Przybysz89
    Poziom 8  
    Posty: 32
    Inaczej.

    Jeśli zamiast Zmiennych DOSTAWCA i NUMEREK wpiszę w ścieżkę wartości to zdjęcia wstawia bez problemu, jeśli natomiast ścieżka jest
    sciezka = "\\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Reklamacje do dostawcow 2015\" & DOSTAWCA & "\LR15" & NUMEREK & "\ ("


    Wtedy nie wstawia nic. Makro przeleci, a zdjęć nie ma.

    Plik z tym makrem jest na lokalizacji
    \\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\

    Plik do którego zdjęcia ma zrzucić przed zapisaniem go na właściwej lokalizacji
    \\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Formularze

    A zdjęcia są już w odpowiednich folderach, tj np:

    \\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Reklamacje od dostawców\ABC

    gdzie ABC (czyli DOSTAWCA) jest zmienne.. tak jak NUMEREK

    :/
  • #14 15325951
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Przybysz89 napisał:
    A zdjęcia są już w odpowiednich folderach, tj np:
    \\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Reklamacje od dostawców


    Przybysz89 napisał:
    jeśli natomiast ścieżka jest
    sciezka = "\\sts0004\QS-test\REKLAMACJE\Zarzadzanie Reklamacjami\Reklamacje do dostawcow 2015

    tak to ' 2015' trzeba lub nie ?
  • #15 15325963
    Przybysz89
    Poziom 8  
    Posty: 32
    tak ale 2016

    Dodano po 1 [minuty]:

    Załóżmy też że wspomniany formularz do którego ma załadować zdjęcia nazywa się "Formularz reklamacja do dostawcy.xlsx"
  • #16 15325992
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Makro jest uruchamiany z UserForm1 ?
  • #17 15325996
    Przybysz89
    Poziom 8  
    Posty: 32
    tak, zgadza się :)
  • #18 15326005
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Śledź makro krok po kroku(F8) i upewnić się, że wartości zmiennych DOSTAWCA i NUMEREK odpowiadają do prawidłowego

    Dodano po 2 [minuty]:

    Na początku makra, Dodaj otwarcie formularza, gdzie powinny być wstawiony Zdjęcia
  • #19 15326028
    Przybysz89
    Poziom 8  
    Posty: 32
    śledziłem, obie dane są prawidłowe odpowiadają nazwom folderów jednak nic nie wstawia...
  • #20 15326067
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Przybysz89 napisał:
    ActiveSheet.Pictures.Insert("\\sts0004\QS-test\REKLAMACJE\Zarządzanie Reklamacjami\Reklamacje do dostawców 2015\" & DOSTAWCA & "\LR15" & NUMEREK & "\ (1).JPG").Select

    Nie wiem jak nazwy zdjęc, tylko dwie szpacji przed (1) myslim nie trzeba.
    U mnia na wszystkich sciezkach dziala. Sprobuj jeszcze sciezku w apostrofy'
  • #21 15326134
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Myślę, że to będzie jakiś drobiazg. Brak slash'a Np...
    Przypisz ciąg do zmiennej i przeanalizuj (lub debug.print).

    Czy, jeśli podstawisz do Dir, przechodzi, czy zwraca błąd?

Podsumowanie tematu

✨ Użytkownik napotkał problem z kodem VBA, który wstawia zdjęcia do arkusza Excel. Gdy liczba zdjęć jest mniejsza niż 6, makro kończy działanie z błędem. Uczestnicy dyskusji sugerują użycie instrukcji "On Error" oraz sprawdzenie istnienia plików przed ich wstawieniem. Proponują również zorganizowanie kodu w pętlę, aby uprościć proces wstawiania zdjęć oraz poprawić lokalizację zdjęć w arkuszu. Użytkownik ma trudności z dynamicznym ustaleniem ścieżki do zdjęć, co prowadzi do problemów z ich wstawianiem. Wskazówki obejmują użycie zmiennych do ścieżek oraz debugowanie kodu, aby upewnić się, że wartości zmiennych są poprawne.
Wygenerowane przez model językowy.
REKLAMA