[英]Trouble With VBA ADO Call
我对 VBA 比较陌生,需要一些帮助。 我一直在从其他位和样本中拼凑出这个应用程序。 这在周五工作,但现在没有,我不明白是什么导致了这个问题。 我有一个按顺序调用潜艇的主 function。 我写了 UseADO function 来取参数。 第一个调用 UseADO {copyAllRawData()} 的子程序确实有效。 但是,当它调用子 cashDiscounts() 时,我得到一个编译错误:Sheet4 上的变量未定义错误(要传递给 UseADO 的第一个变量。还有另一个创建工作表的子,我已经验证 Sheet4 确实存在并且如果我将此注释掉,我会在 Sheet5 处理的 sub 上得到相同的错误。任何帮助将不胜感激。谢谢!
Public Function UseADO(writeToSheet As Worksheet, writeToStartCell As String, queryString As String)
'Get the Filename
Dim filename As String
filename = ThisWorkbook.Path & Application.PathSeparator & "hdremittance.xlsx"
'Get the Connection
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & filename & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;"";"
'Create the SQL Query
Dim query As String
query = queryString
'Query = "Select * from ....
'query = "Select * From [hdremittance$]"
'Get the data from the workbook
Dim rs As New Recordset
rs.Open query, conn
'Write Data
'Dim sht As String
'sht = writeToSheet
writeToSheet.Cells.ClearContents
writeToSheet.Range(writeToStartCell).CopyFromRecordset rs
'Close the Connection
conn.Close
End Function
Sub copyAllRawData()
UseADO Sheet1, "A2", "Select * From [hdremittance$]"
ThisWorkbook.Sheets(1).Range("A1").Value = "Invoice Number"
ThisWorkbook.Sheets(1).Range("B1").Value = "Keyrec Number"
ThisWorkbook.Sheets(1).Range("C1").Value = "Doc Type"
ThisWorkbook.Sheets(1).Range("D1").Value = "Transaction Value"
ThisWorkbook.Sheets(1).Range("E1").Value = "Cash Discount Amount"
ThisWorkbook.Sheets(1).Range("F1").Value = "Clearing Document Number"
ThisWorkbook.Sheets(1).Range("G1").Value = "Payment/Chargeback Date"
ThisWorkbook.Sheets(1).Range("H1").Value = "Comments"
ThisWorkbook.Sheets(1).Range("I1").Value = "Reason Code"
ThisWorkbook.Sheets(1).Range("J1").Value = "SAP Company Code"
ThisWorkbook.Sheets(1).Range("K1").Value = "PO Number"
ThisWorkbook.Sheets(1).Range("L1").Value = "Reference/Check Number"
ThisWorkbook.Sheets(1).Range("M1").Value = "Invoice Date"
ThisWorkbook.Sheets(1).Range("N1").Value = "Posting Date"
ThisWorkbook.Sheets(1).Range("O1").Value = "Payment Number"
End Sub
Sub cashDiscounts()
UseADO Sheet4, "A2", "Select Top 10000 [Invoice Number],[Keyrec Number],[Doc Type],[Transaction Value],[Reason Code] From [hdremittance$] WHERE [Reason Code] Like '*CASH DISCOUNT%' "
'D-4080 (Cash/Trade Discount)
ThisWorkbook.Sheets(4).Range("A1").Value = "Invoice Number"
ThisWorkbook.Sheets(4).Range("B1").Value = "Keyrec Number"
ThisWorkbook.Sheets(4).Range("C1").Value = "Doc Type"
ThisWorkbook.Sheets(4).Range("D1").Value = "Transaction Value"
ThisWorkbook.Sheets(4).Range("E1").Value = "Reason Code"
ThisWorkbook.Sheets(4).Range("F1").Value = "Distribution Account"
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
ThisWorkbook.Sheets(4).Range(Cells(2, "F"), Cells(LastRow, "F")).Value = "D-4080"
End Sub
Sub buildNameWorksheets()
'Sheets.Add Count:=[10]
Sheets("Sheet1").Name = "rawData"
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "filterCriteria"
'Sheet2
'ThisWorkbook.Sheets(2).Range("A1").Value = "Invoice Number"
'ThisWorkbook.Sheets(2).Range("B1").Value = "Keyrec Number"
'ThisWorkbook.Sheets(2).Range("C1").Value = "Doc Type"
'ThisWorkbook.Sheets(2).Range("D1").Value = "Transaction Value"
'ThisWorkbook.Sheets(2).Range("E1").Value = "Reason Code"
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "invoices"
'Sheet3
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "cashDiscounts"
'Sheet4
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "tradeDiscounts"
'Sheet5
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "earlyPmtFees"
'Sheet6
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "rtvDamagedFees"
'Sheet7
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "rdcComplianceDeductions"
'Sheet8
Sheets.Add(After:=Sheets(Sheets.Count)).Name =
"supplierCollabTeamAnalytics" 'Sheet9
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "newStoreDiscount"
'Sheet10
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "volumeRebate"
'Sheet11
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.