Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1, Часть 2
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References
     
    Перечень основных ColorIndex'ов из MSDN
     

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Word VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:16 11-01-2010 | Исправлено: ALeXkRU, 16:42 03-08-2021
    nick7inc



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. Не могу понять поведение программы (игнорируется Byref при передаче члена класса):
     
    Подробнее...
     
    Добавлено:
    Похоже, опять проделки MS, нашёл похожий пост. При передаче отдельного члена класса процедуре директива Byref  тупо игнорируется. Решение - не передавать функции отдельный параметр, а передать ByRef объект целиком (либо не передавать, а сделать в функции, где объект был создан).

    ----------
    Джин, не лезь в бутылку.

    Всего записей: 1138 | Зарегистр. 04-05-2007 | Отправлено: 14:24 19-12-2018 | Исправлено: nick7inc, 11:15 03-03-2020
    NJCorp

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dim a() as variant
    a=range("A1:X100")
     
    ето создание массива из диапазона ячеек.
     
    а как сделать тоже, только если к диапазону приминить фильтр.

    Всего записей: 72 | Зарегистр. 18-08-2007 | Отправлено: 04:10 25-12-2018
    nanotronic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Есть такая программа - Protect VBA. Она делает проект VBA Unviewable. Версия 1.6 была сделана разработчиком бесплатной для использования. http://www.downloadsnet.com/index/software/view/authoring-tools/tools-editors/specialized-tools/protect-vba/100452__0_0.html?hl=&id=100452  
    Это лучше чем простая защита проекта. Снятие защиты с помощью Advanced VBA Password Recovery не помогает: файл перестаёт открываться Excel.  

     
    Вух... прошло 8 лет от сообщения.  
    У кого-нибудь осталась сия софтинка?
    Есть *.xlsm c "" Project is unviewable.
     
    Хотелось бы снять защиту. Подсобите, комрады

    Всего записей: 6 | Зарегистр. 18-09-2006 | Отправлено: 00:11 26-12-2018
    DenSyo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nanotronic
    Open Office позволяет открывать экселины несмотря ни на что. на эту тему много в инете. сам не пробовал, всегда было достаточно распаковать .xlsm (это архив), там внутри все открытым текстом всегда было...

    Всего записей: 218 | Зарегистр. 19-01-2008 | Отправлено: 04:59 29-12-2018
    grinchukav

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NJCorp
     

    Цитата:
     
    ето создание массива из диапазона ячеек.  
     
    а как сделать тоже, только если к диапазону приминить фильтр.
     

     
    Решение выглядит примерно как:
     
        ActiveSheet.Range("$A$1:$S$144").AutoFilter Field:=15, Criteria1:="<>"
        Selection.SpecialCells(xlCellTypeVisible).Select ' применение выделения только к видимым (отфильтрованным) ячейкам
         
        Dim myRange As Range
        Set myRange = Selection

    Всего записей: 67 | Зарегистр. 28-02-2008 | Отправлено: 15:52 29-12-2018 | Исправлено: grinchukav, 22:52 02-01-2019
    DJMC



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть эксель файл, где сначала идут две три цифры, ниже колонка с одной цифрой, вопрос можно ли сделать как то считывание данных по колонки, то есть к примеру 3 колонка, мы видим что идет строчка 1Х2, мне надо узнать сколько после нее было 1 Х и 2 , всего их было 10... если это возможно решить скину файл целиком.
     


    Всего записей: 12237 | Зарегистр. 26-09-2005 | Отправлено: 12:36 28-01-2019
    ALeXkRU



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DJMC
    Цитата:
    узнать сколько после нее было 1 Х и 2 , всего их было  

    ну, СУММЕСЛИ - вполне должна справиться с подсчётом...
    Цитата:
    мы видим что идет строчка 1Х2

    а здесь - совсем не понятно... что есть "мы видим что идет" какой-то алгоритм видения должен же быть...

    Всего записей: 11768 | Зарегистр. 03-12-2003 | Отправлено: 16:33 28-01-2019
    DJMC



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ALeXkRU
    обрати внимание на третью колонку, последняя строчка 1Х2  она была 10 раз, чем =СЧЁТЕСЛИ,  теперь смотрим галазами по этой колонке и видим что на моем скрине она была два раза и после не оба раза была 3.  
     
    Это две колонки не связаны ни как друг с другом.  

    Всего записей: 12237 | Зарегистр. 26-09-2005 | Отправлено: 17:15 28-01-2019
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    DJMC

    Цитата:
    Есть эксель файл, где сначала идут две три цифры, ниже колонка (?) с одной цифрой, вопрос можно ли сделать как то считывание данных по колонки, то есть к примеру 3 колонка, мы видим что идет строчка 1Х2 (?), мне надо узнать сколько после нее было 1 Х и 2 , всего их было 10...


    Цитата:
    обрати внимание на третью колонку, последняя строчка 1Х2  она была 10 раз, чем =СЧЁТЕСЛИ (?),  теперь смотрим галазами по этой колонке и видим что на моем скрине она была два раза и после не оба раза была 3 (?).

    "Нич-ч-чего не понимаю!" ©
    Хочешь получить ответ - грамотно задай вопрос.

    ----------
    А оно мне надо?..

    Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 14:42 01-02-2019
    JekaKot



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
    В Excel формируется список команд, который затем копируется в bat-файл для последующего выполнения (копирование/переименование файлов, если это важно).
    Вопрос - можно ли запускать эти команды без нудного копирования, непосредственно из Excel, и если да, подскажите, как это реализовать?
    Получение bat-файла в принципе, не обязательно.

    Всего записей: 2697 | Зарегистр. 10-03-2006 | Отправлено: 00:32 04-02-2019 | Исправлено: JekaKot, 00:37 04-02-2019
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    JekaKot
    https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/filesystemobject-object

    ----------
    А оно мне надо?..

    Всего записей: 5438 | Зарегистр. 29-03-2006 | Отправлено: 17:55 04-02-2019
    JekG

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите советом
    малому задали типа прикладную задачку  
       
    есть вот такая решетка. нужно посчитать сколько метров пагонажа и какой длины палки использовать чтобы было меньше отходов.
    известно - длина периметра решетки и шаг ячейки, рейки набиты под 45 градусов.
    гдето на подсознании понимаю что тут считается теоремой Пифагора но как это оформить - не знаю. пните плз в нужно направлении.

    Всего записей: 2691 | Зарегистр. 12-10-2005 | Отправлено: 11:59 08-02-2019 | Исправлено: JekG, 12:05 08-02-2019
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Салют! Подскажите код как из макроса Excel 2010 обновить ссылки в связанном документе Word и сохранить его как pdf (а имя файла для сохранения взять из переменной).
    (в общем уже не надо, решил проблему через "Слияние" в Ворде)

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 12:03 16-02-2019 | Исправлено: crotoff, 22:37 24-02-2019
    obtim



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть сложная таблица Excel. В ней подтягиваются данные из внешнего источника, после нажатия одной единственной кнопки и выставления даты в соответствующем выпадающем списке.
    Функционал сотрудника подразумевает только выбор даты (завтра) и нажатие кнопки обновить. После чего он сохраняет таблицу в CSV и пересылает далее.
    Есть ли возможность обработать .xlsx файл внешними средствами без открытия так, чтобы "выбрать дату из списка и нажать кнопку обновления информации" и полученный результат сохранить в csv?

    Всего записей: 8930 | Зарегистр. 03-03-2002 | Отправлено: 14:21 06-03-2019
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Есть ли возможность обработать .xlsx файл внешними средствами без открытия так, чтобы "выбрать дату из списка и нажать кнопку обновления информации" и полученный результат сохранить в csv?

    Есть.

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 14:30 06-03-2019
    obtim



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maximus777
    А где почитать?

    Всего записей: 8930 | Зарегистр. 03-03-2002 | Отправлено: 14:50 06-03-2019
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    obtim
    Думаю, прям в редакторе Visual Basic'а. Ведь по нажатию кнопки делается то, что Вам требуется. Как прочитать файл, "не открывая", расскажет Яндекс, по запросу "чтение эксель файла без открытия".

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 14:59 06-03-2019
    obtim



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maximus777
    Спасибо!

    Всего записей: 8930 | Зарегистр. 03-03-2002 | Отправлено: 15:12 06-03-2019
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время,obtim
    Совсем не открывая - никак не получится.
    А так - надо смотреть на месте - как сделано.
    Пока что - что-то вроде для VBS:

    Код:
     
    const xlCSV = 6
    fileName = "Путь к xlsx"
    Set oExcel = CreateObject("Excel.Application")
    ' Указывает, будет ли показыватся окно. oExcel.Visible = False - не будет
    oExcel.Visible = True
    'oExcel.Visible = False
    oExcel.DisplayAlerts = False
    Set oWorkBook = oExcel.Workbooks.Open(fileName)
    ' Тут делаете что нужно. Для запуска макросов используете типа  
    ' oExcel.Application.Run "MacrosName"
    oWorkBook.SaveAs fileName & ".csv", xlCSV
    oWorkBook.Close False
    oExcel.DisplayAlerts = True
    oExcel.Quit
     

    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 15:29 06-03-2019
    Alexgol8

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пожайлуста, помогите сделать следующее  
    1. На листе Исходные данные_расчет в ячейке R8C9 меняется количество строительных длин. При этом на листе Исходные данные_расчет если введенное значение в R8C9>1 после ячейки R10C9 добавляются строки, количество которых равно значению, введенному в R8C9. Это почти сделано.
    2. На листе Исходные данные_расчет добавляются строки Затухание линии № 2,3,4 и т.д. (количество строк Затухание линии определяется значением, введенным в R8C9). Данные для заполнения Затухание линии № 2,3,4 и т.д. берутся аналогично Затухание линии № 1 (с листа Исходные данные_расчет и остальных листов книги Excel).
    Вставка строк Затухание линии № 2,3,4 и т.д. осуществляется между строкой Затухание линии № 1 и строкой Общее затухание линии.
    3. На листе Норма отн. значения опт. потерь в ячейке R7C9 меняется количество строительных длин (значение автоматически вставляется из ячейки R8C9 листа Исходные данные_расчет). Если значение в R7C9>1, то соответствующие значения строительных длин (они вводятся вручную на листе Исходные данные_расчет) учитываются при расчете и  
    1.после ячейки R9C9 добавляются строки, количество которых равно значению, введенному в R7C9.
    2.после ячейки R22C5 добавляются строки, количество которых равно значению, введенному в R7C9.
    Если R7C9>1, то полученные значения вставляются в значения строк Затухание линии № 2,3,4 и т.д. (количество строк Затухание линии определяется значением, введенным в R8C9 на листе Исходные данные_расчет).
    4. На листе Расчет макс. длины ЭКУ в ячейке R13C9 при значении R8C9>1 листа Исходные данные_расчет меняется (добавляется = значению R8C9 листа Исходные данные_расчет) количество строительных длин. Если значение в R13C9>1, то соответствующие значения строительных длин (они вводятся вручную на листе Исходные данные_расчет) учитываются при расчете и  
    1.после ячейки R18C9 добавляются строки, количество которых равно значению, добавленным к R13C9.
    2.после ячейки R23C9 добавляются строки, количество которых равно значению, добавленным к R13C9.
    Если R13C9>1, то полученные значения вставляются в значения строк Затухание линии № 2,3,4 и т.д. (количество строк Затухание линии определяется значением, введенным в R8C9 на листе Исходные данные_расчет).
    5. На листе Исходные данные_расчет в ячейке R8C9 при изменении количества строительных длин предусмотреть возможность менять значение в процессе расчета.
     
    Приношу извинения, если получился большой объем текста, визуально в файле все выглядит более наглядно.
     
    Заранее спасибо.  
     
    https://www.upload.ee/files/9773613/___________________.xlsm.html

    Всего записей: 167 | Зарегистр. 29-01-2006 | Отправлено: 12:23 01-04-2019
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru