大家好,我是新来的,我是vba的新手。
我想解决以下问题:
我有两个不同的访问表。它们中的每一个都包含我想先比较的数据,然后,如果某个约束为真,我想将两个访问数据库表中的某些列中的某些列导入到Excel工作表中。
我已经拥有的:与数据库的连接,我可以通过debug.print命令读取数据并在控制台上打印。
我真的不知道如何将某些行(符合约束的行)写入excel表。
'commandstring and data base variables stands here
'non database connection variables
Dim oldID, newID, oldBuildPlanned, newBuildPlanned As String
Dim createExcel, doesExcelExist As Boolean
Dim xl As Excel.Application
Dim wb As Excel.Workbook
Dim Wksht As Excel.Worksheet
Dim dataVar As String
Dim counter As Integer
counter = 0
createExcelSheet = False
doesSheetExist = False
'Debug.Print "TEST old database"
Do While Not objRs.EOF And Not objRs2.EOF
'Debug.Print vbTab & objRs(0) & " " & objRs(1)
'assigning database values to variables to make them comparable
oldID = objRs(counter)
newID = CStr(objRs2(counter))
oldBuildPlanned = objRs(counter + 1)
newBuildPlanned = objRs2(counter + 1)
If oldID = newID And oldBuildPlanned = newBuildPlanned Then
createExcel = True
If createExcelSheet = True And Not doesSheetExist = True Then
Set xl = New Excel.Application
Set wb = xl.Workbooks.Add
Set Wksht = ActiveWorkbook.Worksheets("Sheet1")
doesExcelExist = True
End If
Call writeReport(newID)
End If
objRs.MoveNext
objRs2.MoveNext
Loop
'tidy up stuff comes here
如果我的代码格式不像往常一样,我很抱歉,这是我在这个论坛的第一篇文章^^
因此writeReport()应包含将数据写入工作表的代码。我计划将匹配数据库条目的id作为参数插入到方法中,并从记录集中读取这些特定数据。但我无法将记录集项转换为字符串,因此byRef参数声明会导致编译错误"类型不匹配"。另外我试图用DoCmd.TransferSpreadsheet导出表,但是这个方法将整个表导出到excel中,它有效,但它不是我要搜索的。
我希望有人可以帮我解决我的小问题,如果你需要更多信息,请随时问我。我正在使用ADO。
提前致谢
答案 0 :(得分:-2)
欢迎来到论坛,
我认为您可能会发现这两个网站对您要做的事情很有帮助。第一个是关于一起使用Access和Excel的很棒的教程。
http://www.datawright.com.au/excel_resources/excel_access_and_ado.htm
http://www.w3schools.com/sql/default.asp
我不确定您是如何创建记录集的,我建议您使用SQL语句作为源代码。这样,您只需从Access中提取所需的数据。如果您有任何更具体的问题,请告诉我。
杰森