我正在使用2007。
我想根据某个字段从数据库中的表中提取数据,比如“汽车ID”。对于每一个“汽车ID”(总共100辆汽车),我想提取所有与该汽车相关的行到excel电子表格中,以便以后对其进行操作。理想情况下,我最终会有100个不同的电子表格,每个电子表格都描述了一辆汽车的历史。
现在,由于我有一个包含100个car ID的向量,所以我希望自动选择car ID,就像它在for循环中一样,而不是手动运行100次查询。
我认为我应该使用VBA,但由于我对和VBA都是新手,所以我不太清楚如何处理这个问题。
任何提示都将不胜感激。非常感谢。
发布于 2016-06-20 18:41:44
所以你需要两张桌子。主表包含CarID作为键字段,第二个表包含我们所有的值/兴趣。看来你已经被这样安排好了。
对于下面的示例,您将需要创建一个select查询并以"mySavedQuery“的名称保存它(此时select查询做什么并不重要,因为我们将通过代码对其进行更改)。
在命令按钮的单击中,您可以这样做:
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim intLow As Integer
Dim intHigh As Integer
Dim i As Integer
Set db = CurrentDb
intLow = 1
intHigh = DMax("CarID", "Table2")
For i = intLow To intHigh
strSQL = "SELECT Table1.CarID, Table2.Interest FROM Table1 INNER JOIN Table2 ON Table1.CarID = Table2.CarID " _
& " WHERE (((Table1.CarID)=" & i & "));"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
Set qdf = db.QueryDefs("mySavedQuery")
qdf.SQL = strSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "mySavedQuery", "C:\Users\SClark\Desktop\Survey" & i & ".xls", True
End If
Next i
Set rs = Nothing
Set db = Nothing
Set qdf = Nothing这里所发生的是,我们确定最小CarID =1,并使用DMAX来找到最大CarID。然后迭代这些值,并导出每个CarID的一个Excel表。
这是一个下流的例子,但应该让你走上正确的道路.
https://stackoverflow.com/questions/37928476
复制相似问题