Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 137 След.
Проверка для активной книги - "ThisWorkbook" или "ЭтаКнига", для русской версии используется ссылка на ЭтаКнига. Для английской ThisWorkbook
 
Всем - привет. Можно проще: Set objVBComp = objVBProj.VBComponents(ActiveWorkbook.CodeName)
Изменено: ZVI - 18 Авг 2019 02:01:48
Разрушительный сбой системы после установки PLEXa, Сбой в работе системы и Екселя после установки PLEXa
 
Цитата
taigor написал: ... работает
Значит, VBA установлен корректно. Попробуйте еще отключить защищенный просмотр (см. 2-ю половину сообщения #4).
Разрушительный сбой системы после установки PLEXa, Сбой в работе системы и Екселя после установки PLEXa
 
Нет ответа на важный вопрос Николая: "Насчет ошибки - а ставили надстройку по инструкции (была в архиве)?".
Причину такого рода ошибок трудно диагностировать, попробуйте установить любую другую простенькую надстройку, например из этой темы. Если возникнет такая же ошибка, то, возможно, проблемы с установкой VBA (компонент может быть вообще не установлен, особенно, если это portable-суррогат).
На всякий случай попробуйте еще отключить защищенный просмотр: Excel - Файл - Параметры - Центр управления безопасности -  Параметры центра управления безопасности -  Защищенный просмотр - снять все флажки в группе "Защищенный просмотр" - OK - OK. При использовании защищенного просмотра не всякий код автозагрузки надстройки сработает корректно.
Изменено: ZVI - 9 Авг 2019 03:34:00
Cборка листов не совсем корректно работает, марос не удаляет лишние листыю, Сборка листов. Не удаляет лишние Листы
 
Цитата
AgPilot написала: все файлы эксель на компьютере - не хранятся. Все  хранится на one drive, а не на самом компе. Доступ к любому файлу - через синхронизацию с майкрософт one drive. P.S не вижу смысла файл прикладывать
Добрый день, Дарья.
Реально синхронизируемые файлы OneDrive хранятся на локальном компьютере внутри папки:
C:\Users\<Пользователь>\OneDrive\
Синхронизация означает, что внесенные Вами изменения в локальные файлы автоматически записываются и в соответствующие им файлы на OneDrive, и наоборот  - при изменениях кем-то другим данных в файлах на OneDrive, на локальные файлы почти сразу же "накатываются" эти изменения и тут же отображаются в открытой книге.
Есть некоторые особенности работы VBA-кода надстроек в Excel 365 в режиме автосохранения общей книги в облаке, они описаны в Как автосохранение влияет на надстройки и макросы

Попробуйте на панели быстрого доступа (Excel 365) отключить автосохранение книги в облаке. Если не поможет, то для выяснения причины лучше бы посмотреть на копию книги с удаленными данными (оставьте пару тестовых строк на листах).
И подробно опишите последовательность действий, например, так:
1. Выделить листы 1, 2 и 3
2. Вызвать Plex - Собрать
3. Установить: только с выделенных листов, начиная с ячейки A1, только значения, установить 3 нижних флажка, OK
Тогда Автору надстройки (Николаю Павлову) или, возможно, кому-то еще будет легче разобраться с проблемой.
В идеале, конечно, лучше бы получить ссылку на тестовую копию Вашей книги в OneDrive, с которой возникли проблемы.
Изменено: ZVI - 9 Авг 2019 04:06:50
bedvit. Как использовать решения автора, COM и XLL. Отличие и подключение
 
Цитата
Alec Perle написал: скобки там как бы и не нужны
Эти скобки еще и тормозят чрезмерно, так как для VBA они означают, что нужно создать временную переменную As Variant и в нее скопировать весь массив. Посмотрите, чего стоят лишние скобки на таком примере:
Код
Sub Test()
  
  Const rMax = 1000000
  Dim r As Long, t As Single, s As String, arr()
  
  s = String(2000, "x")
  ReDim arr(1 To rMax, 1 To 1)
  
  t = Timer
  For r = 1 To UBound(arr)
    arr(r, 1) = s
  Next
  Debug.Print 1, Round(Timer - t, 3)
  
  t = Timer
  Dummy arr  '<-- Суперскорость
  Debug.Print 2, Round(Timer - t, 3)
  
  t = Timer
  Dummy (arr) '<-- Супертормоз
  Debug.Print 3, Round(Timer - t, 3)
  
End Sub

Function Dummy(x)
  ' Do nothing
End Function
Изменено: ZVI - 3 Авг 2019 07:11:37
Как закрыть только windows(ThisWorkbook.name) при клике на Кнопку в userform?
 
Нужно учитывать, что бывает еще и невидимая личная книга макросов.
Код
Sub MyClose()
  Dim i As Long, wb As Workbook
  For Each wb In Application.Workbooks
    If wb.Windows(1).Visible Then
      i = i + 1
      If i > 1 Then Exit For
    End If
  Next
  If i = 1 Then
    MsgBox "Одна книга, приложение будет закрыто без сохранение активной книги"
    ActiveWorkbook.Saved = True
    Application.Quit
  Else
    MsgBox "Книг: " & i & " шт, активная будет закрыта без сохранения"
    ActiveWorkbook.Close SaveChanges:=False
  End If
End Sub
Изменено: ZVI - 30 Июл 2019 15:50:04
Защита книги от распространения
 
Цитата
Vitasik написал: Понятно, что он может пригласить знающего человека, но опять же вопрос, почему же он тогда собственно не обратился к этому знающему, для создания этого файла.
Совершенно верно.

По теме - если "заказчик файл этот раздал коллегам ...  и привязка к железу нежелательна", то заказчику позволено устанавливать на свои (читай - любые) компьютеры неограниченное количество копий. Таким образом, решения в принципе нет, потому что отличий свой-чужой нет. И VK не спасет – заведут общий аккаунт, например. Варианты обхода защит всегда возможны, но как Вы сами пишите - нужен здравый смысл, и он вполне достаточен на уровне защиты VBA-кода и элементарной привязки к чему-либо (реестру, наличию какого-то файла и т.п.).  Тот, кому защита нипочем, обычно и сам в силах написать более эффективные формулы и код. Но ему это будет неинтересно, и обычно у такого уровня спецов все в порядке с моральными принципами, игнорируйте такие случаи, иначе стоимость защиты станет неадекватной.

Конкретный совет - замените пару формул пользовательскими функциями VBA-надстройки, тогда без этой надстройки копировать книгу с формулами будет бесполезно, А надстройку привязывайте к чему-нибудь. Если заказчиков ожидается не более сотни (издержки сопровождения невелики), то пусть, например, при первой установке надстройка заглянет в реестр и, не обнаружив там чего-то (раздела, ключа, значения), сформирует бланк письма с запросом регистрационного кода, а по письму уже разбирайтесь, от кого оно пришло и что отвечать. Ответ от ранее зарегистрированных пользователей можно и автоматизировать средствами VBA, при этом можно ограничить количество или частоту новых инсталляций. Потом, после ввода заказчиком корректного регистрационного кода на запрос надстройки, она впишет необходимое в реестр и больше не будет тревожить заказчика. Код надстройки достаточно защитить штатным паролем.
Изменено: ZVI - 30 Июл 2019 06:28:50
Альтернативное назначение клавиш в Excel для переключения между листами
 
Виктория, надстройка уже создана, посмотрите приложение к сообщению  №5. Вам осталось только установить надстройку себе (как устанавливать - см. в том же сообщении).
Там и Alt-цифра работает для вызова действий добавленных на панель быстрого доступа кнопок, так как это штатная функциональность Excel
Напишите, если что-то будет непонятно.
Изменено: ZVI - 29 Июл 2019 22:00:44
Импорт данных из PDF в Excel, Как массово получить данные из PDF-файлов с текстовым слоем в Excel
 
Цитата
Jack Famous написал: ...спасибо за наводку!
Алексей, рад, что вариант решения нашелся.
Если есть Adobe Acrobat, то конечно им проще всего воспользоваться из-за интерфейса.
Удачи Вам!
Импорт данных из PDF в Excel, Как массово получить данные из PDF-файлов с текстовым слоем в Excel
 
Цитата
Jack Famous написал: ... но у нас с вами разные результаты...
Не сравнивал. Формально - в выборе пунктов форматов чисел (у меня по умолчанию в Acrobat 1-й пункт).
Если отличие в разделителях (у меня в Excel разделители системные русские, операционка русская), то какая разница с точки зрения вопроса темы?
Если разница в контенте, то, возможно, у нас разные версии Acrobat, у меня 11.0.3
Изменено: ZVI - 29 Июл 2019 12:16:04
Импорт данных из PDF в Excel, Как массово получить данные из PDF-файлов с текстовым слоем в Excel
 
Алексей, эти настройки есть, да.
По умолчанию стоят 1 лист для всего документа, разделителя из региональных настроек и OCR при необходимости.
Есть ли к ним программный интерфейс - нужно изучать документацию.
Но одного листа, надеюсь, должно хватить, а разделители легко правятся из VBA, если что.
В чем здесь видите проблемы?
P.S. По поводу отличий - у меня Adobe Actobat XI Pro с параметрами по умолчанию.
Изменено: ZVI - 29 Июл 2019 12:06:29
Импорт данных из PDF в Excel, Как массово получить данные из PDF-файлов с текстовым слоем в Excel
 
Цитата
Jack Famous написал: ...А как регулировать настройки? Там же их немало…
Добрый день, Алексей. Нет там настроек, а результат есть, приведен в #26.
Adobe - разработчики PDF-формата (1990г.), им и карты в руки  ;)
Альтернативное назначение клавиш в Excel для переключения между листами
 
Обновил вложение в сообщении #5
Изменения 2-й версии: на панель быстрого доступа добавлена 3-я кнопка для перехода на предыдущий активный лист, даже если он в другой книге. Это же действие можно выполнить по Ctrl+Enter, при этом Enter - на цифровой клавиатуре справа (Numpad). Внесены также улучшения в код надстройки.
Изменено: ZVI - 27 Июл 2019 03:23:32
Импорт данных из PDF в Excel, Как массово получить данные из PDF-файлов с текстовым слоем в Excel
 
Приложил для коллекции XLSX -файл, который сформировал Adobe Acrobat из меню:
Файл - Сохранить как другой - Электронная таблица - Рабочая книга MS Excel.
Счастливые обладатели Adobe Acrobat могут посредством VBA это автоматизировать, используя встроенный интерфейс JSObject:
Код
  ...
  Set objJSO = objAcroPDDoc.GetJSObject
  ret = objJSO.SaveAs("D:\Test.xlsx", "com.adobe.acrobat.xlsx")
Изменено: ZVI - 26 Июл 2019 22:23:00
Зависимая замена формул на их значение с блокировкой ячеек
 
Ek1985, рад, что цель достигнута, всего Вам доброго!  :)
Зависимая замена формул на их значение с блокировкой ячеек
 
Цитата
Ek1985 написала: ошибка ...1004
Это моя ошибка в коде, исправил и приложил обновление в сообщении #11
После снятии блокировки все работает, как ожидалось (но требуется изменение в ячейке, например, удаление или ввод числа) до очередной первой блокировки.
Изменено: ZVI - 26 Июл 2019 07:36:35
Альтернативное назначение клавиш в Excel для переключения между листами
 
Добрый день, Виктория.
Сделал и приложил надстройку (версия 2) для упрощения навигации между листами Excel.
Особенности:
1. Переключение между листами книги Excel по "Ctrl+PgUp" и "Ctrl+PgDn"
  на цифровой дополнительной клавиатуре работает при любом состоянии "NumLock".
2. На панель быстрого доступа автоматически добавляются 3 кнопки:
  2.1. Стрелка влево - переход к листу слева, аналогично "Ctrl+PgUp"
  2.2. Стрелка вправо - переход к листу справа, аналогично "Ctrl+PgDn"
  2.3. Две стрелки - переход к предыдущему активному листу, даже если он был в другой книге, вызывается и по "Ctrl+Enter(на цифр.клав.справа)"
3. Если нажимать и отпускать "Shift-Tab", то текущий лист переключится на лист книги, который был активным до этого. При зажатой "Shift" многократное нажатие "Tab"  будет переключать все листы книги по циклу, аналогично тому, как окна переключаются по "Alt+Tab"
Установка
Надстройка после извлечения из zip-архива устанавливается в Excel обычным способом, через:
Файл - Параметры - Надстройки - Перейти - Обзор - (выбрать файл надстройки) - OK

Адрес для замечаний и предложений указан в моём профиле и в комментарии приложенного архива с надстройкой.
Изменено: ZVI - 30 Июл 2019 06:52:09 (Подправлен текст сообщения)
Зависимая замена формул на их значение с блокировкой ячеек
 
Цитата
Ek1985 написала: ...нужно, чтоб С=A-B и полученное значение заблокировалось
Так сделано в обновленном приложении к сообщению #11, проверьте, если что-то не так, то "опишите последовательность действий, которая приводит к проблеме."
Зависимая замена формул на их значение с блокировкой ячеек
 
Подправил код в сообщении #13, проверьте, может, там уже правильно ([А] и [В]).
И на всякий случай приложил к этому сообщению вариант с [А] или [В]
Зависимая замена формул на их значение с блокировкой ячеек
 
Реализован такой алгоритм: [C] блокируется как только и в [А], и в [В] записаны числа.
Резонно же, что без [А] не записывают [В], так как откуда взяться "Расходу", если его не из чего брать без "Вноса".
Cначала число вносится в [А], а затем, возможно, и в [В], а если в [В] не предполагается ничего вносить, тогда для блокировки нужно в [В] записать ноль.
Опишите логику своего алгоритма, если она отличается от описанного выше.
Если логика такая же, как у меня, то опишите последовательность действий, которая приводит к проблеме.

В сообщении #1, между прочим,  так и было записано про заполнение в "A и B", а не в "A или B"
2. При первоначальном заполнении A и B, значение C, которое получилось по формуле-заблокировать, чтоб при дальнейшем изменении значений  A и B - С не изменялось.
Изменено: ZVI - 25 Июл 2019 06:46:38
Зависимая замена формул на их значение с блокировкой ячеек
 
Сделал, как понял, проверьте
Изменено: ZVI - 26 Июл 2019 07:30:57 (Исправление №2)
Сокращение формулы ячейки за счёт использования именованной формулы
 
Цитата
Mandarinka: ... спасибо большое
Рад, что помогло Вам :)
Изменено: ZVI - 25 Июл 2019 03:50:11
Вставить массивную формулу через VBA
 
Добрый день. Формула для этого должна быть англоязычной:
Worksheets("list").Cells(2, 5).FormulaArray = "=MIN(IF($A$2:$A$11<=E1,$B$2:$B$11))"
Сокращение формулы ячейки за счёт использования именованной формулы
 
Странное задание, что означает сокращенный вид формулы да еще с помощью маркрорекордера?
Возможно имелось ввиду сократить формулу с использованием именованной формулы:
Тогда макрорекордером можно записать такой макрос:
Код
Sub Макрос1()
'
' Макрос1 Макрос
'

'
    Range("B5").Select
    ActiveWorkbook.Names.Add Name:="g", RefersToR1C1:= _
        "=IF(Лист1!RC[1]<=0,SQRT(1+ABS(Лист1!RC[1])),(1+3*Лист1!RC[1])/2+(1+Лист1!RC[1])^(1/3))"
    Selection.FormulaR1C1 = "=g"
End Sub

В итоге выполнения макроса в ячейке B5 будет формула, "сокращенней" которой не бывает: =g
Пример с кодом макроса приложил.
Название темы: Сокращение формулы ячейки за счет использование имени с формулой
Изменено: ZVI - 25 Июл 2019 03:51:05
Как из текста при получении русского слова исключить слова, содержащие в конце слова ая или ый или ое?, в продолжение темы "Как из текста-каши получить первое русское слово"
 
Цитата
getana написал: Base шкафчик 665
У меня работает. Вот если бы Вы приложили excel файл, в котором не работает, то было бы понятнее.
Скопируете то, что написали в предыдущем сообщении и вставьте в ячейку - "шкафчик" выделится?
Дело в том, что на этом форуме есть проблема - символ CHR(160) автоматически меняются на пробел CHR(32).
В Ваших данных ранее уже было одно значение, где вместо пробела использовался CHR(160)
В конце моего сообщения #6 есть предупреждение:
Изменено: ZVI - 22 Июл 2019 07:32:32 (CHR(160) не вставляется в код на форуме!)
И в коде #6 есть строка с комментарием:
Const Pattern1 = "[ ,\. ]"  ' 1-й символ это CHR(160), последний - пробел
В коде для Const Pattern1 удалите первый символ после открывающей квадратной скобки "[" и в позиции удаленного символа нажмите и удерживайте Alt и на цифровой клавиатуре (та, что справа) введите 0160 затем отпустите ALT.
Как из текста при получении русского слова исключить слова, содержащие в конце слова ая или ый или ое?, в продолжение темы "Как из текста-каши получить первое русское слово"
 
Цитата
getana написал:  Спасибо, все работает на 100% пост #6
Пожалуйста :)

Цитата
sokol92 написал: ... для идеала нужны словари, таблицы Зализняка и т.п. :)
Владимир, в идеале - да, а у меня решение просто подогнано  под конкретные данные ;) Ну, и маленький трюк придуман с "\b", чтобы работало не только с англо-словами.
Изменено: ZVI - 21 Июл 2019 20:58:06
Как из текста при получении русского слова исключить слова, содержащие в конце слова ая или ый или ое?, в продолжение темы "Как из текста-каши получить первое русское слово"
 
Фрагмент кода "Исключения из правил" не принципиальный, его можно исключить, он исправляет всего лишь несколько не очень точных результатов из всего списка.
Как из текста при получении русского слова исключить слова, содержащие в конце слова ая или ый или ое?, в продолжение темы "Как из текста-каши получить первое русское слово"
 
Цитата
getana написал: надо исключить не конкретные слова
Вы код запускали?
Как из текста при получении русского слова исключить слова, содержащие в конце слова ая или ый или ое?, в продолжение темы "Как из текста-каши получить первое русское слово"
 
Вариант для текущего и добавленного к нему предыдущего списка
Код
Sub Main()
 
  Const MinLength = 4         ' Мин. длина слова в символах
  Const ExcludeList = "ая,ый,ое,ся,яг"  ' Окончания игнорируемых слов
  Const Pattern1 = "[ ,\. ]"  ' 1-й символ это CHR(160), последний - пробел
  Const Pattern2 = "\b_([А-ЯЁ\-]{" & MinLength & ",})[( ]"
   
  Dim i As Long, a() As Variant, Obj As Object, Rng As Range, s As String
 
  ' Задать диапазон входных данных
  With ThisWorkbook.Sheets(1)
    Set Rng = .Range("d2", .Cells(.Rows.Count, "d").End(xlUp))
  End With
  a() = Rng.Value
     
  ' Найти первое русское слова по шаблону
  With CreateObject("VBScript.RegExp")
    .Global = True
    .IgnoreCase = True
    For i = 1 To UBound(a)
      s = Trim(a(i, 1))
      If Len(s) = 0 Then
        a(i, 1) = Empty
      Else
        a(i, 1) = "(нет)"
        ' --> Исключения из правил
        If InStr(1, s, "душевая", 1) > 0 Then a(i, 1) = "душевая"
        If InStr(1, s, "хром", 1) > 0 Then s = Replace(s, "хром", "", Compare:=1)
        If InStr(1, s, "туал.", 1) > 0 Then s = Replace(s, "туал.", "", Compare:=1)
        ' <-- Конец исключений
        .Pattern = Pattern1
        s = .Replace(s, " _")
        .Pattern = Pattern2
        For Each Obj In .Execute("_" & s & " ")
          s = LCase(Obj.SubMatches(0))
          If InStr(ExcludeList, Right(s, 2)) = 0 Then
            a(i, 1) = s
            Set Obj = Nothing
            Exit For
          End If
        Next
      End If
    Next
  End With
   
  ' Поместить результат в столбец [F]
  Rng.EntireRow.Columns("F").Value = a()
   
End Sub
Изменено: ZVI - 22 Июл 2019 07:32:32 (CHR(160) не вставляется в код на форуме!)
Как из текста-каши получить первое русское слово
 
Цитата
getana:... исключить еще слова, содержащие в конце слова ая или ый ? Например, слова "белый" или "душевая"
Рад был помочь. Всё можно сделать, но только по правилам форума (один вопрос в теме). Кстати, слово "душевая" может быть как прилагательным, так и существительным (например, в "Душевая колонная, хром")
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 137 След.
Наверх