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.

Excel -makro - Makro w Excel

03 Cze 2013 13:41 1131 2
  • Poziom 9  
    Witam,

    Podaję makro:


    Sub Logoeps()


    ' Logoeps Makro
    ' Option Explicit
    Dim x As Double
    Dim y As Double
    Dim obraz As String
    Dim kom As Range
    Dim fd As Object

    Set fd = Application.FileDialog(msoFileDialogOpen)
    With fd
    .InitialFileName = ActiveWorkbook.path & "\" & Range("M68")
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "Picture Files", "*.png; *.jpg; *.gif; *.bmp"
    .Title = "Which file"
    If .Show Then
    obraz = .SelectedItems(1)
    Set kom = Range("C2:D6")
    x = kom.Columns.Width
    y = kom.Rows.Height
    With ActiveSheet.Pictures.Insert(obraz)
    With .ShapeRange
    .LockAspectRatio = msoFalse
    .Left = kom.Left
    .Top = kom.Top
    .Width = x
    .Height = y
    .ZOrder msoSendToBack
    End With
    .Placement = xlMoveAndSize
    .PrintObject = True
    End With
    Set kom = Nothing
    Else
    Exit Sub
    End If
    End With
    Set fd = Nothing
    End Sub


    Makro działa tak jak powinno ale chciałbym zmienić kilka rzeczy:

    1. Przy uruchomieniu tego makra wyskakuje okno z wbitą już nazwą pliku. Wystarczy wcisnąć otwórz. Chciałbym, żeby automatycznie to się robiło bez klikania otwórz. Po prostu niech wklei obrazek po uruchomieniu makra.

    2. Chciałbym, żeby makro się odświeżało, jeżeli zmieni się wartość w komórce M68. Tzn. jeżeli zmieni się wartość wspomnianej komórki to makro powinno wykasować dotychczasową wartość(obrazek) i wykonać się ponownie. Zakładam, że w grę wchodzi odświeżanie makra np. co 5 sek ze sprawdzaniem czy zmieniła się wartość w komórce. Może dałoby się zrobić to na zasadzie call nazwa tego samego makra a po tym zamknij makro.

    Jeżeli jesteście w stanie pomóc mi z którymkolwiek z powyższych problemów to proszę o odpowiedź.

    Z góry dziękuję
  • Poziom 27  
    Ad1. W module standardowym wklej kod.
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Ad2. W module arkusza do którego ma być ładowany obrazek wklej następujący kod (zakładam, że kod z Ad1 będzie w module1, jeśli nie to zmień odwołanie).
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Super pierwsze działa drugie sprawdzam.

    Z pierwszym jest jeden problem. Używam tego makra do paru obrazków. Jeżeli wkleję do jednego a później do drugiego to kasuje mi pierwszy obrazek.

    Jak to zrobić zeby nie kasowało?