У меня есть макрос добавляющий картинку с адреса в ячейке I4 - в фигуру "Прямоугольник 4".
Как заставить макрос - загружать фотофайлы в этой автофигуре с интервалом в 50 секунд - с бесконечным повторением - в соответствии с нумерацией файлов в папке ?
(сперва идет 1.jpg на 50 секунд, затем загружается 2.jpg на 50 секунд, затем загружается 3.jpg на 50 секунд, а затем цикл повторяется и так до бесконечности)
У меня есть макрос добавляющий картинку с адреса в ячейке I4 - в фигуру "Прямоугольник 4".
Как заставить макрос - загружать фотофайлы в этой автофигуре с интервалом в 50 секунд - с бесконечным повторением - в соответствии с нумерацией файлов в папке ?
(сперва идет 1.jpg на 50 секунд, затем загружается 2.jpg на 50 секунд, затем загружается 3.jpg на 50 секунд, а затем цикл повторяется и так до бесконечности)odeon16
buchlotnik, как должен выглядеть макрос - хотя бы для одного из этих действий ? Как должен выглядеть код - загружающий jpg по номерам в названиях и зацикливающий порядок загрузки ?
buchlotnik, как должен выглядеть макрос - хотя бы для одного из этих действий ? Как должен выглядеть код - загружающий jpg по номерам в названиях и зацикливающий порядок загрузки ?odeon16
odeon16, какой вопрос, такой и ответ, я, например, не вижу ваш
Цитата
макрос добавляющий картинку с адреса в ячейке I4 - в фигуру "Прямоугольник 4"
и не знаю как производится
Цитата
нумерацией файлов в папке
а так ловите, конечно: [vba]
Код
Sub go() ActiveSheet.Shapes.Range(Array("Rectangle 4")).Select With Selection.ShapeRange.Fill Do For i = 1 To 3 .Visible = msoTrue .UserPicture "адрес_папки" & i & ".JPG" Application.Wait (Now + TimeValue("0:00:50")) Next i Loop End With End Sub
[/vba]
odeon16, какой вопрос, такой и ответ, я, например, не вижу ваш
Цитата
макрос добавляющий картинку с адреса в ячейке I4 - в фигуру "Прямоугольник 4"
и не знаю как производится
Цитата
нумерацией файлов в папке
а так ловите, конечно: [vba]
Код
Sub go() ActiveSheet.Shapes.Range(Array("Rectangle 4")).Select With Selection.ShapeRange.Fill Do For i = 1 To 3 .Visible = msoTrue .UserPicture "адрес_папки" & i & ".JPG" Application.Wait (Now + TimeValue("0:00:50")) Next i Loop End With End Sub
Этот код - во время ожидания (все 50 секунд) - не дает работать в экселе. Постоянно отображается - на курсоре - то что выполняется программа. И в экселе в это время - ничего нельзя сделать - ни ячейку выделить, ни фигуру нарисовать.
Этот код - во время ожидания (все 50 секунд) - не дает работать в экселе. Постоянно отображается - на курсоре - то что выполняется программа. И в экселе в это время - ничего нельзя сделать - ни ячейку выделить, ни фигуру нарисовать.odeon16
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Dim lTimerID As Long Dim b As Boolean ' Запуск Sub Start_It() lTimerID = SetTimer(0&, 0&, 2000&, AddressOf Main) End Sub
' Останов Sub Stop_It() KillTimer 0&, lTimerID End Sub
Sub Main() Dim s b = Not b s = IIf(b, "i1", "i2") On Error Resume Next ActiveSheet.DrawingObjects.Delete ActiveSheet.Pictures.Insert ("C:\Users\OFIS\Pictures\" & s & ".png") End Sub
[/vba]
[vba]
Код
Option Explicit
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Dim lTimerID As Long Dim b As Boolean ' Запуск Sub Start_It() lTimerID = SetTimer(0&, 0&, 2000&, AddressOf Main) End Sub
' Останов Sub Stop_It() KillTimer 0&, lTimerID End Sub
Sub Main() Dim s b = Not b s = IIf(b, "i1", "i2") On Error Resume Next ActiveSheet.DrawingObjects.Delete ActiveSheet.Pictures.Insert ("C:\Users\OFIS\Pictures\" & s & ".png") End Sub
Public Sub www() Static p& p = IIf(p > 2, 1, p + 1) Debug.Print p Me.DrawingObjects.Delete Me.Pictures.Insert (ThisWorkbook.Path & "\" & p & ".jpg") Application.OnTime Now + TimeValue("00:00:01"), "Лист1.www" End Sub
Public Sub stopSlideshow() Dim varNextCall varNextCall = Now + TimeValue("00:00:01") Application.OnTime varNextCall, "Лист1.www", , 0 End Sub
[/vba]
Вариант с ontime, в модуль листа: [vba]
Код
Public Sub www() Static p& p = IIf(p > 2, 1, p + 1) Debug.Print p Me.DrawingObjects.Delete Me.Pictures.Insert (ThisWorkbook.Path & "\" & p & ".jpg") Application.OnTime Now + TimeValue("00:00:01"), "Лист1.www" End Sub
Public Sub stopSlideshow() Dim varNextCall varNextCall = Now + TimeValue("00:00:01") Application.OnTime varNextCall, "Лист1.www", , 0 End Sub