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

Страницы: 1
Вставка нового листа в файл XLAM
 
Всем добрый день. Скорее проблема, не "супер умная", но я не гуру в Екселе. Когда-то сделал надстройку, теперь буду добавлять в надстройку еще одну функцию. Функция запускает форму в которую пользователь вводит некоторые значения, потом идет вычисления и после этого нужно сделать отчет на лист в таблицу. Я хочу шаблон листа сделать в надстройке. То есть шаблон копируется, создается новый лист, потом в нужные места кидаются данные из формы. Подскажите пожалуйста как вставить лист в файл формата xlam, потому что при открытие файла они не видимы, а пункт меню сохранить как... не активен.
Отображение результата запроса к БД (SQLite + ADO)
 
Всем добрый день. Делаю макрос, запрос к БД SQLite. Использую Microsoft ActiveX Data Objects 2.8 Library. Пробую два варианта: драйвер ODBC SQLite3 ODBC Driver и OLE DB Provider.
Вариант с драйвером ODBC. Вроде все гуд но почему-то не отображаются данные колонки где записана ДАТА.:


Вариант с OLE DB Provider. Только название колонок таблицы и все:

Код
Sub QueryToSQLite()

    Dim driver As String
    Dim provider As String
    Dim pathToDB As String
    Dim connection As ADODB.connection
    Dim recordset As ADODB.recordset
    Dim query As String
    Dim i As Integer
    
    driver = "SQLite3 ODBC Driver"
    provider = "SQLITEDB"
    pathToDB = "C:\test.db"
    query = "SELECT * FROM electric;"
    Set connection = New ADODB.connection
    
    'connection.ConnectionString = "DRIVER=" & driver & ";Database=" & pathToDB & ";"
    connection.ConnectionString = "Provider=" & provider & ";Data Source=" & pathToDB & ""
    connection.ConnectionTimeout = 3
    connection.CommandTimeout = 3
    connection.Open
    
    connection.Execute ("INSERT INTO electric (amount, finally) VALUES (6666, 0);")
    
    Set recordset = connection.Execute(query)
    For i = 0 To recordset.Fields.Count - 1
        Range("A1").Offset(0, i).Value = recordset.Fields(i).Name
    Next
    Range("A1").Offset(1, 0).CopyFromRecordset recordset
        
    connection.Close
    Set connection = Nothing
    Set recordset = Nothing
    
End Sub




Инициализация глобальных переменных
 
Всем добрый день! Делаю окошко для отправки запросов к БД. Все гуд, решил сделать глобальные переменные чтобы пользователь один раз вводил свои установки (пароль, драйвер,..) а програма до закрытия ексель-файла их запоминала и тут вылезла проблемка.
Когда запускаю диалоговое окно через процедуру, глобальные переменные не прописвываються, а когда запускаю "напрямую" из ВБА все нормально. Подскажите пожалуйста что я делаю не правильно:

Инициализация переменных:
Код
Private Sub Workbook_Open()
    driverFormMySQL = "MySQL ODBC 5.3 Unicode Driver"
    ipFormMySQL = "127.0.0.1"
    databaseFormMySQL = "database1"
    userFormMySQL = "root"
    passwordFormMySQL = "1111"
    queryFormMySQL = ""
End Sub

Module1: (Обявление переменных и процедура вызова окна)
Код
Option Explicit
Public driverFormMySQL As String
Public ipFormMySQL As String
Public databaseFormMySQL As String
Public userFormMySQL As String
Public passwordFormMySQL As String
Public queryFormMySQL As String

Sub Start()
    FormMySQL.Show
End Sub



FormMySQL:
Код
Private Sub ButExecute_Click()
    Const title = "Ðåçóëüòàò çàïèòó"
    connection = "ODBC;DRIVER={" & Trim(TxtDriver.text) & "};SERVER=" & Trim(TxtIP.text) & ";DATABASE=" & Trim(TxtDatabase.text) & ";USER=" & Trim(TxtUser.text) & ";PASSWORD=" & Trim(TxtPassword.text) & ";"
    Dim table As ListObject
    Dim x As Range
        Worksheets.Add
        On Error GoTo Errhandler
        Set table = ActiveSheet.ListObjects.Add(xlSrcExternal, connection, True, xlYes, Range("A2"))
        With table.QueryTable
            .CommandType = xlCmdSql
            .CommandText = TxtQuery.text
            .Refresh False
            .Delete
        End With
        Set x = Range(Cells(1, 1), Cells(1, (Cells(2, Columns.Count).End(xlToLeft).Column)))
        With x
            .Merge
            .HorizontalAlignment = xlCenter
            .Font.Bold = True
            .Value = title
        End With
        Range("A1").AddComment TxtQuery.text
        Range("A1").Comment.Visible = False
    Unload FormMySQL
    Exit Sub
Errhandler:
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
    MsgBox "Íà æàëü, òðàïèëàñÿ ïîìèëêà - " & Err & vbNewLine & Err.Description, vbOKOnly, "Ïîìèëêà"
End Sub
Private Sub UserForm_Initialize()
    TxtDriver.text = driverFormMySQL
    TxtIP.text = ipFormMySQL
    TxtDatabase.text = databaseFormMySQL
    TxtUser.text = userFormMySQL
    TxtPassword.text = passwordFormMySQL
    TxtQuery.text = queryFormMySQL
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    driverFormMySQL = Trim(TxtDriver.text)
    ipFormMySQL = Trim(TxtIP.text)
    databaseFormMySQL = Trim(TxtDatabase.text)
    userFormMySQL = Trim(TxtUser.text)
    passwordFormMySQL = Trim(TxtPassword.text)
    queryFormMySQL = Trim(TxtQuery.text)
End Sub
Изменено: fed_lviv - 23.10.2015 18:38:34
VBA импорт данных из MySQl
 
Всем добрый день. Делаю макрос для получения данных из БД. Разбил задачу на несколько пунктов:
1. Соединение с БД.
2. Запрос к БД
3. Вставка данных из результата запроса:
        3а Создания нового листа
        3б Вставка данных на новый лист
        3в Сделать из результата "умную таблицу"
4. Закрыть соединение с БД.
И вот пункт 3в не могу осилить. Подскажите, пожалуйста как весь этот диапазон преобразовать в умную таблицу.
Код
Sub DataFromMySQL()
    Const driver = "{MySQL ODBC 5.2 Unicode Driver}"
    Const server = "ХХХХ"
    Const database = "ХХХХ"
    Const user = "ХХХХ"
    Const password = "ХХХХ"
    Const query = "SELECT address , SUM(motors_lte.power) FROM objects JOIN motors_lte USING(idObject) GROUP BY address"
    Set connection = CreateObject("ADODB.Connection")
    Set recordset = CreateObject("ADODB.Recordset")
    connection.Open "Driver=" & driver & ";Server=" & server & ";Database=" & database & ";User=" & user & ";Password=" & password & ";"
    recordset.Open query, connection
    Sheets.Add.Name = "Лист " & Worksheets.Count + 1 & " sql"
    With recordset
        For i = 0 To recordset.Fields.Count - 1
            ActiveCell.Offset(0, i).Value = recordset.Fields(i).Name
        Next
        ActiveCell.Offset(1, 0).CopyFromRecordset recordset
    End With
    recordset.Close
    Set recordset = Nothing
    connection.Close
    Set connection = Nothing
End Sub



Изменено: fed_lviv - 21.10.2015 14:59:10
БД товара изменяется при выписке товара
 
 Всем добрый день. Хотел бы узнать можно ли в Excel реализовать такое:
Общая таблица
- товар
- количество
- цена
- сумма
Таблица заказ
- товар
- количество
- цена
- сумма

Формируется таблица заказа, так: со списка выбираем товар, и указываем количество. Конечно же с помощью функции ВПР узнаем цену товара и прописывается сума.
Это сделать удалось. А дальше вопрос:
Можно ли, если можно то подскажите пожалуйста как, в общей таблице делать автоматические изменение количество товара. То есть минусовать  (было 5, заказали 2, соответственно стало 3).
Изменено: FeD_Lviv - 30.07.2015 11:00:58
Активация окна "Аргументы функции"
 
Хочу сделать надстройку. Написал свою функцию, с помощью RibbonXMLEditor_5.0 сделал свою панельку, написал макрос который прописывает  в активную ячейку мою формулу. Но хочется чтоб макрос прописывал в активную ячейку формулу и активировал окно с аргументами функции, как это сделать, подскажите пожалуйста?!
Код
Function ELECTRO_2015(value)
    limit = 100
    tar1 = 0.366
    tar2 = 0.63
        Select Case value
            Case 1 To limit
                ELECTRO_2015 = value * tar1
            Case Is > limit
                other = value - limit       
                ELECTRO_2015 = (limit * tar1) + (other * tar2)
            Case Else
                ELECTRO_2015 = 0
        End Select
End Function
 

Sub formulaElectro(control As IRibbonControl)
    ActiveCell.FormulaR1C1 = "=ELECTRO_2015(" & ActiveCell.Value & ")"
End Sub 

Изменено: FeD_Lviv - 06.04.2015 14:36:22
MsgBox выдает текст примечания к ячейки
 
В макросе, присваивается, переменной текст примечания к ячейки и MsgBox показывает текст примечания. Проблема что если к ячейки нет примечания макрос выдает ошибку. Как сделать так чтобы MsgBox выдавала сообщения "примечания нет". Подскажите пожалуйста!
Код
Private Sub ListBox1_Click()
x = Worksheets("Базова таблиця").Range(Me.ListBox1.List(, 0)).Comment.Text
MsgBox x
End Sub
Переход с макроса по гиперссылке, которая указана в ячейке.
 
Добрый день. Подскажите, пожалуйста, как правильно написать макрос, который переходит по гиперссылке. Гиперссылка указана в ячейке. В макросе прописываю или "Select" или "Activate" макрос выбирает даную ячейку но не переходит по гиперссылке. Как правильно указать макросу?
Макрос-поисковик, Можна ли в ListBoxе показывать есть ли примечание в ячейки + гиперссылка на файл
 
Добрый день.
Делаю базу данных в Экселе, соответственно надо поисковик. С помощью даного форума поисковик удалось сделать. Но хочется доделать несколько ньюансов. Подскажите, пожалуйста, можно ли это сделать и если можна то как?
"Нюансы":
1. В самой базовой таблице есть к некоторым ячейкам примечание, как сделать чтобы поисковик показывал что к этому тексту есть примечание (например после текта "*" ;)  ?
2. В самой базовой таблице есть ф-я гиперссылка (ячейки где прописан адрес обекта). Можна ли и как в самом поисковике переходить по гиперссылке?
P.S.Файл "подрезал", потому что размер 570 кБ
Изменено: FeD_Lviv - 20.05.2013 14:20:16
ф-я ГИПЕРССЫЛКА в VBA
 
Добрый день. Кто подскажет, как использовать ф-ю ГИПЕРССЫЛКА в VBA. Есть форма в которой выбераем нужный "вариант" при нажатии на кнопку загружается нужный сайт.
Прописывал hyperlink, не получается возможно проблема в синтаксисе.

Private Sub CommandButton1_Click()
?
End Sub


Private Sub ListBox1_Click()
Select Case ListBox1.ListIndex
 Case 0
  ?
 End With
 Case 1
  ?
 End With
End Select
End Sub

Private Sub UserForm_Initialize()
ListBox1.AddItem "1"
ListBox1.AddItem "2"
End Sub
"if then" + "msgbox" + "title" = ошибка
 
Добрый день. Подскажите пожалуйста, что я делаю неправильно?
В конструкцию If Then "вставляю" MsgBox:

Private Sub CommandButton1_Click()
If Label3.Caption = "" Then MsgBox ("Виберіть варіант пошуку"): Exit Sub
Form.Hide
Form1.Show
End Sub

Все работает нормально. Но хочу прописать в MsgBox Title и сразу выдает ошибку "Syntax error":


If Label3.Caption = "" Then MsgBox ("Виберіть варіант пошуку",vbOKOnly, "Пошук"): Exit Sub
цикл for-next и label
 
Добрый день. Подскажите пожалуйста как правильно написать цикл для того чтобы надписи стали невидимыми. Можна писать для каждого отдельно но это долго:
Label2.Visible=False
Label3.Visible=False
...
Я попробовал через цикл, но выдает ошибку, что я делаю не правильно?
For x = 1 To 9
Label x.Visible = False
Next x
кнопка ActiveX и курсор "палец"
 
Добрый день. Кто подскажет, можно ли поменять вид курсора ("палец")  , когда наводим курсор на кнопку ActiveX? Смотрел в свойства кнопки, MousePointer - не нахожу данный вид курсора.
Изменено: FeD_Lviv - 25.03.2013 17:48:39
Как в макросах правильно использовать ф-ю ЕСЛИОШИБКА
 
Написал свою ф-ю, все работает нормально, но если ячейка на которую посылается даная ф-я пуста, прописывает #ЗНАЧ! Хотел убрать данную ошибку сразу в макросе-функции, но не получается. В Excel, если использую ЕСЛИОШИБКА все нормально, а в макросе не получается. Подскажите,пожалуйста, что я делаю не так?
Макрос:
Function ТИП_ФАЙЛА(Де_шукати)
Початок = WorksheetFunction.Search(".", Де_шукати.Formula)

Кінець = WorksheetFunction.Search(",", Де_шукати.Formula, Початок)

Кількість = (Кінець - Початок) - 1

ТИП_ФАЙЛА = Mid(Де_шукати.Formula, Початок, Кількість)

ТИП_ФАЙЛА = WorksheetFunction.IfError(ТИП_ФАЙЛА, " " )

End Function
Изменено: FeD_Lviv - 12.03.2013 11:41:28
Условное форматирование в зависимости от типа файла ф-и ГИПЕРССЫЛКИ
 
Добрый день. Посоветуйте пожалуйста, как можна сделать, такое:
Используется ф-я ГИПЕРССЫЛКА, для открытия нужных документов. Документы бывают двох типов: *.doc и *.spl7. Хотелося применить условное форматирование "набор значков". Если документ вордовский - один значок, если сплановский - другой. Чтобы сразу было видно на какой тип файла ссылка. Конечно можна текст разным цветом выделять но хотелося б, если можна вставлять значки.Но как?
Форматировать как таблицу vs объединение ячеек.
 
Кто знает, как можно "обойти" проблему: Форматировать как таблицу vs объединение ячеек?
Надо сделать таблицу (базу данных) по объектах. И в любой момент надо будет подсчитать кое-что, сравнить и т.п.
То есть сделать сводную таблицу и все будет ОК.
Проблема в том что на каждом объекте не по одном двигателю, а от 5 до 15.Приходится объединять ячейки, там где прописывается адрес. А объединенные ячейки, форматировать, как таблицу, Excel или не хочет или автоматом "разбивает" ячейки.
Прописывать напротив каждого двигателя один и тот же адрес не хочу потому что потом не возможно будет точно узнать количество объектов.
Сделать "широкую" таблицу (последовательно прописывать двигатели) не хочу да и не удобно, плюс на каждом объекте разное количество двигателей и таблица выйдет не очень.
Изменено: FeD_Lviv - 04.03.2013 23:17:54
При выборе данных из списка ф-я ВПР заполняет ячейки или дает еще один список
 
Добрый день. Кто может помочь? У меня три вопроса:
1. Можна ли вообще такое сделать?
2. Если можна то с помощью макросов или можна без них? (Я в Excelе не силен, про макросы вообще лучше промолчать)
3. И если можна, то как?
Теперь сама "проблема". В диапазоне В3:В32 выбираем из списка нужное значение. При выборе значения ф-я ВПР автоматически прописывает нужные данные в ячейках:С, Е, G, H, I. Все хорошо. Просто нужно сделать так что в диапазоне В3:В32 при выборе значения, например "Лічильник", моментально ячейки: С, Е, G, H, I не заполнялись.А делался список в ячейке G, пример: "Рахівники однофазні, на один прилад" или "Рахівники трифазні, на один прилад". И после выбора ячеки: С, Е, H, I заполнялись дальше автоматически.
Формат ячейки в зависимости от значения в ячейке (в ячейке формула)
 
Добрий день! Допоможіть будь-ласка розібратися. Хочу зробити так щоб формат ячейки змінювався в залежності від значення в ячейці! На перший погляд начебто легко, але чомусь не виходить. Скоріш за все бо в мене в даних ячейках формули. Оскільки коли пробую "Условное форматирование" для ячейок в яких числа то все виходить. Роблю теж саме з ячейками які мають формули, тоді форматування "зависає".
Розкажу конкретніше. В ячейках, які потрібно форматувати прописані формули  вони видають результат, варіанти є 4: (1, 10, 100, 1000). Потрібно зробити так:
1 ячейка форматується і показує шт.
10 ячейка форматується і показує 10 шт.
100 ячейка форматується і показує 100 м.
1000 ячейка форматується і показує 1000 м.
Ось коли роблю "Условное форматирование" начебто виходить, але коли, наприклад результат в ячейці 1  в ячейці показує шт., роблю результат 1000 і показує теж шт., а не 1000 м.
Допоможіть будь-ласка!
Страницы: 1
Loading...