Помогите перенести макрос с Excel d Calc

Автор Chumakov_JA, 25 октября 2012, 22:36

0 Пользователи и 1 гость просматривают эту тему.

Chumakov_JA

1.в файле Excel на листе есть данные (номер,дата,сумма)
данным макросом выбераю необходимые платежи по конкретному плательщику

Sub Макрос1()
'
' Макрос1 Макрос
'
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
              "Data Source=" & ThisWorkbook.FullName & ";" & _
              "Extended Properties=""Excel 12.0;HDR=Yes;"";"
       



rs.Open "SELECT * FROM [Платежи$] WHERE (INS_REG_NUM=103) ORDER BY INS_REG_NUM  ", cn

 With rs
           .Source = sSQL
           .ActiveConnection = sCon
           .CursorType = adOpenForwardOnly
           .LockType = adLockReadOnly
           .Open Options:=adCmdText
       End With
     


Cells(2, 1).CopyFromRecordset rs
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
'
End Sub



2. Чем можно заменить формулу СУММЕСЛИМН
на листе "Платежи" (номер,кбк,дата,сумма)
выбираю платежи номера который в ячейке А9
за январь 2012 по виду КБК1

=СУММЕСЛИМН(Платежи!$E:$E;Платежи!$B:$B;A9;Платежи!$C:$C;КБК1;Платежи!$D:$D;">=01.01.2012";Платежи!$D:$D;"<=31.01.2012")
+СУММЕСЛИМН(Платежи!$E:$E;Платежи!$B:$B;A9;Платежи!$C:$C;КБК2;Платежи!$D:$D;">=01.01.2012";Платежи!$D:$D;"<=31.01.2012")

Yakov

1.
Смысл кода - использовать в качестве источника данных для SQL запроса рабочий лист Excel и поместить результат на новый лист?
Это можно сделать с помощью Base, указав в качестве источника данных лист Calc.
А результат выполнения запроса можно скопировать обратно в Calc.
2. Если это та же книга, то эту задачу как один из вариантов можно то же с помощью SQL запроса решить.

Yakov

1. Ещё как вариант можно воспользоваться автофильтром.

Chumakov_JA

Цитата: Yakov от 26 октября 2012, 07:36Если это та же книга, то эту задачу как один из вариантов можно то же с помощью SQL запроса решить.

Эта одно книга только Листы скрыты поэтому SQL.
Аможно где нибудь примеры посмотреть.

Yakov

http://wiki.forumooo.ru/wiki/Base  - Часто задаваемые вопросы по Base

Во вложении - пример
Электронная таблица, которая служит источником данных для базы данных.
Если в Base для создания отчётов используется ORACLE Report Builder, то в качестве вида отчёта можно сразу выбрать
электронную таблицу. Иначе придётся таблицу из Base в Calc с помощью мыши перетаскивать.

[вложение удалено Администратором]

Yakov

На рисунке - Calc - с открытым окном источников данных (открывается клавишей F4 или  Вид --> Источники данных)
В качестве источника данных добавлена база данных test2.odb, в которой создан запрос, отбирающий данные из таблицы Лист1.
Таблица Лист1 - в качестве источника данных использует Лист1 из электронной таблицы test2.ods (можно использовать и таблицу )
в формате xls)

[вложение удалено Администратором]

greenman

Цитата: Yakov от 26 октября 2012, 20:18На рисунке - Calc - с открытым окном источников данных (открывается клавишей F4 или  Вид --> Источники данных)...
После добавления строчек в таблицу в запросе они не отображаются до закрытия файла и открытия заново. Это by design или я что-то неправильно делаю?

Yakov

Цитата: greenman от 27 октября 2012, 09:17Это by design
Да.  Похоже, xls/Ods читаются только в момент открытия источника данных, и кнопка "Обновить" обновление не выполняет.