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

Страницы: 1 2 3 След.
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
так если запустить команду - то запускается экземпляр IE свернутый   но одновременно + и открытый экземпляр IE запускается по клику на ячейку
Код
If ActiveCell.Value Like "*http://*" Or ActiveCell.Value Like "*https://*" Then
Shell "cmd.exe /c " & "start/min" & " " & "iexplore.exe"
End If 

как прикрутить команду
Shell "cmd.exe /c " & "start/min" & " " & "iexplore.exe"   на экземпляр  IE который открывается по клику на ячейке со ссылкой ?
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
можно конечно так - но IE прорывается все равно в случайном порядке(хотя обложил с двух сторон)  -  при этом методе   хотелось бы чисто сделать когда прорвется на ссылку IE (нейтрализовать его в трей чтоб не мелькал на экране - поэтому и вопрос в теме - добавить скрытие IE в трей) либо есть у кого вариант нейтрализовать IE по умолчанию (совет браузер по умолчанию не подходит - файл с макросом портабле на флешке и тд включение на разных компах получается)
Код
If ActiveCell.Value Like "*http://*" Or ActiveCell.Value Like "*https://*" Then
    Shell "cmd.exe /c " & "Taskkill" & " " & "/f" & " " & "/im" & " " & "iexplore.exe" 
    Shell KMeleonPath & " " & url, vbNormalNoFocus
    Shell "cmd.exe /c " & "Taskkill" & " " & "/f" & " " & "/im" & " " & "iexplore.exe"
Else
Exit Sub
End If
Изменено: fix555 - 25.03.2017 19:34:16
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
Код
Shell "explorer"
Shell "explorer.exe C:\Windows\win.ini", vbMinimizedFocus
В  Windows\win.ini что прописать надо ?
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
Все_просто  ссылку на примеры можно ?
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
как понимаю  командную строку и API привлекать нужно
Запуск IE свернутым в трей при открытии ячейки со ссылкой
 
Добрый день всем !

Как запускать 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

Так тоже не получается
Код
Dim IE As New InternetExplorer
IE.Visible = False
Изменено: fix555 - 25.03.2017 17:26:29
Открытие заданной ссылки в браузере
 
вот так получилось запустить K-Meleon - не воспринимает он код с "-url"
Код
KMeleonPath = """" & ThisWorkbook.Path & "\KMeleonPortable\k-meleon.exe"""
Shell (KMeleonPath & " https://google.com"), vbNormalFocus

ВАрианты:

Shell """" & ThisWorkbook.Path & "\KMeleonPortable\k-meleon.exe""" & " https://google.com", vbNormalFocus

Shell "C:\KMeleonPortable\k-meleon.exe" & " https://google.com", vbNormalFocus


Изменено: fix555 - 24.03.2017 11:15:42
Открытие заданной ссылки в браузере
 
Через командную строку так нормально прокатывает как в синтаксе "C:\KMeleonPortable\k-meleon.exe" www.yahoo.com  те глюков нет
Почему тогда через VBA не получается ?
Изменено: fix555 - 24.03.2017 09:26:56
Открытие заданной ссылки в браузере
 
Добрый вечер всем !

Вопрос специфичный - столкнулся с такой проблемой
Для открытия в портабельном браузере посредством макроса все получается в портабельных Chrom,Firefox,Opera в директории файла Excel
Код
operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe"""
Shell (operaPath & " -url https://google.com"), vbNormalFocus

1)Однако используя браузер K-Meleon (быстрый хороший) так не прокатывает
Код
KMeleonPath = """" & ThisWorkbook.Path & "\KMeleonPortable\k-meleon.exe"""
Shell (KMeleonPath & " -url https://google.com"), vbNormalFocus
Пишет "Некорректный адрес URL недействителен и не может быть загружен.Синтаксис указанного адреса некорректен. Проверьте адрес на наличие ошибок и попробуйте снова."

2)Если пробуем так без адреса все корректно браузер запускается с домашней страницей
Код
KMeleonPath = """" & ThisWorkbook.Path & "\KMeleonPortable\k-meleon.exe"""
Shell (KMeleonPath), vbNormalFocus

3) Если по простому
Код
Shell """" & ThisWorkbook.Path & "\KMeleonPortable\k-meleon.exe""" & "https://google.com"
так тоже не получается - вообще не видит google.com (другие браузеры на подобный код нормально все)

Почему так ? Как поправить синтаксис адресной строки для K-Meleon чтоб ошибок не было ?
Синтаксис здесь так написан http://kmeleonbrowser.org/wiki/Command+line+options?version=1

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)
Изменено: fix555 - 23.03.2017 23:07:37
Условие для диапазонов ячеек после автофильтра
 
ошибки дает код ругается на строки Set Rng1 = AutoFilter.Range.Columns(7).SpecialCells(12) 'устанавливаем Rng1 для фильтрованного диапазона в колонке 7
Закрыть ошибку On Error Resume Next ??
Код
Dim Rng1 As Range, Rng2 As Range
With ThisWorkbook.ActiveSheet
Set Rng1 = AutoFilter.Range.Columns(7).SpecialCells(12) 'устанавливаем Rng1 для фильтрованного диапазона в колонке 7
Set Rng2 = AutoFilter.Range.Columns(18).SpecialCells(12) 'устанавливаем Rng2 для фильтрованного диапазона в колонке 18 

End With
Условие для диапазонов ячеек после автофильтра
 
так получается
и как  сейчас перебрать значения ячеек отфильтрованных на совпадение или несовпадение значений ?
Код
Dim Rng1 As Range, Rng2 As Range
'определяем диапазоны Rng1 и Rng2 для условий для видимых ячеек после автофильтра
With ThisWorkbook.ActiveSheet
        Set Rng1 = AutoFilter.Range.Columns(7).SpecialCells(12) 'устанавливаем Rng1 для фильтрованного диапазона в колонке 7
        Set Rng2 = AutoFilter.Range.Columns(18).SpecialCells(12) 'устанавливаем Rng2 для фильтрованного диапазона в колонке 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



Изменено: fix555 - 02.03.2017 13:07:10
Условие для диапазонов ячеек после автофильтра
 
Всем здравствуйте !
Столкнулся с проблемой как прописать условие для видимых ячеек после автофильтра в диапазонах 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
Изменено: fix555 - 01.03.2017 22:36:06
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
Тогда так делаем без снятия гиперссылок  - вроде заработало
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(ActiveCell, Range("C4:C5003")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub

Dim url As String
Dim operaPath As String
 
operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe"""
url = ActiveCell.Value
 
If ActiveCell.Value Like "*http://*" Or ActiveCell.Value Like "*https://*" Then
    Shell operaPath & url, vbNormalNoFocus
    Shell "cmd.exe /c " & "Taskkill" & " " & "/f" & " " & "/im" & " " & "iexplore.exe"
Else
Exit Sub
End If

End If
End Sub
Изменено: fix555 - 18.02.2017 14:10:02
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
Кажется нашел в каком направлении копать - нужно сначала снять гиперссылку в активной ячейке - потом открывать своим браузером - потом (после открытия страницы) по желанию вернуть гиперссылку на ячейку
те если в ячейке только текст ссылки - не гиперссылка - то браузер по умолчанию не открывается и открывается только выбранный браузер
однако сейчас в таком коде все равно лезет браузер по умолчанию - хотя с ячейки предварительно снимаю гиперссылку отдельным If
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(ActiveCell, Range("C4:С100")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub

Dim url As String
Dim operaPath As String

operaPath = """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe"""
url = ActiveCell.Value

If ActiveCell.Value <> "" Then
Selection.Hyperlinks.Delete
Else
Exit Sub
End If

If ActiveCell.Value Like "*http://*" Or ActiveCell.Value Like "*https://*" Then
'Selection.Hyperlinks.Delete
'Application.Wait Now + TimeSerial(0, 0, 10)

    Shell operaPath & url, vbNormalNoFocus
Else
Exit Sub
End If

End If
End Sub
Изменено: fix555 - 18.02.2017 11:20:31
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
вы какбы обходите администратора  можно   под  администратором ведь пароль и логин администратора знаю комп локальный
решение не сетевое значит батники пишем в реестр   а что делать тупо но надежно ( хотя с какой стороны посмотреть ?? - антивирус точно будет ругаться на макрос на изменение в реестре)  тупик ....  :)   будем искаать
Изменено: fix555 - 17.02.2017 20:33:41
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
Jungl изменил текст путь 2  Батник делаем 2 шт - один меняет другой возвращает ?
Если так то делаем *.bat файл со сменой значения реестра потом по условию клика "не в диапазоне" делаем 2  *.bat файл который возвращает значения реестра ?
Ни разу не делал такого - интересно
Изменено: fix555 - 17.02.2017 20:02:09
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
а что делать :)  легких путей не ищем будем искать на англицком я думаю что проще изменить браузер по умолчанию программно а потом вернуть  как это сделать пока на знаю   но это снимает промежуточные проблемы  тут подходит ваш путь 2  regedit
Изменено: fix555 - 17.02.2017 19:49:43
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
че то не хочется колдовать с Replace  и загонять в переменные  хочется более изящное решение и плюсом проблема одновременного открытия 2 браузеров не решится только гиперссылка решится
Изменено: fix555 - 17.02.2017 19:31:03
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
тогда так чтоли делать забыли заменить или неправ
Код
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
    If InStr(Target.FormulaLocal, "ГИПЕРССЫЛКА") > 0 Then
    Shell """" & ThisWorkbook.Path & "\OperaPortable\OperaPortable.exe""" & "ГИПЕРССЫЛКА", vbNormalFocus
    End If
End If
End Sub
Изменено: fix555 - 17.02.2017 19:20:17
Открыть гиперссылку в ячейке другим браузером (не браузером по умолчанию) в диапазоне
 
Добрый вечер всем !
Данная тема конечно подымалась на страницах форума но ответа для моего случая не нашел
На листе в диапазоне С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 правильно ?
Изменено: fix555 - 17.02.2017 18:51:08
Закрыть приложение из командной строки средствами VBA
 
получилось так - все работает
Код
Shell "cmd.exe /c " & "Taskkill" & " " & "/f" & " " & "/im" & " " & "chrome.exe"
Shell "cmd.exe /c " & "Taskkill" & " " & "/f" & " " & "/im" & " " & "opera.exe"
Изменено: fix555 - 17.02.2017 12:05:32
Закрыть приложение из командной строки средствами VBA
 
на блокнот работает так  -только терминальное окно иногда вылазит и скрытие в трей  - есть какие варианты ?
Код
Set WshShell = CreateObject("WScript.Shell")
CheckRun = "C:\Windows\System32\notepad.exe"
Set WshExec = WshShell.Exec(CheckRun)
WshExec.Terminate
Изменено: fix555 - 16.02.2017 23:15:40
Закрыть приложение из командной строки средствами VBA
 
Забыл подробность  - у меня портабельный Chrome в директории с файлом  
пробую так - тоже не получается
Код
Set WshShell = CreateObject("WScript.Shell")
CheckRun = """" & ThisWorkbook.Path & "\ChomiumPortable\chrome.exe"""
Set WshExec = WshShell.Exec(CheckRun)
WshExec.Terminate
Закрыть приложение из командной строки средствами VBA
 
Вечер добрый всем !
Нужно закрыть приложение по командной строке 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") не получается
Изменено: fix555 - 16.02.2017 22:36:11
Извлечь заданное количество цифр из текста
 
Kuzmich благодарю за помощь - работает !  Только вот не понимаю строки If .test(this) Then   что это  ...
Извлечь заданное количество цифр из текста
 
попробовал усовершенствовать функцию для цифр  - если строка пустая или нет цифр в конце текста после пробела то выходим из функции
на строку полностью пустую работает
а вот на условие если нет цифр в конце текста после пробела не работает      в чем ошибка?
Код
Public Function LastLongNumber(ByVal this As String) As String
Dim sSymbol As String 'заводим переменную для подсчета общего количества цифр в строке
    If this = "" Then LastLongNumber = "": Exit Function ' если исходная ячейка пустая выходим из функции
    With CreateObject("VBScript.RegExp")
        .Pattern = "[^0-9,]" 'паттерн на все цифры
        sSymbol = .Replace(srcStr, vbNullString) 'вводим в переменную все цифры
        If Len(sSymbol) > 4 Then 'если общее количество цифр в строке >4  - а это значит что длинный номер в конце строки присутствует
        .Pattern = " \d{6,20}$" 'паттерн на длинный номер после пробела в конце текста
        LastLongNumber = Trim$(.Execute(this)(0).Value) ' извлекам номер от 6 до 20 символов после пробела в конце строки
        Else 'иначе выходим из функции
        Exit Function
        End If
    End With
End Function
Изменено: fix555 - 16.02.2017 14:26:54
Извлечь заданное количество цифр из текста
 
Так получилось
Для цифр (благодарю Андрей VG) - все работает
кроме варианта если вдруг нет такого условия (паттерна нет такого)то ошибка идет - как побороть?
Код
Public Function LastLongNumber(ByVal this As String) As String
    With CreateObject("VBScript.RegExp")
        .Pattern = " \d{6,20}$"
        LastLongNumber = Trim$(.Execute(this)(0).Value)
    End With
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,]" ' так все цифры некорректно удаляет
        .Pattern = " \d{6,20}$" ' все что до  \d{6,20}$
        TextOnly = .Replace(srcStr, vbNullString)
    End With
    Set objRegEx = Nothing
End Function
Изменено: fix555 - 12.02.2017 11:32:10
Извлечь заданное количество цифр из текста
 
Макросом требуется   а текст до цифр тогда так будет ?
Код
.Pattern = "^ \d{6,20}$"
 LastLongText = Trim$(.Execute(this)(0).Value)
Изменено: fix555 - 12.02.2017 00:11:06
Извлечь заданное количество цифр из текста
 
Добрый вечер всем !
Макрос вытаскивает из текста  цифры  и текст отдельно  но критерии немного другие нужно
Вытаскивать только цифры в конце текста:
Цифры в конце текста:
всегда начинаются с пробела
всегда в конце текста
количество от 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
Copy paste с форматированием текста в ячейку
 
попробовал так все совместить и пр не прокатило
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    'предварительное форматирование
    Range("A1:Y85").Select
    Selection.NumberFormat = "@"
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "обычный"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    'конец предварительное форматирование
    If IsEmpty(Target.Cells(1, 1)) Then
        Target = Empty
    Else
        Target.Copy
        Application.Undo 'ошибка идет
        Target.PasteSpecial xlPasteValues
        Sh.PasteSpecial NoHTMLFormatting:=True
    End If
    Application.EnableEvents = True
End Sub
Страницы: 1 2 3 След.
Наверх