Как запускать IE свернутым в трей при открытии ячейки со ссылкой ?? (и потом открыть своим браузером - эта часть понятна) Пробую так не получается все равно IE вылазит на экран
Код
Shell "C:\Program Files (x86)\Internet Explorer\iexplore.exe" & ActiveCell.Value, vbMinimizedFocus 'при 64 разр винде в 2-х местах сидит IE минимизируем окно открытия
Shell "C:\Program Files\Internet Explorer\iexplore.exe" & ActiveCell.Value, vbMinimizedFocus
Shell """" & ThisWorkbook.Path & "\OperaPortable\Opera.exe""" & ActiveCell.Value, vbNormalFocus 'открываем своим браузером
Как сминимизировать окно IE при открытии ссылки из активной ячейки ? Так не получается - активизируем Microsoft Internet Controls в reference
Код
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
Вопрос специфичный - столкнулся с такой проблемой Для открытия в портабельном браузере посредством макроса все получается в портабельных Chrom,Firefox,Opera в директории файла Excel
Пишет "Некорректный адрес URL недействителен и не может быть загружен.Синтаксис указанного адреса некорректен. Проверьте адрес на наличие ошибок и попробуйте снова."
2)Если пробуем так без адреса все корректно браузер запускается с домашней страницей
Open to a specific URL A URL for example: "C:\Program Files\K-Meleon\k-meleon.exe" www.yahoo.com
Пробую явно прописать директорию - ошибки нет но требуемую страницу не открывает (просто открывается с домашней страницы) .При этом другие браузеры на основе Cromium нормально работают с этим кодом.
Код
X = Shell("""C:\KMeleonPortable\k-meleon.exe""" & """https://google.com""", vbNormalNoFocus)
Всем здравствуйте ! Столкнулся с проблемой как прописать условие для видимых ячеек после автофильтра в диапазонах 7 и 18 столбца (начиная с 4 отфильтрованной строки до последней заполненной отфильтрованной строки)
думаю что алгоритм такой 1)определить Range диапазонов где будут выполняться условия 2)применить свои условия к ячейкам этого Range только в видимом диапазоне (после автофильтра) примерно так
но как задать требуемые условия для отфильтрованных ячеек не знаю (тк условие только для видимых ячеек)
Код
Dim Rng1 As Range, Rng2 As Range
'определяем диапазоны Rng1 и Rng2 для условий для видимых ячеек после автофильтра
'With ThisWorkbook.ActiveSheet.Range("A1:AH1000").SpecialCells(xlVisible)
'With ThisWorkbook.ActiveSheet.Range("A1:AH1000").SpecialCells(12)
With ThisWorkbook.ActiveSheet
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set Rng1 = .Range(.Cells(4, 7), .Cells(LastRow, 7))
Set Rng2 = .Range(.Cells(4, 18), .Cells(LastRow, 18))
If ActiveSheet.AutoFilter.Filters(7).On Or ActiveSheet.AutoFilter.Filters(18).On Then 'если автофильтр в 7 или 18 столбце включен
'и как прописать эти условия ??
If "Значения отфильтрованных ячеек в диапазоне Rng1 одинаковы" And "Значение отфильтрованных ячеек в диапазоне Rng1 = "Test""
And "Значения отфильтрованных ячеек в диапазоне Rng2 одинаковы" And "Значения отфильтрованных ячеек в диапазоне Rng2 > 0" Then
'Условие1
End If
If "Значения отфильтрованных ячеек в диапазоне Rng1 неодинаковы-несовпают" And "Значения отфильтрованных ячеек в диапазоне Rng2 неодинаковы-несовпают" Then
'Условие2
End If
Else
Exit Sub
End With
Добрый вечер всем ! Данная тема конечно подымалась на страницах форума но ответа для моего случая не нашел На листе в диапазоне С4:C100 в ячейках гиперссылки Их надо открывать только портабельным браузером Opera ("""" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""") - папка с портабельным браузером в директории файла При этом есть InternetExplorer который открывает ссылки по умолчанию - его надо исключить (советы по смене браузера по умолчанию в данной ситуации не подходят) Задаем чем открывать что открывать Чем открывать - ("""" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""") - папка с портабельным браузером Что открывать - активную ячейку только в диапазоне С4:C100 с гиперссылкой
1. Проблема1 -Вот так будет работать если явно задать www-адрес вариации разные 1.1) x = Shell("""" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & """http://www.planetaexcel.ru""", vbNormalNoFocus) 1.2)operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" Shell (operaPath & " -url http://www.planetaexcel.ru"), vbNormalFocus 1.3)Shell """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & "http://www.planetaexcel.ru", vbNormalFocus итого Проблема1 - будет открываться Opera которая явно задана и одновременно автоматом другой браузер по умолчанию (а нужно чтобы только Opera открывалась)
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(ActiveCell, Range("C4:C100")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
x = Shell("""" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & """http://www.planetaexcel.ru""", vbNormalNoFocus)
'operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe"""
'Shell (operaPath & " -url http://www.planetaexcel.ru"), vbNormalFocus
'Shell """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & "http://www.planetaexcel.ru", vbNormalFocus
End If
Exit Sub
2.Проблема2 связанная - видимо нужно ввести myHyperlink.Address либо просто Hyperlink.Address либо ActiveCell.Text чтоб реагировало правильно на клик в ячейке 1.1) x = Shell("""" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & myHyperlink.Address, vbNormalNoFocus) 1.2)operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" Shell (operaPath & " -url myHyperlink.Address"), vbNormalFocus 1.3)Shell """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & myHyperlink.Address, vbNormalFocus
не получается так или Hyperlink.Address или его не использовать - сделать ActiveCell.Text ?
Как задать свой браузер чтоб открывался только он по клику на активную ячейку с гиперссылкой(а браузер по умолчанию не открывался при этом) и как ввести Hyperlink.Address правильно ?
Вечер добрый всем ! Нужно закрыть приложение по командной строке windows средствами VBA Вроде простая задача но почему так трудно .... Почему именно так - нужно закрыть браузер Chrom при открытии нескольких независимых окон - сделать так чтобы закрыть все окна Chrom и выйти из браузера Что имеем штатными средствами чтобы так сделать: 1) ключами после ..... /Chrome.exe - нет таких ключей что дебильно ключей туча и такого нет (полный список ключей на http://peter.sh/experiments/chromium-command-line-switches/) 2)Горячие клавиши Выход Ctrl + Shift + q (Выход) и Ctrl + Shift + w (Закрыть все открытые вкладки и браузер) ( (https://support.google.com/chrome/answer/157179?hl=ru) путем Application.SendKeys ("^+(w)") и Application.SendKeys ("^+(q)") не работает в VBA при скрытии нескольких окон браузера в трей - окна неактивны получается и горячие клавиши не помогут
Есть путь к файлу chrome.exe C:\Program Files (x86)\Chrome\Chrome.exe и процесс в диспетчере задач windows Остается убить процесс в диспетчере чтоб все окна закрылись и выйти из Chrome
Как это сделать средствами VBA макросом ? Есть конечно Taskkill - завершение процесса из командной строки(http://sys-team-admin.ru/videouroki/administrirovanie/86-taskkill-zavershenie-protsessa-iz-komandnoj...) или по этому пути Shell ("c:\windows\system32\cmd.exe /c dir > C:\Program Files (x86)\Chrome\Chrome.exe") но как это сделать макросом или проще есть методы ? Так не работает к сожалению Shell ("c:\windows\system32\cmd.exe Taskkill /f /im chrome.exe") и так Shell ("c:\windows\system32\cmd.exe /c dir > Taskkill /f /im chrome.exe") не получается
Добрый вечер всем ! Макрос вытаскивает из текста цифры и текст отдельно но критерии немного другие нужно Вытаскивать только цифры в конце текста: Цифры в конце текста: всегда начинаются с пробела всегда в конце текста количество от 6 до 20 цифр
Вытаскивать только текст: текст это то что остается после вытаскивания последних цифр
Как прописать .Pattern в макросе чтобы соответствовал этим критериям ?
Код
Function NumbersOnly(srcStr As String) As String
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "[^0-9,]" ' последние цифры нужны после [\s....] пробела
NumbersOnly = .Replace(srcStr, vbNullString)
End With
Set objRegEx = Nothing
End Function
Function TextOnly(srcStr As String) As String
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.Pattern = "[0-9,]" ' все что осталось после [^....]
TextOnly = .Replace(srcStr, vbNullString)
End With
Set objRegEx = Nothing
End Function
Sub TextDoCifr()
ActiveCell.Offset(0, 1).Value = TextOnly(ActiveCell.Text)
End Sub
Sub CifraRight()
ActiveCell.Offset(0, 2).Value = NumbersOnly(ActiveCell.Text)
End Sub
Тема поднималась ранее но ответа не нашел Как ввести в стандартную процедуру Windows Copy/paste в активную книгу в ячейки листа форматирование вставляемого текста - размер шрифта цвет и прочее те не по макросу а в стандартной процедуре Windows Copy/paste (чтоб не плодить кнопки) по условию если открыта книга - практически нужно когда копируешь в поиске в свою таблицу данные с веб-страниц в ячейку листа собирая данные в поиске
Понятно что есть варианты - накопировал в ячейки - отформатировал лист - но есть ли вариант сразу в процессе копирования форматировать текст в буфере обмена перед вставкой в ячейку ? Может функция какая есть Пока варианты начала
Код
Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
Добрый вечер всем ! Возникла необходимость при открытии Chrome чистить куки кэш историю. Попробовал 2 пути 1)Через командную строку - смотрел списки команд здесь http://peter.sh/experiments/chromium-command-line-switches/ и здесь https://olegon.ru/showthread.php?t=17073 - ничего не нашел чтоб в комплексе все очистить 2) через chrome://settings/clearBrowserData - вбиваем в адресную строку и очистить всю историю и пр 3) принудительный запуск батника (*.bat) в директории файла excel - до этого еще не дошел
Остановился на варианте 2)
Однако как вставить корректно chrome://settings/clearBrowserData в код - так вообще не открывает
Добрый вечер всем ! Макрос в активной ячейке разделяет текст общий на только_текст и цифры с помощью функции Extract_Number_from_Text (прописана на Лист1) Функция работает - проверил - разделяет текст
надо было сделать так: 1)текст из активной ячейки разделить на только_текст и цифры 2)Tолько_текст открыть в браузере 3)Цифры открыть в другом окне броузера
Основной макрос(который не работает) и пример прилагаю Что неправильно сделал ?
Код
'http://www.excel-vba.ru/chto-umeet-excel/kak-ostavit-v-yachejke-tolko-cifry-ili-tolko-tekst/
'Для извлечения только чисел
'=Extract_Number_from_Text(A1; 0)
'или
'=Extract_Number_from_Text(A1)
'Для извлечения только текста
'=Extract_Number_from_Text(A1; 1)
Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 1 – текст
Dim sSymbol As String, sInsertWord As String
Dim i As Integer
If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
sInsertWord = ""
sSymbol = ""
For i = 1 To Len(sWord)
sSymbol = Mid(sWord, i, 1)
If Metod = 1 Then
If Not LCase(sSymbol) Like "*[0-9]*" Then
If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
sSymbol = ""
End If
End If
sInsertWord = sInsertWord & sSymbol
End If
Else
If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
sSymbol = ""
End If
End If
sInsertWord = sInsertWord & sSymbol
End If
End If
Next i
Extract_Number_from_Text = sInsertWord
End Function
'ОСНОВНОЙ МАКРОС
Sub РазделениеТекста()
Dim tt As String, cifr As String
'переменная tt - тект cifr - цифры в тексте
ActiveCell.Select
cifr = Extract_Number_from_Text(ActiveCell, 1)
tt = Extract_Number_from_Text(ActiveCell, 0)
With tt
'убираем кавычки в тексте
tt.Value = Replace(tt.Value, Chr(34), "")
'убираем все переносы
tt.Replace What:=Chr(10), Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
'убираем лишние пробелы
tt = Application.WorksheetFunction.Trim(tt.Value)
'заменяем пробелы на "+" так работает браузер в поиске - если 2 слова то в поиск через + между словами
tt = Replace(tt, " ", "+")
End With
Shell """C:\Program Files\Internet Explorer\IEXPLORE.EXE""" & "https://yandex.ru/search/?&text=" & tt, vbNormalFocus
Shell """C:\Program Files\Internet Explorer\IEXPLORE.EXE"" -new-window " & "https://yandex.ru/search/?&text=" & cifr, vbNormalFocus
'Shell """" & ThisWorkbook.Path & "\ChomiumPortable\chrome.exe""" & "https://yandex.ru/search/?&text=" & tt, vbNormalFocus
'Shell """" & ThisWorkbook.Path & "\ChomiumPortable\chrome.exe""--new--window " & "https://yandex.ru/search/?&text=" & cifr, vbNormalFocus
End Sub
Добрый вечер всем Макрос красит строку в диапазоне Range("A4:AB5003") в серый цвет по одинарному клику в столбце "А" по двойному клику в столбце "A" в закрашенной строке цвет снимается Как сделать так - если выше или ниже текущей закрашенной строки есть строки закрашенные тоже этим серым цветом то в них цвет снимается ? Те в диапазоне Range("A4:AB5003") может закрашиваться только одна строка в серый цвет по макросу - при закрасе текущей строки именно серый (а не другой)закрас с остальных строк снимается (снять серый цвет с диапазона выше и ниже текущей закрашенной строки )?
Макрос закраса такой
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'обратный закрас 1 столбец и переход сосед ячейка
If Not Intersect(Range("A4:A5003"), ActiveCell) Is Nothing Then
Call ВыделениеСтрокиНетЦвета
ActiveCell.Offset(0, 1).Select 'Переход на соседнюю ячейку
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Коорд выделение + выделение белым по выд 1 столбца'макрос красим строки по клику в столбце A и защита от выделения строки
If Target.Cells.Count > 1 Then Exit Sub 'если выделено больше 1 ячейки - выходим
If Not Intersect(Range("A4:A5003"), ActiveCell) Is Nothing Then
For j = 1 To i
If Rows(j).Select Then Exit Sub
Next
Call ВыделениеСтрокиСерый
End If
End Sub
Макрос открывает портабельный браузер и открывает ссылку подставляя значение из активной ячейки Так работает
Код
Private Sub CommandButton6_Click()
ActiveCell.Value = Replace(ActiveCell.Value, " ", "+")
Shell """C:\Users\Max\Desktop\Проект\ChomiumPortable\chrome.exe""" & "http://ekb.rosfirm.ru/catalog?show_list=1&simple_search=1&search=Найти®ions=&field_keywords=" & ActiveCell.Value, vbNormalFocus
End Sub
Как прописать относительный путь (не абсолютный) правильно ? - папка ChomiumPortable\chrome.exe лежит в тойже директории где и файл Excel (пути Проект\ChomiumPortable\chrome.exe и книга тоже в Проект\Книга1.xls) делаю так - не работает
столкнулся с проблемой Если убрать из формы заголовок то как ее перемещать мышью (тк она перемещается по заголовку) Возможно ли сделать так чтобы перемещать не по заголовку а в любом месте формы ?
Код для убирания заголовка такой в форму - в нем чтото изменить или это в свойствах форм правится ?
Код
Private Declare Function FindWindow _
Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong _
Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Sub UserForm_Initialize()
Dim ihWnd As Long, iStyle As Long
ihWnd = FindWindow(vbNullString, Me.Caption)
iStyle = GetWindowLong(ihWnd, -16&)
SetWindowLong ihWnd, -16&, iStyle And Not &HC00000
DrawMenuBar ihWnd
End Sub
Можно ли сохранить форму на рабочем столе видимой при сворачивании листа и обратно так же при этом - при раскрытии листа или активации форма остается на листе ? Форма дб модальной или немодальной при этом ? Попробовал так и так и пр не работает - все равно форма скрывается при сворачивании листа Можно ли продолжать отображать форму при сворачивании листа ?
Код
Private Sub UserForm_Initialize()
If Application.Visible = True Then
UserForm1.Show
End If
If Application.Visible = False Then
UserForm1.Show
End If
End Sub
день добрый есть макрос который в модуле книги Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) выдвигает активную ячейку в центр экрана Как его применить для активного листа без Target и без Private Sub Worksheet_SelectionChange(ByVal Target As Range)
только для действий определенного макроса на листе ( к сожалению замена sh на activesheet не помогла и target c ошибкой вылазит)
исх код макроса в книгу
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim cc As Range
Dim cw As Range
Dim dw As Long, dh As Long
Set cc = Target
Set cc = Sh.Cells(Int(cc.Row + cc.Rows.Count / 2), Int(cc.Column + cc.Columns.Count / 2))
Set cw = ActiveWindow.VisibleRange
Set cw = Sh.Cells(Int(cw.Row + cw.Rows.Count / 2), Int(cw.Column + cw.Columns.Count / 2))
dw = cc.Column - cw.Column
dh = cc.Row - cw.Row
On Error Resume Next
ActiveWindow.SmallScroll Down:=dh
ActiveWindow.SmallScroll ToRight:=dw
End Sub
Здравствуйте всем как сделать 2 условия на выполнение макроса ? проблема условий такая Макрос запускается по Private Sub Worksheet_SelectionChange(ByVal Target As Range) по клику на ячейке в столбце A
Но при этом еще есть одна бяка - при выделении целой любой строки (если захотел просто выделить) автоматом выделяются ячейки в столбце A что приводит к запуску макроса что нехорошо
Как правильно сделать 2 условия на выполнение макроса - если строка выделена макрос не выполняем - просто ячейка в столбце А выделена макрос выполняем
Код
If Not Intersect(Range("A4:A5003"), ActiveCell) Is Nothing Then
For j = 1 To i
If Rows(j).Select Then
Exit Sub
Next
...................... мой макрос
End If