Tag: access vba

为什么Range.ColumnWidth的单位不匹配点或厘米(使用的默认单位)

我在一个Access数据库中生成一个VBA子例程生成一个Excel文件,但是当我修改列的宽度使用: Range("A:A").ColumnWidth = … 根据测量单位产生混合结果。 Excel的默认度量选项是厘米。 我尝试input以厘米为单位的值,但结果不是太宽就是太小(见下面): Range("A:A").ColumnWidth = 3.07 'In Centimeters – Too small Range("A:A").ColumnWidth = 87.02 'In Points – Too big 根据文档Range.ColumnWidth使用测量单位(宽度为0)中的测量进行设置。 不pipe我input的结果是不一样的。

设置引用不存在的工作表的公式

我想build立一个引用另一个工作表的Excel工作表的公式。 通常,代码看起来像这样 aBook.Worksheets(aSheet).Cells(row, col).FormulaR1C1 = "=bSheet!A1*100" 问题是, bSheet还不存在。 如果我运行代码,应用程序将打开一个浏览器窗口,并要求我select缺less的工作簿/工作表。 我怎样才能压制这个? bSheet在后面的过程中生成,但是出于维护的原因,我不想在此之后构build公式。

Excel VBA中的列表/表格公式

试图通过VBA以编程方式将公式添加到List / Table中,但不确定正确的语法。 我需要添加类似于下面的公式: ActiveSheet.Range("B2")="[@Turnover]/SUM([Turnover])" “营业额”是列的名称。 我猜是有一个转义字符的问题,但找不到任何参考或工作原理。

使用Access VBA获取表中的行数而不使用Excel引用

我正在尝试从MS Access编辑Excel文件,而不使用Excel作为参考。 我在这个问题中find了一个解决这个问题的答案。 我不使用对Excel的引用,而是使用Objects。 这似乎大部分工作,但我没有得到所有我需要从Excel中的function,以计算表上的行。 我的代码片段如下: Dim xlBook As Object Dim xlApp As Object Dim xlSht As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\Some\Location.xlsx") Set xlSht = xlBook.Sheets("SomeSheet") tableRows = xlSht.Cells(xlSht.Rows.Count, 2).End(xlUp).Row 我在tableRows = xlSht…行上得到一个错误: Run-time error '1004': Application-defined or object-defined error 我已经尝试了很多不同的方法来解决这个问题,例如重写行,更改工作表名称。 我似乎无法find这种情况下的任何文档。 我会很感激任何帮助。

迟绑定表单模块中的UDT作为parameter passing

我有一个访问数据库,我正在尝试写一些VBA来增加自动化。 我有一个模块,我有Global Variables ,我已经成功地用来定义全局常量(文件path等)和一个模块ReportCode有两个主要的子程序,一个用ADODB运行查询(在需要的地方抓取表单参数 – 返回一个logging集),第二个采取这个logging集并将数据写入Excel模板。 鉴于我可能想多个查询写入多个选项卡我认为最好的方法是定义一个ExportDocument对象包含公共参数和OrgReport对象,其中包含查询和选项卡特定的参数 – 然后收集多个OrgReport对象的集合。 我希望将这两个parameter passing给主子程序。 这在VBA中是一种痛苦(至less与ruby相比)。 在这里你可以看到我是如何定义自定义对象的 Option Private Module ' Define Custom Doc Object Public Type ExportDocument TeamName As String TemplatePath As String SaveName As String SavePath As String End Type ' Define Custom Report Object Public Type OrgReport Query As String Fields As Variant Sheet As String […]

Excel.Application对象.Quit使EXCEL.EXE运行

我在Windows 10的MS Access 2013中工作,我只是试图写一个Sub,打开磁盘上的Excel文件,更改列格式和一些列,保存并退出。 子运行和按预期方式,但问题是,甚至在.Quit命令后,“EXCEL.EXE”保持运行,随后调用该子将导致运行时错误。 如果我运行子后closuresAccess,“EXCEL.EXE”消失在任务pipe理器上,但不是如果我做“压缩和修复”的数据库。 我做了另一个小组,只是打开Excel文件在磁盘上,并将所有列的宽度“自动宽度”,然后closures,这工作正常,不会离开“EXCEL.EXE”运行。 我究竟做错了什么? 是否可以在VBA中确保“EXCEL.EXE”正确退出? 我尝试了很多不同的行顺序Dims和设置为Nothing,工作簿closures,等等等等。另外,我在这里和其他网站上search如何解决这个问题,但2小时后,唯一的build议,我见过的VBA使用像ThisWorkbook.Saved = True,但我试过之前和之后。退出不起作用。 除此之外,我只findVB.NET或其他环境的解决scheme,我没有使用,现在旁边什么也没有。 感谢您阅读此。 代码如下: Sub changeXLcolumnFormatting() Dim XL As Object Set XL = CreateObject("Excel.Application") XL.Visible = False XL.DisplayAlerts = False XL.Workbooks.Open "C:\Users\640344\Desktop\rawDataTest.XLSX" Dim sht As Worksheet With XL Set sht = ActiveWorkbook.Worksheets(1) Dim rng As Range Dim i As Integer, j As Integer field_names […]

VBA excel中的运行时错误91用于ADODB.Recordset

在我尝试在我的Excel应用程序中发送一个sql语句后,我得到了运行时错误91。 这是下面的代码: 'Module Consts: Public rst1 As New ADODB.Recordset 'defined in a constants module 'Module Conn: Public Sub GetDynSQLQuery(ByVal strQuery$, ByVal rs As ADODB.Recordset) Set rs = Nothing If cn = "" Then Call ConnectToDb 'Sub set the variable "cn" with connectionstring to db and open the connection With rs .Source = strQuery 'Here comes […]

MS Access – > Excel MsgBox出现两次

我在Access 2016中编写了一个模块,打开Excel电子表格,将数据复制到Excel表格中,然后运行存储在显示消息框的Excel文件中的子文件,然后生成图表(或者至less应该!)。 这是访问代码: Option Compare Database Option Explicit Sub QueryExportMod() 'variable initilizations and definitions ————————————————————————————— Dim db As DAO.Database Set db = CurrentDb Dim totalFindingsQuery As String Dim breakdownFindingsQuery As String totalFindingsQuery = 'SQL text breakdownFindingsQuery = 'SQL text Dim tempQ1 As DAO.QueryDef Dim tempQ2 As DAO.QueryDef Set tempQ1 = db.CreateQueryDef("tempQ1", totalFindingsQuery) Set tempQ2 = […]

从Excel文件导入数据,以便文件不被其他用户locking

我有一个链接的数据库到我的Access前端。 此Excel电子表格更新频率非常高,每当用户打开前端时,也会在另一个窗口中打开链接的Excel电子表格,从而防止其他人尝试使用该链接的电子表格。 我试图想出几个不同的解决scheme,没有一个占上风。 方法1: 每次打开表单时,使用VBA通过本地目录中的以下行创buildExcel文件的副本。 Private Sub Form_Load() FileCopy "\\calfs01\LOCATION_A\FILE.xlsx", _ "\\calfs01\LOCATION_B\FILE.xlsx" End Sub 我收到一条错误消息,指出我没有所需的权限来复制它。 我有权限访问这个文件,因为我可以手动执行。 方法2: 不要链接Excel电子表格,而应根据Excel电子表格中的数据创build一个新表格,并使其更新Form_Load()上的表格。 最后我无法让这一步工作,不幸的是失去了它的代码! 使用自动化过程的问题是Excel电子表格中头两行是标题,我不知道解决此问题的方法。 方法3: 使用batch file来复制Excel文件,但该文件位于networking驱动器上(纠正我,如果我错了)不能从networking驱动器复制。 我在这里的主要问题是什么才是做下面的步骤最好的方法? 将文件复制到本地(或在networking上,只要每个用户至less有一个副本,以便与电子表格不存在冲突的连接问题) 链接文件一旦复制

我可以在Excel中启动Access 2007应用程序并自动将Excel值导入到Access中吗?

我有一个当铺应用程序,当客户到达商店时,店员使用Excel工作表来计算他可以借给客户多less钱,根据黄金,黄金克拉和重量的当前市场价格。 如果客户同意这个计算的金额,那么职员会进入我的Access 2007典当行应用程序,并且必须重新input黄金的价格和每种types金克拉的总重量。 我想知道是否有一种方法让我的Access应用程序自动插入在Excel工作表中input的值。