Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Загрузка второй UserForm после открытия книги
 
Коллеги, доброго времени суток!
Есть книга, при открытии которой открывается форма с заставкой (сделано по букварю).
Задача: после выгрузки этой начальной формы (InitForm) загрузить следующую, MainForm, представляющую собой меню с кнопками (никаких параметров программно в неё не загружается).
Собственно, делаю следующее:
Имеется Private Sub для автоматической выгрузки первой формы через некоторое время
Код
Private Sub UserForm_Activate()
    Application.OnTime Now + TimeValue("00:00:03"), "KillForm"
End Sub
В "KillForm" добавлены активация первого листа книги и загрузка формы MainForm:
Код
Private Sub KillForm()
    Unload TitleForm
    ThisWorkbook.Worksheets("Main").Activate
    Show MainForm
End Sub
Также по событию клика на начальной форме добавлена загрузка MainForm и активация первого листа
Код
Private Sub Image1_Click()
    Unload TitleForm
    ThisWorkbook.Worksheets("Main").Activate
    Show MainForm
End Sub
Но конструкции не работают ни автоматически, по истечении времени , ни по клику на начальной форме.

Выдаётся ошибка:
"Run-time error '-2147418105 (80010007)':

Automation error
Вызываемая сторона (сервер [а не приложение-сервер])
недоступна и исчезла;ни одно подключение более не действует.
Сам вызов, возможно, выполнен."

Что делаю не так?
Спасибо!
Изменено: Aggle - 03.03.2018 19:17:13
Передача значений из UserForm в основной модуль
 
В очередной раз - огромное спасибо! Догадывался, что всё объясняется просто, но до этого момента с глобальными переменными не сталкивался.
Передача значений из UserForm в основной модуль
 
Добрый день, коллеги!
Возникли сложности с передачей обратно значений, изменяемых пользователем в UserForm
Идея была следующая:
В UserForm передаются значения года, месяца, первого и последнего дня месяца (макрос изначально предназначался для копирования отчётов)
Определяются параметры по умолчанию (текущие год, месяц и дата) и передаются в качестве начальных значений в элементы пользовательской формы.
Код
Option Base 1
Option Explicit
Sub TestUserForm()
    Dim curYear As String
    Dim curMonth As String
    Dim curDay As String
    Dim firstDay As Integer
    Dim lastDay As Integer
    'Значения по умолчанию (текущие)
    curYear = DatePart("yyyy", Now)
    curMonth = MonthName(DatePart("m", Now))
    curDay = Day(Now)
    firstDay = 1
    lastDay = dayInMonth(curMonth)
'Вызов формы
    Call GetValues(curYear, curMonth, firstDay, lastDay)
    curMonth = monthNum(curMonth)
End Sub


Sub GetValues(curYear, curMonth As String, firstDay, lastDay As Integer)
'Заполнение списка возможных значений для элементов ComboBox
    With ufGetValues.cbxYear
        .RowSource = ""
        .AddItem "2010"
        .AddItem "2011"
        .AddItem "2012"
        .AddItem "2013"
        .AddItem "2014"
        .AddItem "2015"
        .AddItem "2016"
        .AddItem "2017"
        .AddItem "2018"
        .AddItem "2019"
        .AddItem "2020"
        .AddItem "2021"
        .AddItem "2022"
        .AddItem "2023"
        .AddItem "2024"
        .AddItem "2025"
    End With
    With ufGetValues.cbxMonth
        .RowSource = ""
        .AddItem "ßíâàðü"
        .AddItem "Ôåâðàëü"
        .AddItem "Ìàðò"
        .AddItem "Àïðåëü"
        .AddItem "Ìàé"
        .AddItem "Èþíü"
        .AddItem "Èþëü"
        .AddItem "Àâãóñò"
        .AddItem "Ñåíòÿáðü"
        .AddItem "Îêòÿáðü"
        .AddItem "Íîÿáðü"
        .AddItem "Äåêàáðü"
    End With
    ufGetValues.cbxYear.Value = curYear
    ufGetValues.cbxMonth.Value = curMonth
    ufGetValues.tbFirstDay.Value = firstDay
    ufGetValues.tbLastDay.Value = lastDay
    ufGetValues.Show
End Sub
 
В форме сделано добавление - при выборе пользователем названия месяца для него определяется последний день
Код
Public Sub cbxMonth_Change()
    Select Case ufGetValues.cbxMonth.Value
        Case "ßíâàðü"
            ufGetValues.tbLastDay.Value = 31
        Case "Ôåâðàëü"
            ufGetValues.tbLastDay.Value = 29
        Case "Ìàðò"
            ufGetValues.tbLastDay.Value = 31
        Case "Àïðåëü"
            ufGetValues.tbLastDay.Value = 30
        Case "Ìàé"
            ufGetValues.tbLastDay.Value = 31
        Case "Èþíü"
            ufGetValues.tbLastDay.Value = 30
        Case "Èþëü"
            ufGetValues.tbLastDay.Value = 31
        Case "Àâãóñò"
            ufGetValues.tbLastDay.Value = 31
        Case "Ñåíòÿáðü"
            ufGetValues.tbLastDay.Value = 30
        Case "Îêòÿáðü"
            ufGetValues.tbLastDay.Value = 31
        Case "Íîÿáðü"
            ufGetValues.tbLastDay.Value = 30
        Case "Äåêàáðü"
            ufGetValues.tbLastDay.Value = 31
    End Select
End Sub

Всё работает. При выборе месяца автоматом меняется номер последнего дня
В обработчике кнопки "Ок" прописано присвоение значений элементов формы переменным в процедуре вызова
Код
Private Sub cbOk_Click()
    curYear = ufGetValues.cbxYear.Value
    curMonth = ufGetValues.cbxMonth.Value
    firstDay = ufGetValues.tbFirstDay.Value
    lastDay = ufGetValues.tbLastDay.Value
    Unload ufGetValues
End Sub
Но, увы, ничего не происходит. Заданные значения по умолчанию не меняются (или не передаются обратно).
Есть подозрение, что истина где-то очень близко, но мне не увидеть.
Передача значений по умолчанию, ЕМНИП, сделана в VBA по ссылке, замена Private на Public тоже не помогла.

Заранее премного благодарен!
Именованные диапазоны в пользовательской функции (UDF)
 
Огромное спасибо!
Именованные диапазоны в пользовательской функции (UDF)
 
Добрый вечер, коллеги!
Впервые столкнулся с проблемой: в пользовательской функции (UDF) не работают именованные диапазоны, имена работают.
Т. е., имеется пользовательская функция вида:
Код
Option Explicit
Public Function lalala(a, b As Double) As Double
    lalala = a + b
End Function
Есть именованные диапазоны Test1 (=Лист1!$A:$A), Test2 (=Лист1!$B:$B) и просто имена Test3 (=Лист1!$D$1) и Test4 (=Лист1!$E$1)
При вызове функции с Test1 и Test2 в списке выдаётся ошибка #ЗНАЧ!
При передаче имён, привязанных к конкретным ячейкам (Test3 и Test4) - всё работает.
Как я понимаю, при вызове функции она не может привязать передаваемые ей имена диапазонов к конкретным строкам (как это было бы при использовании формулы вида "=Test1+Test2").
Есть мысли, как обойти эти ограничения?

Спасибо!
Пакетное скачивание картинок (php) средствами VBA
 
Доброго времени суток, коллеги!

Возникла задача следующего плана.
Имеется excel-файл со списком гиперссылок на картинки вида: http://www.site.ru/image.php?f=NNNNN&m=MMMMM , где NNNNN и MMMMM- номера.
Как средствами VBA можно пакетом скачать все картинки и разместить их в заданный каталог?

Спасибо!
Программное открытие и сохранение картинки по URL
 
Вай, спасибо! А я как увидел, что к img прямого доступа нет, так и бросил копать в этом направлении. Хотя всё на виду было и очень просто.
Программное открытие и сохранение картинки по URL
 
Прямые ссылки тут, скорее всего, не помогут. Они в закрытой области сайта. При наличии прямых ссылок я бы вообще не заморачивался с макросами, а просто выдрал бы картинки оффлайновым браузером.

Кусок прайса со ссылками в приложении. Там мой первый вариант решения (неработающий).
Программное открытие и сохранение картинки по URL
 
Спасибо! Попробовал, оригинал работает, в моём файле - не работает. Макрос запускается, но сохраняет только HTML.
Есть мнение, что это происходит потому, что на картинки нет прямых ссылок, они вызываются через php-скрипт.
Программное открытие и сохранение картинки по URL
 
Уважаемые коллеги!
Просьба помочь разобраться в одной проблеме.
Имеется: Файл Excel (товарный каталог), в котором для каждой товарной позиции с номером типа NNNNN имеется, в отдельном столбце, название товара с гиперссылкой вида: http://sitename/image.php?f=NNNNN.
При нажатии в открытом файле на гиперссылку, в браузере открывается соответствующая картинка (NNNNN.jpg).
Задача: Программно реализовать получение по этой гиперссылке файла (картинки) и его сохранение в виде NNNNN.jpg.
Спасибо!
Страницы: 1
Наверх