Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 11:48   #11
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Еще вопрос, помогите пожалуйста, как сделать с помощью SQL-запроса
Цитата:
Option Explicit
Sub Макрос2()
Dim a(), b(), Lr As Long, i As Long, ii As Long
' Макрос2 Макрос
'
'
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx;DefaultDir=C :\Documents and Settings\Юзер\Раб" _
), Array("очий стол\excel;DriverId=1046;MaxBufferS ize=2048;PageTimeout=5;")), _
Destination:=Range("$A$1")).QueryTa ble
With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
b = .Range("a1:b" & Lr).Value
End With

For i = 1 To UBound(b)
s=(`Лист1$`.`лиц счет`=i)
Next ii, i
.CommandText = Array( _
"SELECT `Лист1$`.`лиц счет`, `Лист1$`.фамилия" & Chr(13) & "" & Chr(10) & "FROM `C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx`.`Лист1$` `Лист1$`" & Chr(13) & "" & Chr(10) & "WHERE (`Лист1$`.`лиц счет`=1.0)" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Таблица_Запрос_из_Excel_Files"
.Refresh BackgroundQuery:=False
End With
End Sub
какие тут ошибки,и что надо добавить?
dyakon88 вне форума Ответить с цитированием
Старый 10.11.2010, 12:24   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот это вообще непонятно что
Код:
For i = 1 To UBound(b)
s=(`Лист1$`.`лиц счет`=i)
Next ii, i
ii тут явно лишнее, остальное не понял...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.11.2010, 12:53   #13
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

какое условие написать надо в команде тексте
Цитата:
Sub Макрос2()
Dim a(), b(), Lr As Long, i As Long, ii As Long, s As String

' Макрос2 Макрос
'
'
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx;DefaultDir=C :\Documents and Settings\Юзер\Раб" _
), Array("очий стол\excel;DriverId=1046;MaxBufferS ize=2048;PageTimeout=5;")), _
Destination:=Range("$A$1")).QueryTa ble
With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
b = .Range("a1:b" & Lr).Value
End With
For i = 1 To UBound(b)
s = s & "(`Лист1$`.`лиц счет`=" & i & ")"
's = " & "
Next i
.CommandText = Array("SELECT `Лист1$`.`лиц счет`, `Лист1$`.фамилия" & Chr(13) & "" & Chr(10) & "FROM `C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx`.`Лист1$` `Лист1$`" & Chr(13) & "" & Chr(10) & "WHERE (" & s) Or (" ) ")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Таблица_Запрос_из_Excel_Files"
.Refresh BackgroundQuery:=False
End With
End Sub
dyakon88 вне форума Ответить с цитированием
Старый 10.11.2010, 13:06   #14
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

как написать код, чтоб при запуске макроса лист очищался
dyakon88 вне форума Ответить с цитированием
Старый 10.11.2010, 13:07   #15
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

могу Вам предложить такой вариант с иcпользованием SQL:

Предварительнно необходимо подключить библиотеку: Alt+F11 - Tools - References - Microsoft ActiveX Data Object 2.0 (или выше)
Будучи на Листе1, запустите макрос "Отбор"
Код:
Sub Отбор()
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset: Application.ScreenUpdating = False
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=No;"";"
rs.Open "SELECT T2.F1,(SELECT T1.F2 FROM [Лист1$A2:B65536] T1 WHERE T1.F1=T2.F1) FROM [Лист2$A2:A65536] T2", cn, adOpenStatic, adLockReadOnly
With Sheets(3): .Activate: [b:b].Clear: [a2].CopyFromRecordset rs: Set rs = Nothing: Set cn = Nothing: End With: End Sub

Последний раз редактировалось EugeneS; 10.11.2010 в 13:10.
EugeneS вне форума Ответить с цитированием
Старый 10.11.2010, 13:38   #16
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от EugeneS Посмотреть сообщение
могу Вам предложить такой вариант с иcпользованием SQL:

Предварительнно необходимо подключить библиотеку: Alt+F11 - Tools - References - Microsoft ActiveX Data Object 2.0 (или выше)
Будучи на Листе1, запустите макрос "Отбор"
Код:
Sub Отбор()
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset: Application.ScreenUpdating = False
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=No;"";"
rs.Open "SELECT T2.F1,(SELECT T1.F2 FROM [Лист1$A2:B65536] T1 WHERE T1.F1=T2.F1) FROM [Лист2$A2:A65536] T2", cn, adOpenStatic, adLockReadOnly
With Sheets(3): .Activate: [b:b].Clear: [a2].CopyFromRecordset rs: Set rs = Nothing: Set cn = Nothing: End With: End Sub
библиотеку поставил, но выдает ошибку на [Лист1$A2:B65536]
dyakon88 вне форума Ответить с цитированием
Старый 10.11.2010, 14:04   #17
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

Excel 2003
Вложения
Тип файла: zip пример_6.zip (10.3 Кб, 16 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 10.11.2010, 14:05   #18
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

как написать код в макросе, чтоб при каждом запуске макроса лист очищался(то есть удалялись все записи и формат)
dyakon88 вне форума Ответить с цитированием
Старый 10.11.2010, 14:46   #19
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

можно так

Код:
ActiveSheet.Cells.Clear
быстрее очистить известный диапазон, например по колонкам:

Код:
[a:v].clear
EugeneS вне форума Ответить с цитированием
Старый 11.11.2010, 08:28   #20
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Помогите пожалуйста, как сделать в условие WHERE чтоб строчка прибавлялась...
Цитата:
Option Explicit
Sub Макрос2()
Dim a(), b(), Lr As Long, i As Long, ii As Long, s As String

' Макрос2 Макрос
'
'
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx;DefaultDir=C :\Documents and Settings\Юзер\Раб" _
), Array("очий стол\excel;DriverId=1046;MaxBufferS ize=2048;PageTimeout=5;")), _
Destination:=Range("$A$1")).QueryTa ble


With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
b = .Range("a1:b" & Lr).Value
End With
For i = 1 To UBound(b)
s = s & "(`Лист1$`.`лиц счет`=" & i & ")"
's = " & "
Next i
.CommandText = Array("SELECT `Лист1$`.`лиц счет`, `Лист1$`.фамилия" & Chr(13) & "" & Chr(10) & "FROM `C:\Documents and Settings\Юзер\Рабочий стол\excel\пример.xlsx`.`Лист1$` `Лист1$`" & Chr(13) & "" & Chr(10) & "WHERE (" & s) Or (" s) ")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Таблица_Запрос_из_Excel_Files"
.Refresh BackgroundQuery:=False
End With
End Sub

dyakon88 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование поля со списком для отбора данных newgor Microsoft Office Access 2 14.05.2010 20:52
Макрос для экспорта данных в таблицу эксель scythe Microsoft Office Excel 2 21.02.2010 22:18
надо: макрос для обработки данных poll69 Microsoft Office Excel 2 06.02.2010 17:25
Макрос для передачи персанальных данных Evroclidon Microsoft Office Excel 19 01.02.2010 21:12
Условия для отбора в запрос из данных в форме smoky Microsoft Office Access 2 22.09.2008 16:10