Tag: access vba

Excel VBA:连接刷新错误

我有一个访问数据库坐在networking驱动器上的共享文件夹。 它通过excel被多台计算机访问。 用户有权通过Excel工作表更新和修改数据库。 该数据库可作为Excel表格中的embedded表格提供。 我正在使用Excel 2007。 为了这个工作,我有一个自动的macros运行,它将数据源path更改为计算机的path。 例如,在我的PC上,它可能位于C:/accessDB.accdb,但在用户X的PC上,数据可能位于Z:/accessDB.accdb。 运行的更新如下: Dim connString As String Dim folderLoc As String Dim cn As WorkbookConnection Dim oledbCn As OLEDBConnection Set cn = ThisWorkbook.Connections(local_table) Set oledbCn = cn.OLEDBConnection folderLoc = ThisWorkbook _ .sheets(settingSheet) _ .Range(settingDbFileFolder).Value _ & "\" & _ ThisWorkbook _ .sheets(settingSheet) _ .Range(settingDbFileName).Value connString = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" […]

DoCmd.TransferSpreadsheet到现有的文件不工作

我有以下代码: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, Format(DateAdd("m", -1, Date), "mmmm"), sFileLocation & sFileName 其中sFileLocation是我的桌面, sFileName是Temp.xlsx excel文件的行为就好像它已被修改(date/时间修改更改),但是当您打开它时,数据不在那里。 数据库中有一年中的所有月份都有查询,并且所有的查询都返回数据,所以这不是问题。 如果我将Temp.xlsx更改为Temp1.xlsx(不存在),数据导出没有问题。 任何想法为什么数据不导出到现有的文件。

VBA – 加速由Access发送的Excel指令

要build立一个报告,我用Access计算一些数据,然后用一个VBAmacros来导出几个表格,然后这个macros启动Excel并从Excel中运行另一个macros来编译所有的东西。 一切都已经很快了,但除了我的Access VBA之外,还需要在其中有VBA代码的Excel工作表。 所有我最近添加了很多新function到我的数据库,可以生成几个报告的选项,在Access窗体上提供了大量的定制。 在这两个文件之间导航有些复杂,所以我试图把我的Excel代码放在Access中,所以我的同事们(最终用户)只需要在他们的计算机上保存1个文件,这也会使debugging更容易。 报告按预期build成,但进程慢了5倍。 我试着测量每一步所花费的时间,并且比例保持不变(除了PowerPoint演示文稿最终build立时的部分)。 所以我决定尝试这个无用的代码: Sub test() Dim t As Double 'Starting time t = Round(Timer) Dim b As Workbook Dim s As Worksheet Dim i As Integer, j As Integer 'Loop variables 'Create workbook Set b = Workbooks.Add 'Get worksheet Set s = b.Sheets(1) 'Double Loop For i = 1 To […]

查看后端连接从Excel访问数据库

我有一个数据库,在我的工作场所,许多人有excel文件与链接表等 在有些情况下,我非常重视数据库的使用,而且不能正确地分解和修改数百个可能的excel文件,这是不可行的。 尤其是当人们一直在创作新文件的时候。 我发现下面的代码可以让我看到有人连接到数据库的前端: Sub ShowUserRosterMultipleUsers() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim i, j As Long Set cn = CurrentProject.Connection ' The user roster is exposed as a provider-specific schema rowset ' in the Jet 4.0 OLE DB provider. You have to use a GUID to ' reference the schema, […]

从Access 2007传输到Excel 2007中排除列标题的代码

这是我正在使用的代码。 它工作正常,但我需要知道什么额外的代码是需要排除列标题。 Private Sub Command104ContrDonatWeekly_Click() On Error GoTo Command104ContrDonatWeekly_Click_Err DoCmd.OpenQuery "Contributors Who Donated in Past Week", acViewNormal, acEdit xlfile = "C:\Users\Michael1\Desktop\KSN\DistributionListWeekly.xlsb" DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, _ "Contributors Who Donated in Past Week", xlfile, True, "EmailList" Shell "Excel.exe " & xlfile, vbNormalFocus Command104ContrDonatWeekly_Click_Exit: Exit Sub Command104ContrDonatWeekly_Click_Err: MsgBox Error$ Resume Command104ContrDonatWeekly_Click_Exit End Sub 这里是一些代码 如何编写VBA代码来隐藏Excel中的所有列和行标题? 我不知道在哪里需要使用我已经使用的代码。 Private Sub […]

导出macros错误

我有一个macros设置在哪里点击一个button,它将数据导出到Excel文件,它运行顺利,似乎直到我得到错误的结束运行时错误3434不能扩展名称范围 代码是: Public Sub ExportTblToExcel() Const FILE_PATH As String = "C:\" Dim FULLPath As String strFullPath = FILE_PATH DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, "tblExport", strFullPath & "CD_Data.xlsx", False MsgBox ("Export Complete. Check the C:\ Drive for the Document CD_Data") End Sub 突出显示的部分是: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, "tblExport", strFullPath & "CD_Data.xlsx", False 我不知道错误是什么,过去一直工作到现在为止。

从Access运行VBA以改变Excelfile

我试图从我的访问数据库运行一个脚本来改变一个刚刚由同一个脚本生成的excelfile。 我想创build一个循环遍历每个创build的工作表和工作簿的模块,同时执行一些基本任务。 我对vba excel很新,所以我似乎无法find问题所在。 在Excel中,我使用macroslogging器编写了第一个脚本。 这工作正常。 我现在想要制作一个脚本来复制这个excelmacros的访问,为此我已经尝试写一个脚本(如下所示),但是这似乎停止在以下操作:剪切和自动填充。 同样,当忽略这些命令时,popup窗口显示我要求覆盖每个循环的现有文件,这是我想避免的。 非常感谢您的帮助! Excel代码: Sub Macro1() Range("A1:A200").Select Selection.Copy Range("A201").Select ActiveSheet.Paste Range("A401").Select ActiveSheet.Paste Range("A601").Select ActiveSheet.Paste Range("V1:AO200").Select Application.CutCopyMode = False Selection.Cut Range("B201").Select ActiveSheet.Paste Range("AP1:BI200").Select Selection.Cut Range("B401").Select ActiveSheet.Paste Range("BJ1:CC200").Select Selection.Cut Range("B601").Select ActiveSheet.Paste Rows("2:2").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("V1").Select ActiveCell.FormulaR1C1 = "=IF(OR(AND(RC[-6]=FALSE,RC[-11]=FALSE,RC[-16]=FALSE,RC[-1]=FALSE),AND(RC[-6]="""",RC[-11]="""",RC[-16]="""",RC[-1]="""")),0,1)" Range("V1").Select Selection.AutoFill Destination:=Range("V1:V800") Range("V1:V800").Select Range("A1").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$V$800").AutoFilter Field:=22, Criteria1:="0" Rows("2:1000").Select Selection.Delete Shift:=xlUp […]

为什么我的DLookup产生“invalid use of null”错误:94

在我的Access VBA代码中,我有几个顺序的DLOOKUP函数。 他们都是一样的,除了他们从'studys'返回的参数的价值。 最后一个偶尔会产生错误: 无效的使用null 产生错误的代码行是: necropsy = DLookup("[Necropsy]", "Studys", "[Primary Key] = " & ID) “研究报告”中的尸检值偶尔是一个空的date,但这就是为什么我要查找它。 比较上面那行: studyEnd = DLookup("[Study End]", "Studys", "[Primary Key] = " & ID) 这段代码运行良好。 它永远不会返回空值,因为研究结束永远不会为空。 这是怎么回事?

自动导入到访问 – 强制字段types

我在Microsoft Access数据库中有一张表,每天从日常的性能报告中导入数据。 导入数据中的特定字段(指站点名称)是源数据中的大多数报告的文本字段,但在一个报告的文本字段(例如,站点00415)和数字字段(例如00415)之间是混合的。 当数据被存储在Excel中时,我强制将数字网站设为文本,因为其中一些网站的前导零。 Access表的数据types为Text (和格式@应该是相关的),但是在导入包含数字站点的报表时,由于有试图将整列导入为数字而不是导入错误,文本。 有没有办法强制字段导入为文本即使当文件的第一行(我相信是什么访问基于字段types)是数字? 或者,我应该改变字段types的东西,可以处理文本和数字,但重要的是离开数字,没有任何格式的格式。 值得一提的是,我一直通过保存的导入方法导入数据,然后通过使用以下脚本编写脚本,并在两种导入方法中遇到此问题: Option Compare Database Sub import_test() Dim strXls As String strXls = "C:\Users\me\Desktop\IMPORT.xlsx" DoCmd.TransferSpreadsheet acImport, , "ImportDB", _ strXls, True, "A1:Z100" End Sub

点击导出查询结果从Access到Excel

我试图从我的访问数据库导出到Excel电子表格数据。 一切都很顺利,直到我试图编写一个窗体的onclick事件。 这里是代码: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "ReportQuery", "C:\helloworld.xlsx", True 我得到的错误是'运行时错误3051'Microsoft Access数据库引擎无法打开或写入文件…它已经被另一个用户独占打开或者您需要权限来查看和写入其数据。 我很难相信引擎没有权限。 有没有一个设置或我在这里失踪?