需要一些帮助。我不是程序员,也不精通VBA,但最终还是设法使我公司每周手动运行的旧Access文件自动化。手动运行需要2个小时以上,因此自动化似乎值得。似乎已经解决了大部分问题,但是现在在最后的几个命令中却失败了。大约要花一个小时才能运行该错误,因此永远需要排查故障。
如果我说实话,我真的不知道我在做什么。到目前为止,我一直在使用来自其他答案(我发现其他类似问题的答案)的示例来使这一过程自动化,并且前5个步骤运行没有问题。我已经尝试过其他解决此错误的方法,但是他们还没有为我解决它,因为我几乎只是在墙上扔东西,看看有什么问题,所以我不确定如何继续。
以下是给出错误的代码:
strSQL = ""
strSQL = strSQL & "SELECT Alla_Aktiva.LEVID AS [FINFO LEVERANTÖRSNR], Alla_Aktiva.FINFONR AS [FINFO ARTIKELNUMMER], Alla_Aktiva.LEVARTNR AS [LEVERANTÖRS ARTIKELNUMMER], Alla_Aktiva.PTISWEDISH AS INGRESS, Alla_Aktiva.PTKSWEDISH AS PRODUKTTEXT, Alla_Aktiva.PTTSWEDISH AS [TEKNISK BESKRIVNING], Alla_Aktiva.PTPSWEDISH AS PUNKTLISTA "
strSQL = strSQL & "FROM FINFO_ORDERS_GRBES00 INNER JOIN Alla_Aktiva ON FINFO_ORDERS_GRBES00.SUPPLIERFROM_BELNRF = Alla_Aktiva.LEVID "
strSQL = strSQL & "WHERE (((FINFO_ORDERS_GRBES00.SUBSCRIBERID_BEABN)=39221"
strSQL = strSQL & "));"
db.QueryDefs.Delete "ExportData2"
Set queData = db.CreateQueryDef("ExportData2", strSQL)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData2", "G:\Finfo_Jobb\MCLankar\MC Stat\Utskick\Abo-" & 39221 & "" & Format$(Now(), "YYYYMMDDHHMMSS") & ".xlsx", True
db.QueryDefs.Delete“ ExportData2”-这被标记为错误,并且在此集合中未找到该项目作为错误
因此,从理论上讲,这应该生成一个统计报告,以统计每个供应商(瑞典的Leverantör)在其产品上拥有多少数据,并将其放入放置在我们共享网络磁盘(G :)中的Excel文件中>
由于每次尝试新事物都要花一个小时以上,所以我对此感到有点沮丧,只有三天才可以休假三周,然后才能开始运行请允许我在那个假期不工作,生成报告。 :p
任何帮助将不胜感激
(为什么我的公司使用Access来从一个包含数百万种产品的产品数据库中生成统计信息,而每个产品都有数百个不同的数据点,这超出了我:p(这是一直以来的心态,没有财务动机进行更新到更合适的东西,但是是的...)
答案 0 :(得分:0)
由于此时不需要QueryDef(正在删除它,但它实际上并不存在)。只需删除它即可简单检查一下是否存在。
按如下所示修改代码即可为您解决问题。
strSQL = ""
strSQL = strSQL & "SELECT Alla_Aktiva.LEVID AS [FINFO LEVERANTÖRSNR], Alla_Aktiva.FINFONR AS [FINFO ARTIKELNUMMER], Alla_Aktiva.LEVARTNR AS [LEVERANTÖRS ARTIKELNUMMER], Alla_Aktiva.PTISWEDISH AS INGRESS, Alla_Aktiva.PTKSWEDISH AS PRODUKTTEXT, Alla_Aktiva.PTTSWEDISH AS [TEKNISK BESKRIVNING], Alla_Aktiva.PTPSWEDISH AS PUNKTLISTA "
strSQL = strSQL & "FROM FINFO_ORDERS_GRBES00 INNER JOIN Alla_Aktiva ON FINFO_ORDERS_GRBES00.SUPPLIERFROM_BELNRF = Alla_Aktiva.LEVID "
strSQL = strSQL & "WHERE (((FINFO_ORDERS_GRBES00.SUBSCRIBERID_BEABN)=39221"
strSQL = strSQL & "));"
' Modified Code below
Dim qdf As DAO.QueryDef
For Each qdf In CurrentDb.QueryDefs
If qdf.Name = "ExportData2" Then
CurrentDb.QueryDefs.Delete "ExportData2"
Exit For
End If
Next
'End modified code
Set queData = db.CreateQueryDef("ExportData2", strSQL)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData2", "G:\Finfo_Jobb\MCLankar\MC Stat\Utskick\Abo-" & 39221 & "" & Format$(Now(), "YYYYMMDDHHMMSS") & ".xlsx", True