Аналогичная проблема была описана , но ответа ТС так и не получил.
Разные книги макросов для разных версий Excel (2003 и 2013)
Разные книги макросов для разных версий Excel (2003 и 2013)
Рисунок слишком велик и будет усечен
Программно узнать имя текущей процедуры.
Программно узнать имя текущей процедуры.
Программно узнать имя текущей процедуры.
Ошибка Application.Transpose, Type Mismatch
Ошибка Application.Transpose, Type Mismatch
Ошибка Application.Transpose, Type Mismatch
Построчное чтение текстового файла, При условии, что в теле файла есть символы EOF
Как сделать поразрядную сортировку в excel
|
15.10.2013 11:27:59
Либо воспользуйтесь способом, предложенным Z:
|
|||||
|
|
|
Построчное чтение текстового файла, При условии, что в теле файла есть символы EOF
|
15.10.2013 11:01:24
Всем привет!
Огромное спасибо за код, хотя достаточно было только наводку дать. В сторону TextStream присмотрелся вчера вечером на просторах майкрософта, но с английским у меня очень печально.
Сейчас буду пробовать, главное чтобы TextStream.ReadAll выполнялся не очень долго. И еще, надеюсь, последний вопрос: на что опирается параметр AtEndOfStream - на физический конец файла, как в бинарном подходе или же на текстовые маркеры в теле файла? А то из я совершенно ничего не понял. Еще раз спасибо, мне кажется это подойдёт. Проверю, отпишусь. Вчитался:
PS. VBA.Split=Split? |
|||||
|
|
|
Обратный порядок для диапазона
|
14.10.2013 13:40:26
А так?
Дело в том, что когда Вы в цикле доходите до середины массива, вторая половина уже оказывается переписанной. Тут нужен второй массив, ну или промежуточная переменная.
Изменено: - 14.10.2013 13:42:38
|
|||
|
|
|
Построчное чтение текстового файла, При условии, что в теле файла есть символы EOF
|
14.10.2013 13:33:38
Всем привет!
Собственно, сабж. Предпосылки: есть база данных предприятия. Дважды в день я экспортирую таблицы в текст (с разделением табуляцией), а эти текстовые файлы заранее связаны с Access, как внешние источники данных. проблема в том, что некоторые юзеры вносят в текстовые поля таблиц символы Tab, копируя артикулы из чужих программ. При этом в текстовых файлах съезжают поля и Access начинает матюгаться (я его использую для отчетов). Придумал следующее: открывать текстовые файлы для чтения на VBA, подсчитывать кол-во Chr(9) в каждой строке, а при несовпадении с установленным эталоном выводить в лог на лист Excel. Работает довольно быстро, но вот проблема: в двух таблицах есть зашифрованные бинарные поля, которые изобилуют символами EOF (Ctrl+Z, #1A) и чтение файла обрывается. Пробовал читать, как бинарник, потом разделять на строки:
Пожалуйста, предложите какой-нибудь шустрый метод. Только просьба есть: если предложенный вариант будет предполагать использование ADO или API, в двух словах опишите как это работает. PS: код в приложенном файле не будет работать в отрыве от реальных данных. Там на определенном листе в книге personal.xlsb находится перечень файлов и эталонное значение. |
|||||
|
|
|
Vba открытие файла Excel
|
17.09.2013 19:17:13
Мне кажется, Вы привели не весь код. Откуда, к примеру, взялась переменная File1_lastrow? На момент выполнения Range("A" & File1_lastrow) она у Вас имеет значение Empty. Далее, File2_lastrow содержит номер последней заполненной строки. При таком копировании последняя строка в 2.xlsm будет затёрта новыми данными. Приведите весь код, а если это и есть весь код, подробнее опишите, что хотите получить, а также примерное кол-во ячеек, постоянное оно или меняется, имена файлов меняются? данные копируются из одного файла или их там пачка?
Изменено: - 17.09.2013 19:18:01
|
|
|
|
|
Рисунок слишком велик и будет усечен
|
17.09.2013 18:34:37
У меня такая же проблема, только с оговоркой: если диапазон, который нужно скопировать/вырезать большой, то таких окошек будет штук 50. Начал копать и докопался. Не знаю, как у Вас, а у меня причиной был/есть клиент удалённого рабочего стола. На рабочем компе у меня стоит Linux Mint, клиент FreeRDP (альфа сборка), на сервере - Win Server 2012 и Office 2013. Вся обработка данных производится удалённо. Ошибка возникает в случае, если у меня запущено 2 и более подключения rdp. Дело в том, что для подключения извне винда вешает на буфер обмена процесс-монитор для синхронизации содержимого буфера. Когда я запускаю еще одно подключение, они начинают конфликтовать.
Надеюсь кому-то поможет.
Изменено: - 17.09.2013 18:35:58
|
|
|
|
|
Выделить серию совпадающих символов
Выделить серию совпадающих символов
|
13.08.2013 12:04:04
Отписываюсь. ЗЫ спасибо за идею с IIf(Left(t, 1) = 1, vbRed, vbBlue) |
|||||
|
|
|
Выделить серию совпадающих символов
|
13.08.2013 11:43:34
Кстати, у меня вариант KuklP'а почему-то выделил только единицы, а нули проигнорировал. |
|||
|
|
|
Удаление цифр из текста
Выделить серию совпадающих символов
Связывание листов с *.dbf (VBA), С автоматическим обновлением
|
12.08.2013 17:28:32
Всем привет!
Народ, помогите решить проблему. Я не знаю точно, в какую сторону копать, потому начну сначала. Есть база данных предприятия, состоящая из нескольких сотен таблиц, часть которых хранится в DBF (версии, кажись dBase IV). Для отслеживания ошибок логики в базе, а также для объединения таблиц до последнего времени я использовал такую схему: каждый день (иногда по несколько раз) делаю экспорт в текстовые файлы, которые заранее связаны с Access 2013 как внешние данные. Связывание/импорт из DBF напрямую он не умеет. Ввиду особенностей наших программ экспорт в текст длится довольно долго, к тому же вылазят косяки (например табуляция в полях типа String или Memo). Так что я начал смотреть в сторону MS Query применительно к Excel (или любой похожей технологии). Мне это видится так: Создать *надцать листов или именованных диапазонов в книге Excel, каждый из которых будет связан со своим файлом DBF. При открытии книги (или удаленно, макросом из Access) их содержимое должно обновляться. А уж эта книга будет связана с Access, как внешний источник. На деле же оказалось сложнее, чем я ожидал... Когда я полез по мануалам, то окончательно запутался в этих драйверах ODBC, строках подключения, настройках и т.д. В графическом интерфейсе я встретил только кучу окошек с похожим функционалом, которые вложены друг в друга, пустые либо недостаточно заполненные выпадающие списки, предупреждения о том, что я не заполнил какие-то поля. Хотелось бы реализовать на VBA полу-автоматическое пополнение книги новыми таблицами. В общем, помогите встать на путь истинный Несколько слов об окружении: сами таблицы в каждый момент времени находятся в работе, их используют сразу много юзеров. Связывать их нужно ReadOnly, чтобы точно ничего не накосячить. Не смог найти никакой информации о записях, помеченных как удаленные. Можно ли их как-то фильтровать? В общем, вопросов сразу масса. Некоторые из них изначально основаны на ложных представлениях. Помогите разобраться по порядку. Для начала: какой драйвер использовать для dBase IV? Он стандартный? Чем принципиально отличается ODBC от ADO. Что предпочтительнее (если это разные вещи)? Заранее спасибо всем, кто поможет. |
|
|
|
|
убрать пустые ячейки
убрать пустые ячейки
Макрос удаление цифр из текста
|
26.06.2013 19:30:56
Вот Вам универсальный макрос для удаления любых символов на Ваше усмотрение. Он работает над выделенным диапазоном, заменяя его значения на новые. Обратите внимание на возможность неявного преобразования. Например, если в ячейке было значение "00056 АбВгД79", и изначально стоял формат ячейки "общий", то удаление пробелов и букв даст "5679". Чтобы избежать этого нужно заранее установить формат ячейки текстовый. Впрочем, конкретно Вас это может и не касаться, если нужно наоборот удалять цифры, а оставлять буквы.
PS вариант от LVL в плане краткости и лаконичности лучше. К сожалению я не смыслю в регулярных выражениях.
Изменено: - 26.06.2013 19:36:55
|
|
|
|
|
Форма прячется при смене активной книги
|
26.06.2013 00:41:26
Для начала, хочу поблагодарить всех, кто участвовал в обсуждении. Вот только проблема, к сожалению не решилась.
Дома у меня Win8 32bit, Office 2013 32bit; на работе офис тот же, а система Server 2012 (разрядность не помню). Обновления стоят все. На обоих компах одна и та же трабла: загрузил пример кода предложенный Jan Karel Pieterse по ссылке выше, но код работает некорректно. При смене книги, через секунду (или меньше) фокус снова передается окну формы. Естественно при этом активируется исходная книга. Даже больше: если поклацать мышкой по ячейкам первой книги, то Selection меняется, но форма все-равно перехватывает фокус, так что внести какие-либо изменения на лист невозможно. Единственный способ - это двойной клик по ячейке, но после нажатия enter происходит то же самое. А если клацать по ячейкам второй книги, то на листе первой происходит самопроизвольное выделение диапазона (хз почему). Кому не лень, пожалуйста загрузите пример и поганяйте у себя. Дабы не сидеть, сложа руки, решил прогнать код пошагово. Добился таких результатов (кто просматривал код, поймет): 1. Поскольку форма немодальная, то после .Show и End Sub отладка по F8 прекращается. 2. Физически форма становится видимой на этапе инициализации при выполнении SetWindowPos метода MakeTopMost. То есть, до выполнения .Show. 3. При проходе кода по F8, когда доходит дело до процедуры AddForm, то строка Application.OnTime Now, "HandleFormHideUnHide" просто не выполняется, управление не передается. (Я правильно понял, что это типа Call?). И вот тут-то происходит интересное: форма перестает перехватывать фокус, и можно работать с листами, но она напрочь теряет свойство скрываться при активации стороннего окна и упрямо держится поверх всего. И так до тех пор пока ее не закроешь. PS
Изменено: - 26.06.2013 00:57:38
|
|||
|
|
|
Обработчики событий книги в коде персонального модуля.
Обработчики событий книги в коде персонального модуля.
Обработчики событий книги в коде персонального модуля.
|
22.06.2013 14:56:26
не то, чтобы не устраивает. Ну допустим: получил по почте файл или экспортировал из access, открыл и автоматом запустилось отслеживание событий, например создал пустой лист - применилась заливка по определенному образцу, переместил курсор - сдвинулась область просмотра. Но, но при закрытии книги в ней не должно оставаться никакого кода, а только результаты его работы. Извините, что так путанно. Пожалуй я чувствую, что такую вожность в vba должны были встроить, но не могу отыскать.
Изменено: - 22.06.2013 14:57:24
|
|
|
|
|
Обработчики событий книги в коде персонального модуля.