0

我编写了一个 vba 将范围的偏移量作为另一个函数的查询表的输入传递,但我遇到了错误。

Sub test2()

Dim LastCol As Long
With ThisWorkbook.Sheets("Summary (AIX)")
LastCol = .Range("A2").SpecialCells(xlCellTypeLastCell).Column
End With

Dim r As Long
Dim ser_name As String
Dim y As String

For r = (LastCol - 1) To 2 Step -2
With ThisWorkbook.Sheets("Summary (AIX)")
y = Cells(2 + 2, r + 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)

MsgBox CStr(Cells(2, r).Value)
ser_name = CStr(Cells(2, r).Value)
get_unix_avg_cpu ser_name, y
End With
Next r
End Sub

==================================================== ========================

Sub get_unix_avg_cpu(server_hostname, x)


Dim oRS As ADODB.Recordset
Dim ConnString As String
Dim SQL As String


Dim qt As QueryTable
ThisWorkbook.Sheets(server_hostname).Activate

ConnString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test;User=root;Password=123456;Option=3;"
Set oCn = New ADODB.Connection
oCn.ConnectionString = ConnString
oCn.Open


SQL = "SELECT cpu_max_unix_0.CPU FROM test.cpu_max_unix cpu_max_unix_0 where cpu_max_unix_0.SERVER_NAME='" & server_hostname & "' Order By cpu_max_unix_0.LOGDATE"

Set oRS = New ADODB.Recordset
oRS.Source = SQL
oRS.ActiveConnection = oCn
oRS.Open

Set qt = ThisWorkbook.Sheets("Summary (AIX)").QueryTables.Add(Connection:=oRS, _
Destination:=ThisWorkbook.Sheets("Summary (AIX)").Range(x))


qt.Refresh

If oRS.State <> adStateClosed Then
oRS.Close
End If


If Not oRS Is Nothing Then Set oRS = Nothing
If Not oCn Is Nothing Then Set oCn = Nothing


End Sub

停止“Sub get_unix_avg_cpu(server_hostname, x)”编译错误:未定义用户定义类型

请帮忙!!

4

1 回答 1

0

ADODB 是一个外部库,这意味着它没有内置在 Excel 中,因此您需要将其添加到您的项目中。

为此,在 IDE 中单击工具 > 参考

然后向下滚动,直到找到“Microsoft ActiveX 数据对象”,其中会有一些,因此选择具有最高数字的一个,勾选它,然后按确定。

然后,您应该能够运行您的代码。

这种方法称为早期绑定,为了让您的工作簿为其他人工作,他们还需要在他们的计算机上安装此参考。通常,在开发时最好使用运行代码的最低版本的库。您也可以使用后期绑定。

于 2012-06-07T11:42:35.740 回答