Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2, средняя оценка - 5.00
аналитика
здесь больше нет...
3332 / 1661 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
#1

Авторские программы, библиотеки, надстройки и шаблоны - VBA

12.02.2010, 17:42. Просмотров 112899. Ответов 145
Метки нет (Все метки)

 Комментарий модератора 
Коллектив модераторов раздела оставляет за собой право использовать данный пост аналитики для размещения и обновления оглавления темы.

Оглавление
- по тематике:

Утилиты


Инструменты программиста

Графические редакторы



Защита программного кода

Офисные операции

Веб-сервис


Игры




- по автору:
A-Z





Конец оглавления

Оригинальное сообщение от аналитики:

Надстройка для VBE "IndenterVBA" - позволяет редактировать стиль оформления программного кода.
27
Вложения
Тип файла: rar IndenterVBA.rar (253.1 Кб, 1507 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2010, 17:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Авторские программы, библиотеки, надстройки и шаблоны (VBA):

Подключение библиотеки в коде программы - VBA
Добрый день, уважаемые форумчане. При переносе макроса из 2003 в 2007 Excel возникла проблема с библиотекой Microsoft Office Web Components...

ошибка в коде надстройки - VBA
Надстройка выдает ошибку 13. В коде ругается на строку: prob = frmMain.txtSignifLevel.Value. :rtfm: Что значит эта строка? Совсем не...

Редактирование надстройки EXCEL - VBA
Ситуация: есть файл start.xla (при запуске сам не показывается, а формирует и запускает временный файл _start.xls с главным меню...

Временно отключить надстройки - VBA
Здравствуйте! Необходимо в начале действия макрос отключить (или приостановить) действие всех надстроек, а в конце снова включить....

Вызов надстройки через VBA - VBA
Здравствуйте. Очень нужна Ваша помощь. Задача следующая: В VBA для Excel 2003 необходимо написать макрос с использованием (вызовом)...

Всё про надстройки .XLA - VBA
Предлагаю в этой теме обсудить все аспекты надстроек .XLA . Частично эти вопросы затрагивались в теме ...

145
AndreA SN
995 / 93 / 3
Регистрация: 26.08.2011
Сообщений: 711
Записей в блоге: 1
24.07.2015, 12:30 #121
аналитика, а
Цитата Сообщение от аналитика Посмотреть сообщение
Надстройка для VBE "IndenterVBA"
вообще развивается для MS 2013 и компании? с уважением к приятной программульке...
1
westerov
2 / 2 / 0
Регистрация: 18.11.2012
Сообщений: 27
18.09.2015, 02:35 #122
Цитата Сообщение от Dragokas Посмотреть сообщение
Этот маленький редактор идет вместе с офисом...
...Как то он мне полюбился...
Многим
Сижу на работе - ХРюша с 2007м.
Закинул файлы по назначению - мухой запустилась английская.
Спасибо одним словом Теперь дома из офисахр по именам вытащу русские.
ЗЫ:
Делал циферблат в ворде, 2 раза кликнул по имаже -
орёт " не установлена программа Microsoft Photo Editor 3.0"
1
Вождь
216 / 48 / 2
Регистрация: 18.02.2010
Сообщений: 81
14.10.2015, 04:46 #123
Привет всем.

"Стартер" - универсальный инсталлятор надстроек Word:
starter.zip

"ПоЗа" - организатор каталога операций поиска и замены Word:
poza_empty.zip

Тут другие поделки:
http://mtdmacro.ru/create.html
3
Вождь
216 / 48 / 2
Регистрация: 18.02.2010
Сообщений: 81
25.01.2016, 09:10 #124
Ну и вдогонку - универсальный инсталлятор надстроек Excel:
2
Вложения
Тип файла: zip starter.xls.zip (43.6 Кб, 18 просмотров)
KoGG
5265 / 1338 / 314
Регистрация: 23.12.2010
Сообщений: 2,015
Записей в блоге: 1
05.02.2016, 13:41 #125
Бывает необходимость параллельной поменять формулу в определенной ячейке (или диапазоне) на одноименных листах во множестве одновременно открытых книг одинаковой структуры. Либо по образцу с активной книги, либо дописав формулу справа, либо по шаблону изменения. Данные макросы решают эти задачи, заодно копируют формат.
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub Копировать_формулу_по_книгам()
    If TypeName(Selection) <> "Range" Then MsgBox "Не выделен диапазон. Работа прекращена.": Exit Sub
    Dim i&, j&, k%, DiaAdr$, NazvLista$, Msg$, r As Range, aBook As Workbook, Sh As Worksheet
    With Application
        .CutCopyMode = xlCopy
        .ScreenUpdating = False
    End With
    Set aBook = ActiveWorkbook
    NazvLista = ActiveSheet.Name
    DiaAdr = Selection.Address()
    Set r = ActiveSheet.Range(DiaAdr)
    For k = 1 To Workbooks.Count
        ' Не работать с образцом и с книгой запуска макроса (Personal или надстройкой)
        If Not ((Workbooks(k) Is aBook) Or (Workbooks(k) Is ThisWorkbook)) Then
            If SheetExists(NazvLista, Workbooks(k)) Then
                With Workbooks(k).Worksheets(NazvLista)
                    .Activate
                    r.Copy
                    With .Range(DiaAdr)
                        .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
                        .Select
                        For i = 1 To .Rows.Count
                            For j = 1 To .Columns.Count
                                .Cells(i, j).Formula = r.Cells(i, j).Formula
                            Next
                        Next
                    End With
                End With
            Else
                Msg = Msg & "В книге " & Workbooks(k).Name & " не существует лист " & NazvLista & vbCrLf
            End If
        End If
    Next k
    aBook.Activate
    If Msg <> "" Then MsgBox Msg
    Set aBook = Nothing: Set r = Nothing
End Sub
 
Sub Модификацировать_формулы_по_книгам()
    If TypeName(Selection) <> "Range" Then MsgBox "Не выделен диапазон. Работа прекращена.": Exit Sub
    Dim i&, j&, k%, DiaAdr$, NazvLista$, Msg$, fPrefix$, fPostfix$, F$, r As Range, aBook As Workbook, Sh As Worksheet
    fPostfix = InputBox("Введите добавляемую правую часть формулы либо шаблон изменения, в котором @@@ -старая формула без знака =")
    If fPostfix = "" Then Exit Sub
    If UBound(Split(fPostfix, "@@@")) = 1 Then
        fPrefix = Split(fPostfix, "@@@")(0)
        fPostfix = Split(fPostfix, "@@@")(1)
    End If
    If Left(fPrefix, 1) <> "=" Then fPrefix = "=" & fPrefix
    With Application
        .CutCopyMode = xlCopy
        .ScreenUpdating = False
    End With
    Set aBook = ActiveWorkbook
    NazvLista = ActiveSheet.Name
    DiaAdr = Selection.Address()
    Set r = ActiveSheet.Range(DiaAdr)
    For k = 1 To Workbooks.Count
        ' Не работать с книгой запуска макроса (Personal или надстройкой)
        If Not (Workbooks(k) Is ThisWorkbook) Then
        If SheetExists(NazvLista, Workbooks(k)) Then
            With Workbooks(k).Worksheets(NazvLista)
                .Activate
                r.Copy
                With .Range(DiaAdr)
                    .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
                    .Select
                    For i = 1 To .Rows.Count
                        For j = 1 To .Columns.Count
                            F = .Cells(i, j).Formula
                            If Left(F, 1) = "=" Then F = Mid(F, 2)
                            F = fPrefix & F & fPostfix
                            .Cells(i, j).Formula = F
                        Next
                    Next
                End With
            End With
        Else
            Msg = Msg & "В книге " & Workbooks(k).Name & " не существует лист " & NazvLista & vbCrLf
        End If
        End If
    Next k
    aBook.Activate
    If Msg <> "" Then MsgBox Msg
    Set aBook = Nothing: Set r = Nothing
End Sub
Function SheetExists(SheetName, wb As Workbook) As Boolean
    Dim Sh As Worksheet
    For Each Sh In wb.Worksheets
        If Sh.Name = SheetName Then SheetExists = True: Exit Function
    Next Sh
End Function
3
fever brain
oh my god
934 / 486 / 90
Регистрация: 05.01.2016
Сообщений: 1,444
Записей в блоге: 7
05.02.2016, 21:45 #126
Удобная таблица

Разработал таблицу, в которой удобно хранить множество данных
а также добавлять эти данные и быстро получать доступ к той или иной ячейке
из группы, например если это почтовые ящики, то в любом столбце, если на него жать
будет выделяться только ящик из группы строки, или если это имя из столбца
то будут выделяться только имена в строках

Если нужно поменять данные, то нужно отключить интерактивность, отредактировать таблицу
и обновить.

Например, у меня множество знакомых, и я могу перепутать чье-то имя или телефон
и такая таблица очень поможет, если нажать на столбец с именами, и на строку с телефоном
также предусмотрен буфер обмена, тесть всё, что выделилось, немедленно копируется
0
Миниатюры
Авторские программы, библиотеки, надстройки и шаблоны   Авторские программы, библиотеки, надстройки и шаблоны  
Вложения
Тип файла: xls Удобная таблица.xls (67.0 Кб, 19 просмотров)
fever brain
oh my god
934 / 486 / 90
Регистрация: 05.01.2016
Сообщений: 1,444
Записей в блоге: 7
05.02.2016, 21:53 #127
Немного исправил
0
Вложения
Тип файла: xls Удобная таблица.xls (59.0 Кб, 21 просмотров)
fever brain
oh my god
934 / 486 / 90
Регистрация: 05.01.2016
Сообщений: 1,444
Записей в блоге: 7
07.02.2016, 12:45 #128
И еще лучше, добавил функционала:
теперь можно скопировать(удалить) лист вместе с макросами и кнопками,
вместо выделения искомой ячейки она просто подсвечивается, (что на практике оказалось удобнее)
телефоны отображаются в форматированном виде, но только в том случае если в заголовке стоит надпись "телефон" а в ячейке есть номер
Visual Basic
1
Const frmt = "[<=9999999]###-##-##;# (###) ###-##-##", ph = "Телефон"
таблица форматируется так, чтобы можно было добавлять ниже сколько угодно надписей
0
Миниатюры
Авторские программы, библиотеки, надстройки и шаблоны  
Вложения
Тип файла: xls Удобная таблица2.xls (76.0 Кб, 38 просмотров)
KoGG
5265 / 1338 / 314
Регистрация: 23.12.2010
Сообщений: 2,015
Записей в блоге: 1
02.06.2016, 16:58 #129
Генератор анаграмм и анаграмм с неиспользованным остатком букв.
Ускорить работу программы
2
fever brain
oh my god
934 / 486 / 90
Регистрация: 05.01.2016
Сообщений: 1,444
Записей в блоге: 7
16.06.2016, 16:43 #130
UserForm как обычное окно

Для демонстрации нажмите на картинку, на листе




Visual Basic
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
Option Explicit
'
'Делаем окно с иконкой, системным меню и кнопками *свернуть, развернуть*
'Примечание, для иконки нужен объект Image1 на List1 с иконкой в формате ICO
'
'by the Fever Brain 2016
'
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Private Const HWND_TOP = 0
Private Const ICON_BIG = 1&
Private Const ICON_SMALL = 0&
Private Const SWP_HIDEWINDOW = &H80
Private Const WM_SETICON = &H80
Private Const WS_EX_APPWINDOW = &H40000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_SYSMENU = &H80000
 
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetActiveWindow Lib "user32.dll" () As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
 
Private Sub UserForm_Activate()
    Dim hWnd As Long
    Dim GWL As Long
    Dim hImg As Long
    Dim ret As Long
    hWnd = FindWindow(vbNullString, Me.Caption)
    GWL = GetWindowLong(hWnd, GWL_STYLE) Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX Or WS_EX_APPWINDOW
    '-------Добавление иконки
    hImg = Лист1.Image1.Picture.Handle
    hWnd = FindWindow(vbNullString, Me.Caption)
    ret = SendMessage(hWnd, WM_SETICON, ICON_SMALL, ByVal hImg)
    ret = SendMessage(hWnd, WM_SETICON, ICON_BIG, ByVal hImg)
    SetWindowLong hWnd, GWL_STYLE, (GWL)
    DrawMenuBar hWnd
End Sub
2
Вложения
Тип файла: xls UserForm как обычное окно.xls (38.0 Кб, 49 просмотров)
bedvit
233 / 103 / 12
Регистрация: 20.05.2016
Сообщений: 431
Записей в блоге: 5
13.09.2016, 13:01 #131
Хочу поделиться своей библиотекой.
Для всех кто любит VBA - помощник в длинной арифметики.
Реализация через .XLL - устанавливается как надстройка и готово!
Или просто запускается двойным кликом.
Упор был сделан на производительность.
Последняя версия всегда здесь.
1
anton-sf
17 / 17 / 4
Регистрация: 29.03.2015
Сообщений: 64
02.11.2016, 15:13 #132
Моя реализация календаря (выбора даты) для Excel (2003)
В файле 1 лист с фигурой-кнопочкой для теста, 1 форма, 1 модуль и 3 класса
Кнопочки над которыми пролетает курсор подсвечиваются - идея реализации забугорная, не помню кто и где

Имеется ввиду реализация средствами Excel, без .ocx и .dll, не считая немногих функций Win API
В коде много кириллицы, ну это пример для разбора и внедрения, всё переименовывать очень лень
Выбирать дату можно как стрелками клавиатуры так и мышкой
2
Миниатюры
Авторские программы, библиотеки, надстройки и шаблоны  
Вложения
Тип файла: rar VBA Excel Календарь Форма (Anton_SF).rar (93.6 Кб, 14 просмотров)
Emule-C2H5OH
4 / 1 / 0
Регистрация: 04.11.2016
Сообщений: 12
07.11.2016, 14:51 #133
Понадобилось мне сортировать по алфавиту строковые массивы содержащие десятки тысяч строк, Метод пузырька работал чрезвычайно долго, нашел в инете интересную сортировку числовых значений в массиве, переделал под строки, скорость работы пристойная.
Возможно еще кому-либо пригодится, как пригодилось мне.
Функция сортирующая строковый массив по алфавиту комбинируя Метод слияния и Метод Хоара
Сортирует с учётом всех символов строки.
0
Вложения
Тип файла: zip Sort_ABC.zip (1.8 Кб, 11 просмотров)
Emule-C2H5OH
4 / 1 / 0
Регистрация: 04.11.2016
Сообщений: 12
07.11.2016, 22:26 #134
Функция сортирующая строковый массив по алфавиту комбинируя Метод слияния и Метод Хоара
Сортирует с учётом всех символов строки.
Поправил проблему "Ё".
0
Вложения
Тип файла: rar Sort_ABC_2.rar (2.9 Кб, 19 просмотров)
anton-sf
17 / 17 / 4
Регистрация: 29.03.2015
Сообщений: 64
11.12.2016, 17:26 #135
Цитата Сообщение от anton-sf Посмотреть сообщение
Моя реализация календаря (выбора даты) для Excel (2003)
В файле 1 лист с фигурой-кнопочкой для теста, 1 форма, 1 модуль и 3 класса
Кнопочки над которыми пролетает курсор подсвечиваются - идея реализации забугорная, не помню кто и где
Имеется ввиду реализация средствами Excel, без .ocx и .dll, не считая немногих функций Win API
В коде много кириллицы, ну это пример для разбора и внедрения, всё переименовывать очень лень
Выбирать дату можно как стрелками клавиатуры так и мышкой
Исправил огрехи с перемещением фокуса стрелками и добавил недостающую константу - проверил, работает

Картинку забыл вложить - вот
1
Миниатюры
Авторские программы, библиотеки, надстройки и шаблоны  
Вложения
Тип файла: rar VBA Excel Календарь Форма (Anton_SF).rar (73.4 Кб, 24 просмотров)
11.12.2016, 17:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2016, 17:26
Привет! Вот еще темы с ответами:

Хранение картинок в теле надстройки - VBA
Добрый день! Возможно ли хранить картинку в самом файле (&quot;надстрока.xlsx&quot;) и вставлять ее на лист средствами VBA? к примеру:...

Добавление надстройки Excel в Ribbon - VBA
Здравствуйте. Написал я две надстройки на VBA для Excel, и захотелось мне поместить две кнопки для запуска этих надстроек на ленту в...

Вызов окна функции из надстройки - VBA
Добрый день. Сделал надстройку типа RIBBON. В меню перечислил свои пользовательские функции. Хочу, чтобы при щелчке по пункту меню,...

Назначение комбинации клавиш макроса у надстройки - VBA
Есть надстройка в ней полезные макросы.....для вызова которых есть комбинации клавиш.... и так возникла потребность написания....новых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
135
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru