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

Страницы: 1 2 3 След.
MsgBox в Офис Р-7
 
Здравствуйте! Начал изучать Р7, не могу понять, как выводить на JS окно сообщения? alert(“hello world”) не работает. А как надо, кто-то знает? Спасибо
Как запустить поиск решения (Solver) из надстройки VBA?
 
Здравствуйте, уважаемые знатоки!

У меня такой вопрос. Хочу, чтобы у меня в надстройке .xlam был макрос, который бы подбирал нужный мне параметр через поиск решения (Solver). Мастер макросов в файле пишет следующий код:

Код
Sub Macro1()
    SolverOk SetCell:="$C$6", MaxMinVal:=3, ValueOf:=8, ByChange:="$C$4", Engine:=1 _
        , EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:="$C$6", MaxMinVal:=3, ValueOf:=8, ByChange:="$C$4", Engine:=1 _
        , EngineDesc:="GRG Nonlinear"
    SolverSolve
End Sub


В обычной книге Excel он запускается нормально (предварительно подключаю в VBA в refenences инструмент Solver). Засовываю код в надстройку - не работает, т.к. в ней Solver не подключен. Подключаю Solver в надстройке - получается он вступает в конфликт с Solver в файле и надстройка не запускается после этого. Короче вопрос такой: как не подключая Solver в надстройке применять функцию поиска решения, если Solver подключен в самом файле. Надеюсь, понятно объяснил. Заранее спасибо
Как поменять изображение на кнопке формы VBA через макрос?
 
Я понял, большое спасибо!
Поясняю что хотел, если непонятно сформулировал:
Код
ИмяКнопки.Picture=LoadPicture(«адрес картинки»)
Как поменять изображение на кнопке формы VBA через макрос?
 
Добрый день! Есть модуль формы VBA. Можно ли как-то программно (через макрос) поменять атрибут Picture на кнопке формы. Объясню зачем: у меня много кнопок на форме и нужно сразу на всех поменять картинки.

Спасибо!!
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Игорь, я переустанавливал браузер, ошибка не ушла. Поэтому сделал ее обход: если по умолчанию Яндекс, тогда запускается Edge, в остальных случаях по умолчанию. Я не знаю, проблема ли это моего компьютера или Яндекса, задача, чтобы сайт открывался, я ее решил. Всем спасибо за помощь!
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Цитата
RAN написал:
Который день не могу понять, чем обычноеКод ? 1ThisWorkbook.FollowHyperlink " https://www.planetaexcel.ru/ "не подходит?
Вот поэтому, у меня не работает:
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Андрей VG, да, видимо поторопился. спасибо.
Сейчас начал "играться" с командами по чтению и записи из реестра при помощи объекта WshShell, в итоге в редакторе реестра исчезла ветка VBA (HKEY_CURRENT_USER\Software\VB and VBA Program Settings), т.е. ее не видно в дереве. При этом пишет и читает программно без проблем. То же самое при попытке записать в другие папки тоже не отображаются никакие изменения, при этом программно все нормально читает. Такое ощущение, что реестр не обновляется больше, что это может быть???
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Андрей VG, здорово! спасибо!

Извините, снова вопросы. Почему вы написали ветку HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command - у меня, например, Crome не установлен, поэтому и ветки такой нет. Да и почему в ветке хрома должен быть адрес браузера по умолчанию?
Смотрю ветку HKEY_CLASSES_ROOT\http\shell\open\command - действительно, вижу адрес "C:\Program Files\Internet Explorer\IEXPLORE.EXE" %1 , но у меня сейчас по умолчанию не IE стоит, а там адрес IE. В общем, не понимаю, уж простите ((

Что-то похожее нашел вот в этой ветке:
Код
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati­ons\UrlAssociations\http\UserChoice

Значение переменной ProgId: YandexHTML.44X6GKC2M3EKCRFCQB634HVWGE
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Андрей VG, спасибо, это очень полезно! Но можно тупой вопрос, как залезть через VBA в произвольную ветвь реестра? Я умею только работать с ветвью VBA через GetSetting
Изменено: Rigel44 - 23.06.2020 09:21:36
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Игорь, спасибо! Но еще раз повторюсь, метод работает не со всеми браузерами. При установке по умолчанию Яндекс.Браузер у меня выскакивает ошибка (прилагаю скрин). В других браузерах нормально, но все же, получается это не универсальное решение. Поэтому хочу программно узнать, какой браузер по умолчанию и если Яндекс - открывать, например, через Edge
Изменено: Rigel44 - 22.06.2020 23:13:45
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Уточняю. У меня не работало, когда браузер по умолчанию ставил Яндекс.Браузер, с другими браузерами работает. Но что не так с Яндекс.Браузером? Есть ли способ программно узнать, какой браузер стоит по умолчанию?
Изменено: Rigel44 - 22.06.2020 00:06:00
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Александр Моторин, пробовал, у меня ничего не открывается, просто ничего не происходит. Что не так делаю?

Код
Public Declare Function ShellExecute _
  Lib "shell32.dll" Alias "ShellExecuteA" ( _
  ByVal hWnd As Long, _
  ByVal Operation As String, _
  ByVal FileName As String, _
  Optional ByVal Parameters As String, _
  Optional ByVal Directory As String, _
  Optional ByVal WindowStyle As Long = vbMinimizedFocus _
  ) As Long
 
 
'------------------------------------------------------------------------
' Open Webpage in default browser
'------------------------------------------------------------------------
Public Sub OpenUrl(strURL)
    Dim lSuccess As Long
    lSuccess = ShellExecute(0, "Open", strURL)
End Sub


Sub OpenUr()
    Call OpenUrl("https://yandex.ru")
End Sub
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Сам отвечу на свой вопрос. Нашел на просторах интернета:
https://www.devhut.net/2018/02/01/vba-open-a-url-in-firefox-chrome/
Вроде работает, но может можно как-то попроще?
Также не разобрался, как добавить сюда Яндекс.Браузер
К тому же тут нужно выбирать браузер, а как открыть именно браузером по умолчанию, если не знаешь, какой у пользователя установлен браузер?


Код
Enum BrowserName    'This Enum is part of Sub OpenURL()
    InternetExplorer = 1
    FireFox = 2
    Chrome = 3
    Opera = 4
    Edge = 5
    Brave = 6
End Enum
 
 
'---------------------------------------------------------------------------------------
' Procedure : OpenURL
' Author    : Daniel Pineault, CARDA Consultants Inc.
' Website   : http://www.cardaconsultants.com
' Purpose   : Open a URL in FireFox
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
'             (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: Uses Late Binding, so none required
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' sURL      : URL to open in FifeFox
'
' Usage:
' ~~~~~~
' Call OpenURL("http://www.google.ca", InternetExplorer)
' Call OpenURL("devhut.net", Chrome)
' Call OpenURL("msdn.com", FireFox)
' Call OpenURL("google.ca", Opera)
' Call OpenURL("http://www.google.ca", Edge)
' Call OpenURL("http://www.google.ca", Brave)
'
' Revision History:
' Rev       Date(yyyy/mm/dd)        Description
' **************************************************************************************
' 1         2014-11-13              Initial Release
' 2         2018-02-01              Updated Copyright under CC licensing
'                                   Error trapped FireFox not installed
' 3         2018-02-01              Complete revamp of the code to accomodate multiple
'                                   Browser
' 4         2020-04-27              Added Microsoft Edge
'                                   Added Brave
'---------------------------------------------------------------------------------------
Sub OpenURL(ByVal sURL As String, ByVal lBrowser As BrowserName)
    On Error GoTo Error_Handler
    Dim WSHShell              As Object
    Dim sFFExe                As String     'Executable path/filename
    Dim sProgName             As String     'Name of the Executable program
    Dim sExe                  As String     'Excutable exe filename
    Dim sCmdLineSwitch        As String     'Command line switch
    Dim sShellCmd             As String     'Shell Command
 
    'Determine the Path to FF executable
    Select Case lBrowser
        Case 1
            'https://msdn.microsoft.com/en-us/library/hh826025(v=vs.85).aspx
            sProgName = "Internet Explorer"
            sExe = "IEXPLORE.EXE"
            sCmdLineSwitch = " "
        Case 2
            'https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#Browser
            sProgName = "Mozilla Firefox"
            sExe = "Firefox.EXE"
            sCmdLineSwitch = " -new-tab "
        Case 3
            sProgName = "Google Chrome"
            sExe = "Chrome.exe"
            sCmdLineSwitch = " -tab "
        Case 4
            'http://www.opera.com/docs/switches/
            sProgName = "Opera"
            sExe = "opera.exe"
            sCmdLineSwitch = " "
        Case 5
            sProgName = "Microsoft Edge"
            sExe = "Chrome.exe"
            sCmdLineSwitch = " -tab "
        Case 6
            sProgName = "Brave"
            sExe = "brave.exe"
            sCmdLineSwitch = " -tab "
    End Select
 
    If lBrowser = 5 Then    'Special case for Edge!  Thank you Microsoft for not following the rules!
        sShellCmd = "cmd /c """ & "start microsoft-edge:" & sURL & """"
    Else
        Set WSHShell = CreateObject("WScript.Shell")
        sFFExe = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" & _
                                  "CurrentVersion\App Paths\" & sExe & "\")
        sFFExe = Replace(sFFExe, Chr(34), "")    'Special case for Opera?!
        'Open the URL
        sShellCmd = """" & sFFExe & """" & "" & sCmdLineSwitch & """" & sURL & """"
    End If
    shell sShellCmd, vbHide
 
Error_Handler_Exit:
    On Error Resume Next
    If Not WSHShell Is Nothing Then Set WSHShell = Nothing
    Exit Sub
 
Error_Handler:
    If Err.Number = -2147024894 Then
        MsgBox sProgName & " does not appear to be installed on this compter", _
               vbInformation Or vbOKOnly, "Unable to open the requested URL"
    Else
        MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
               "Error Number: " & Err.Number & vbCrLf & _
               "Error Source: OpenURL" & vbCrLf & _
               "Error Description: " & Err.Description & _
               Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
               , vbOKOnly + vbCritical, "An Error has Occurred!"
    End If
    Resume Error_Handler_Exit
End Sub
Изменено: Rigel44 - 21.06.2020 23:19:14
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Dima S, имею в виду открыть сайт в браузере
Изменено: Rigel44 - 21.06.2020 23:14:38
Как открыть ссылку макросом НЕ через IE?, Как открыть ссылку браузером по умолчанию или MS Edge?
 
Добрый день! Все решения по открыванию интернет-сайта по ссылке через VBA, которые я видел, открывают его в Internet Explorer. Ни для кого не секрет, что он загибается. Как открыть ссылку браузером по умолчанию или хотя бы MS Edge? Спасибо!
Как программно получить список модулей VBA?
 
Андрей VG, работает! Спасибо большое Вам!!!
Как программно получить список модулей VBA?
 
Добрый день! Есть необходимость получить программно список модулей проекта, но не просто список, а с указанием типа (модуль книги, модуль листа, модуль формы, простой модуль процедур или модуль класса). Просто список модулей не сложно, а какое свойство отвечает за тип модуля? Заранее спасибо
Как программно выделить группу листов?
 
Спасибо всем большое! Сделал на основе первого варианта:

Код
Option Base 1
Sub TabSelect()
  Dim Shts() As Integer
  Dim i As Integer
  Dim n As Integer
  Dim Col: Col = ActiveSheet.Tab.Color 
  For i = 1 To ActiveWorkbook.Sheets.Count
    If ActiveWorkbook.Sheets(i).Visible = True And ActiveWorkbook.Sheets(i).Tab.Color = Col Then
        n = n + 1
        ReDim Preserve Shts(n)
        Shts(n) = i
    End If
  Next
   ActiveWorkbook.Worksheets(Shts).Select
End Sub
Изменено: Rigel44 - 31.10.2019 22:38:32
Как программно выделить группу листов?
 
Добрый день! Хочу написать макрос, который выделял бы листы по определенному критерию, например, выделял бы листы, ярлычки которых залиты в красный цвет.
Мастер макросов записывает операцию выделения листов через функцию Array:

Код
Sheets(Array("Лист1", "Лист2", "Лист3")).Select

Понимаю, что через цикл могу сформировать массив имен листов, которые мне нужно выделить, но как их "засунуть" в функцию Array программно?

Возможно ли это? Надеюсь, объяснил понятно. Заранее благодарю!

Узнать через vba, содержит ли файл определенный макрос?
 
Дмитрий(The_Prist) Щербаков, здорово! Большое спасибо  
Узнать через vba, содержит ли файл определенный макрос?
 
Добрый день! Подскажите, пожалуйста, возможно ли через макрос узнать, есть ли в данной книге макрос с определенным именем, в частности, Workbook_open? Спасибо!
Как в VBA присвоить объектной переменной файл?
 
Alemox, спасибо большое! То, что нужно - четко и, главное, по делу
Как в VBA присвоить объектной переменной файл?
 
Игорь, спасибо! Но то есть только через открытие файла можно присвоить? Когда закрываешь файл переменная уже не работает:
Код
Sub Макрос1()
    Dim F As Object
    Set F = Workbooks.Open("C:\Users\User\Desktop\222.xlsx")
    ActiveWorkbook.Close
    MsgBox F.Name
End Sub
Как в VBA присвоить объектной переменной файл?
 
Здравствуйте! Как правильно записать присвоение файла объектной переменной, если знаешь его адрес?

Что-то типа этого...
Код
Dim F as Object
Set F="C:\Users\User\Desktop\Тест v1.xlsb"



Как это корректно записать? Спасибо!
Изменено: Rigel44 - 23.05.2019 23:41:29
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Ivan.kh, соглашусь с вами)
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Юрий М, извиняюсь, если непонятно задал вопрос. Я хочу написать макрос, который бы выводил мне таблицу с адресами и паролями всех защищенных диапазонов на листе. Столкнулся с проблемой, что вытащить свойство Password не получается. Вот я и спрашиваю, возможно ли это в принципе.
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Юрий М, спасибо, это статью я читал, конечно. Но я задал вопрос именно про свойство Password, вроде бы там про это не написано в явном виде
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Андрей VG, можно еще вопрос по данной теме

а можно ли обратиться через VBA к паролю защищенного диапазона?

Вот такая запись не работает...

Код
Sub Test()
MsgBox ActiveSheet.Protection.AllowEditRanges(1).Password
End Sub

В Object Browser посмотрел, у класса AllowAditRange нет свойства Password, тем не менее задать это свойство можно через:

Код
Sub Макрос1
ActiveSheet.Protection.AllowEditRanges.Add Title:="Диапазон1", Range:=Range _
        ("F6"), Password:="1" 
End Sub

Как так?)
Изменено: Rigel44 - 27.04.2019 23:59:42
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Андрей VG, спасибо огромное!!! Можно глупый вопрос, а как вы узнали что пользователям соответствует именно класс UserAccessList?
Изменено: Rigel44 - 19.04.2019 19:00:02
Как программно задать разрешение на редактирование диапазона конкретным пользователям?
 
Здравствуйте, уважаемые специалисты!

Появилась необходимость программно выдать права пользователям на редактирование диапазонов. Включив мастер макросов, задаю защищенный диапазон с паролем, дав при этом разрешение одному пользователю:
Код
Sub Макрос1
   
 ActiveSheet.Protection.AllowEditRanges.Add Title:="Диапазон1", Range:=Range _
        ("F6"), Password:="1"  
 
End Sub

Как видно мастер не записал разрешение на имя пользователя, тем не менее следующий код выдает верное имя пользователя:

Код
Sub Макрос2()   

   MsgBox ActiveSheet.Protection.AllowEditRanges(1).Users(1).Name

End Sub

По логике хочу программно задать еще одного пользователя:
Код
Sub Макрос13()

    ActiveSheet.Protection.AllowEditRanges(1).Users.Add Name:="User"
        
End Sub
Под User пишу, конечно, определенное имя..
Но этот код не работает. В чем ошибка?

Заранее благодарю!
Изменено: Rigel44 - 18.04.2019 23:24:18
Страницы: 1 2 3 След.
Наверх