Макрос для отображения результата SQL на основе выбора ячейки пользователя - PullRequest
0 голосов
/ 23 февраля 2010

Привет всем, у меня есть следующий код: Теперь этот код получает результаты из SQL-запроса и вставляет их в предопределенную ячейку, которую я указываю в коде ... что я хочу сделать, ячейка, которую пользователь выбирает, когда он нажимает на кнопку, которой я назначаю макрос ниже. Таким образом, поток будет

  • Пользователь нажимает на кнопку
  • Пользователю предлагается выбрать макрос ячейки отображает результаты в ячейке, выбранной пользователь ..

как мне это сделать?

Sub Stats1()
Workbooks("2006_2007_2008.xls").Sheets("Sheet1").Select

Dim objConn As ADODB.Connection

Dim rsData As ADODB.Recordset

 Dim strSQL As String 
 szconnect = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security             

 Info=False;Initial Catalog=*****;Data Source=*****"

'Create the Connection and Recordset objects.

 Set objConn = New ADODB.Connection

 Set rsData = New ADODB.Recordset

 On Error GoTo errHandler

'Open the Connection and execute the stored procedure

objConn.Open szconnect



 strSQL = "select name from user"

objConn.CommandTimeout = 

Set rsData = objConn.Execute(strSQL)

For iCols = 0 To rsData.Fields.Count - 1

    ActiveSheet.Range().Select
  ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + iCols).Value =           rsData.Fields     (iCols).Name
   ActiveSheet.Cells.Font.Name = "Arial"
   ActiveSheet.Cells.Font.Size = 8
  Next
  ActiveSheet.Range(ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column),     
  ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column +rsData.Fields.Count)).Font.Bold    = True               


 j = 2

 If Not rsData.EOF Then

'Dump the contents of the recordset onto the worksheet
 On Error GoTo errHandler

ActiveSheet.Cells(ActiveCell.Row + 1, ActiveCell.Column).CopyFromRecordset rsData
If Not rsData.EOF Then
MsgBox "Data set too large for a worksheet!"

End If

rsData.Close
 End If



 Unload frmSQLQueryADO

Exit Sub



 errHandler:

 MsgBox Err.Description, vbCritical, "Error No: " & Err.Number

'Unload frmSQLQueryADO

 End Sub

1 Ответ

0 голосов
/ 23 февраля 2010

Что ты не умеешь делать?
Справка vba расскажет, как добавить макрос в кнопку.

Чтобы пользователь мог ввести диапазон, самое простое это:

dim my_cell as string
my_cell = InputBox ("Какая ячейка?")

Или вы можете создать пользовательскую форму и поместить элемент управления RefEdit на форму.

Это один из способов

Dim my_cell As Range  
Set my_cell = Application.InputBox(prompt:= _  
"Click in a cell to select a destination range", Type:=8)  
my_cell.Select
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...