Tag: access vba

Sub正在影响错误的Excel工作簿

我编写了这个VBA代码,以便从Access表中的数据生成一个报告,并以用户友好的格式将其转储到Excel中。 代码第一次很好用。 但是,如果我在第一次生成的Excel工作表打开时再次运行代码,我的一个子例程会影响第一个工作簿,而不是新生成的工作簿。 为什么? 我怎样才能解决这个问题? 我认为这个问题是我的工作表和logging集传递给名为GetHeaders的子程序打印列,但我不知道。 Sub testROWReport() DoCmd.Hourglass True 'local declarations Dim strSQL As String Dim rs1 As Recordset 'excel assests Dim xlapp As excel.Application Dim wb1 As Workbook Dim ws1 As Worksheet Dim tempWS As Worksheet 'report workbook dimentions Dim intColumnCounter As Integer Dim lngRowCounter As Long 'initialize SQL container strSQL = "" […]

如何在Access-to-Excel自动化中正确指定ATP 2.0 XIRR函数调用

如果有人可以帮助,我需要一些正确定义Access 2003中的某些调用参数到Excel 2003 VBA问题。 我试图在Access中使用ATP 2.0 Type Library中的XIRR函数。 我在Access项目中引用了ATP 2.0types库。 下面是一个表单后面的相关VBA代码(带有一点伪代码): Dim aCF as Variant 'this variant will hold the cash flows Dim aDates as Variant 'this variant will hold the dates Dim oATP2 As ATP2.OCATP Set oATP2 = New ATP2.OCATP 'used in the Form_Open event to instantiate the object 在这个模型中,我总是有五个现金stream量来处理:上一个季度的价值stream出,三个月的净收入和当前的季度terminal价值。 (如果涉及更多的元素,我肯定会使用循环结构。)在用户定义的子程序中,我重新调用变体,加载数组并调用XIRR: GetAssetReturn_X() REDIM aDates(4) […]

在Access 2010中创buildExcel 2010实例

这里疯狂的事情,但我想从Access 2010初始化一个Excel 2010实例。(我曾经在07/03多次之前做过的事情)。 无论我使用迟到还是早期绑定,我都会在Set行上看到一条错误消息,指出这一点 Excel has stopped working A problem caused the program to stop working correctly. Please close the program. 有人有主意吗? 这是我的绑定代码,以防止它的帮助: 'late binding Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") 'Early Binding (of course I have my reference set to Microsoft Excel Object Library Dim xlApp As Excel.Application Set xlApp = New […]

在excel中访问插入已打开的查询下面现有的数据

好吧,我有一个Excel文件的数据。 此数据来自已从Access数据库手动复制的查询。 既然这个每天都要做,我们想自动完成。 在Access数据库中已经有了VBA代码,可以打开查询并将其写入右侧表格的Excel文件中。 但是,它为我插入一个静态范围,所以它实际上只是覆盖我说的范围: Dim rst As DAO.Recordset Dim ApXL As Object Dim xlWBk As Object Dim xlWSh As Object Set rst = CurrentDb.OpenRecordset("Query name") Set ApXL = CreateObject("Excel.Application") ApXL.Application.ScreenUpdating = False ApXL.Visible = True Set xlWBk = ApXL.Workbooks.Open("C:\blabla.xlsm", True, False) Set xlWSh = xlWBk.Worksheets(1) xlWSh.Activate xlWSh.range("A1341").CopyFromRecordset rst xlWBk.Save xlWBk.Close False ApXL.Quit rst.Close Set […]

运行时错误91 – 访问excel交互

我正在运行一个访问VBA代码来打开Excel,对一些图进行小修改并将它们保存为bmp。 这是98%的时间。 但是,我现在每隔一行在“ Selection.Left = 320 ”行出现以下错误: 运行时错误“91”: 对象variables或块variables未设置 我想解决的第二个小问题是,每次运行这个macros后,我打开其他任何一个excel文档,这个macros使用的excel文档也会自动打开,不知道为什么。 Private Sub Form_Open(Cancel As Integer) If [Forms]![Detail]![Qualification Documents].[Value] <> "" Then Dim octopus As String octopus = ([Forms]![Detail]![Qualification Documents].[Value]) Set objExcelApp = New Excel.APPLICATION Dim ws As Worksheet Set wb = objExcelApp.Workbooks.Open(FileName:="Path\" & octopus & " ", ReadOnly:=True) 'Set ws = wb.Sheets("SheetX") wb.APPLICATION.DisplayAlerts = False […]

VBA运行时错误3326:此logging集在交叉表查询上不可更新

我试图从Access到Excel输出一个交叉表查询,我读了2010年最好使用OutputTo方法,而不是TransferSpreadsheet方法。 我有以下代码行,有时它完美地工作,有时它踢VBA运行时错误3326:此logging集是不可更新的。 我没有试图更新任何数据 – 我只是想将结果数据导出到Excel。 DoCmd.OutputTo acOutputQuery, "qryStates_1_Crosstab", "ExcelWorkbook(*.xlsx)", my_filename, False 还有什么我需要做的,使其输出正确?

导入数据时,请停止使用科学记数法访问2007年

所以我用VBA从Excel文件(从其他地方的CSV报告转换而来)导入一个庞大的零件号码清单。 在导入之前调用excel工作簿来准备数据,包括下面的代码来格式化零件编号,以确保零件编号不会丢失任何信息(刚刚发现): Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 2), TrailingMinusNumbers:=True 一旦excel表被制成,我把它们导入到表中使用: DoCmd.TransferSpreadsheet acImport, 5, "PartNumberX", "D:\Target\Import Data.xlsx", -1, "PartNumberX!" & PartDim 在excel文件和Access表之间的某个地方,没有字母的零件号码和长度超过10位的数字正被转换为科学记数法,并丢失了数字上的最后几位。 我可以确认,Excel文件没有科学记数法,所以我相当确定这是发生在导入过程中的某个地方。 任何帮助,将不胜感激! -编辑: 当使用DoCmd.TransferSpreadsheet它创build表“PartNumberX” – 它不存在。 – 更新: 所以我认为导入到一个新的表格可能会导致这个问题。 导入到部件号字段作为文本字段的预定义表格中,在防止使用科学记数法访问表格方面没有区别。

当我打开另一个excel文件时,旧的工作簿(一旦被VBA打开)保持打开状态

我在Access中build立数据库,为此我从Excel工作簿问卷导入数据。 我编写了一个Import-sub,用于select,打开,检索数据并最终closures工作簿。 问题是这样的:由于某种原因,当我在计算机上打开任何Excel工作簿时(在Access或Excel未被使用的时候),问卷的一些旧版本也保持打开状态。 这个问题不会以重新启动计算机而结束,而只能通过删除特定的调查问卷工作簿来结束。 但是随后又出现了另外一本工作簿。 我有一个理论认为,这可能是因为我在我的导入子中打开了问卷,遇到了一个运行时错误,在closures工作簿之前就已经结束了这个子工作簿,而且工作簿还是“开放的”。 或者还有一个活跃的链接。 所以我有两个问题: 1)有谁知道我可以如何解决这个问题? 2.)是否通常不会closures通过VBA打开的工作簿? 我的相关代码是: Dim MyXL As Excel.Application Dim MyWB As Excel.Workbook … 在很多事情发生之间,发生了几次中断程序的错误。 … MyWB.Close False MyXL.Quit 感谢任何帮助!

自动过滤一个受保护的Excel表单从访问打开

我正在从Excel中移动一些代码访问。 在Excel中有一个打开另一个Excel文档并应用自动筛选器的button。 Dim cell As Long cell = Sheet2.Cells(9, "i").Value Workbooks.Open Filename:= _ "C:/worksheet1.xls" Selection.AutoFilter Field:=3, Criteria1:=cell 这是从Excel中的代码,它用于正常工作,但现在也抛出一个错误,因为工作表受到保护。 使用一些代码,我从这个线程自动筛选Excel与VBA 我想出了代码,应该在访问工作,但没有 我到目前为止是 Dim oApp As Object Dim wb As Object Dim ws As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'tries to open workbook On Error Resume Next 'change file path to the correct one […]

运行时错误“3052”。 文件共享locking计数超出。 增加MaxLocksPerFileregistry项

我已经在这个数据库上工作了一段时间了,并且陷入了一些与数据库有关的问题,这就是其中之一。 这个代码将一张表转换成excel,把每一百万条logging放在一张单独的表格中。 目前我正试图转移的表格有150万条logging和7个字段。 编码工作正常,直到它击中Alter Table SQL。 在这一点上它吐出这个错误。 我已经增加了dbMaxLocksPerFile到2000万,这没有帮助,我很难过。 任何帮助,我可以得到这将是惊人的:) 仅供参考这是我做过的第一批VBA编程,是自学成才(谷歌教),所以我的设置等可能有点混乱。 代码如下: Private Sub EXPORT_TO_EXCEL_Click() DoCmd.SetWarnings False DAO.DBEngine.SetOption dbMaxLocksPerFile, 20000000 'That's 20 million!!! 'DTable is the file name, and is input by the user in earlier coding under a public string Call CreateNewFolder("O:\Folder Location\" & DTable & "") Dim strWorksheetPathTable As String '—-Set File Path strWorksheetPathTable […]