Tag: access vba

Excel格式的代码适用于第一个文件,但不适用于第二个文件

我有三个内容和结构非常相似的Excel文件。 在我可以使用这些文件之前,需要对这些文件进行一些格式化步骤。 使用Access VBA,我已经开发了一些代码来删除某些行,并对数据执行TextToColumnsfunction。 此代码适用于第一个电子表格。 但是,我发现第二个错误: 运行时错误“91”:对象variables或块variables未设置 这发生在代码的Selection.TextToColumns …行(即上面的操作对第二个电子表格执行正常)。 任何想法为什么发生这种情况? 在审查这篇文章后 ,我虽然也许我需要在TextToColumns之前添加,或者可能以不同的方式定义范围。 但是,我缺乏VBA知识变得非常明显! Private Sub FormatFile(sPath As String) Dim oExcel As Excel.Application Dim owb As Workbook Dim oWS As Worksheet Dim sFile As String Dim sDirectory As String Dim rng As Range Set oExcel = New Excel.Application Set owb = oExcel.Workbooks.Open(sPath) Set oWS = owb.Sheets(1) […]

从Access表中selectID是一个string

我有一些在Excel中的代码,更新一个Access表,如果RTP_ID等于IngID,下面的匹配,如果它们是RTP_ID数字作品: sSQL = "SELECT * FROM Tbl_Primary WHERE RTP_ID = " & lngID 不过,我希望它RTP_ID可以是一个string。 我试过了: sSQL = "SELECT * FROM Tbl_Primary WHERE RTP_ID = '" & lngID & "'" 但是这仍然行不通,有什么想法? 所以如果RTP_ID是1它会工作,但如果它是1A它不会。 编辑 – 这里是我目前的代码: Application.ScreenUpdating = False Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim fld As ADODB.Field Dim MyConn Dim lngRow As Long […]

更新查询以在MS Access表中指定的范围内插入缺less的date

我有一个Access数据库跟踪滚动35周窗口的作业数据。 我有它自动化,所以一个月一次我运行一个脚本,生成一个电子邮件,并附加一个Excel工作表为适当的程序pipe理器,使他们可以更新他们的船员数量预测未来35周。 该程序保存了Excel工作表的一个副本,以便在工作表返回后可以运行比较。 我想要做的是在构build通过电子邮件发送的Excel工作表之前,从其数据集中添加缺失的date。 这样,我存储date的表格就会有一个自动生成的订单项编号,稍后我可以从Excel文件重新导入数据时参考。 我想我可以运行一个更新查询,将数据库中的所有工作logging展开到相同的结束date,并随后在滚动窗口消失时清除任何有零个工作人员数的东西,但有没有更好的方法接近这个?

closures工作表之前的消息框,以dislpay所有不受保护的工作表的名称

到目前为止,我已经完成了2个单独的编程。 在closures工作簿之前,会显示一个消息框: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim answer As String Dim question As String question = "Display all the sheets which are Unprotected" answer = MsgBox(question, vbYesNo) If answer = vbNo Then MsgBox "complete everything and then close" Cancel = True Exit Sub Else ThisWorkbook.Save End If End Sub 另一个显示在所有未受保护的工作表的新工作表“不受保护”中。 Sub UnprotectSheet() Dim ws […]

访问select最大date的条件查询

我正在处理一个如下所示的数据集: ZeroCurveID MarkRunID MarkAsOfDate 90-6589 6656 2/28/2012 90-6589 6656 2/28/2012 90-6589 6656 2/28/2012 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 14-8898 8898 8/6/2014 14-8898 8898 8/6/2014 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 14-8898 8898 8/12/2014 对于给定的ZeroCurveID和MarkRunID,应该只有一个MarkAsofDate。 因此,对于ZeroCurveID = 14-8898和MarkRunID = 8898,MarkAsofDate必须等于2014年8月12日,其他值不正确。 在某些情况下,对于相同的MarkRunID和ZeroCurveID,我有两个MarkAsofDate值。 我想要创build一个查询来识别这些实例何时发生,并select较大的MarkAsofDate值作为正确的值。 我怎样才能devise一个查询或VBA子程序来做到这一点?

从Access的Excel格式化每隔一段时间(对象variables/块未设置)

我有一个点击子例程,导出两个表格,以Excel。 然后,我logging了一个Excelmacros,并将代码复制到相应的格式化工作表。 我的问题是,我每隔一段时间运行代码,我得到这个错误:“运行时错误'91':对象variables或块variables未设置” 这发生在我的代码的这一点: With .ActiveSheet .Range("B" & .Cells.Rows.Count).End(xlUp).Offset(1, 0).Activate End With With ActiveCell '~~~~~~~~ERROR OCCURS HERE~~~~~~~~~~~~ .formula = "=SUM(B2:" & ActiveCell.Offset(-1, 0).Address & ")" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .Font.Bold = True End With 我想要SUM的范围是dynamic的,这就是为什么我在公式中抵消了单元格1,我试过了: .formula = "=SUM(B2:B3)" 但是这给出了同样的错误。 完整的代码如下,我已经收到来自“Excel工作表格式”注释下的第一行的这个错误,并且已经通过在代码中添加了块,但是无法避开.formula =行。 我真的坚持这一点,任何帮助将不胜感激 完整代码: Private Sub cmdExport_Click() Dim xl As Excel.Application Dim wb As Object Dim todaysDate As String […]

连接Excel和Access之间的string

此子文件在Access中运行以从Excel文件导入数据,“FileName” 此连接string/打开过程几乎从MSDN引用复制,但是有一个错误。 当我通过时,我收到oConn.Open行上的“无法识别的数据库格式”。 文件名是电子表格,而不是数据库。 我如何表明这一点? Public Sub Import2(FileName As Variant) Dim wb As Object, ws As Object Dim xl As Object Set xl = CreateObject("excel.Application") Dim qs As String Dim ValueString As String Dim sConn As String Dim oConn As Object Set oConn = CreateObject("adodb.connection") oConn.ConnectionString = "Provider=microsoft.ACE.OLEDB.12.0; Data Source=filename; Extended Properties=Excel 12.0 XML; hdr=yes" […]

错误9 VBA – 下标超出范围出现其他所有运行

下面的代码位于我的访问数据库中,一半时间运行良好。 另一半给我:“错误9下标超出范围”,它突出了“设置WKS = Workbooks(…”行作为问题,我知道问题在于它不确定它参考哪个工作簿但是我不知道该怎么做才能使之更清楚。 Sub fixborderss() Dim WKS As Excel.Worksheet Dim lastrow As Long Set WKS = Workbooks("L3 PSR.xls").Worksheets("L-3 Project Status Report") lastrow = Range("I" & WKS.Rows.Count).End(xlUp).Row WKS.Range("A8:V" & lastrow).Borders(xlEdgeTop).Color = RGB(191, 191, 191) WKS.Range("A8:V" & lastrow).Borders(xlEdgeBottom).Color = RGB(191, 191, 191) WKS.Range("A8:V" & lastrow).Borders.LineStyle = xlContinuous End Sub

从Excel中selectExcel中的偏移量

我正在从Access数据库中的数据创build一个Excel文件。 我目前正在尝试做的是偏移我在Excel中做的select从Access中,我不断收到错误。 ExcelWS.Range(Range("H6"), Range("H6").End(xlDown)).Offset(0, -1).Select ExcelWS是一个Excel。 工作表对象。 我的目标是从G6中select工作簿的末尾。 但是,不是G列中的每个单元格都被填充,因此来自单元格G6的简单End(xlDown)只会让我部分通过该文件。 也就是说,列H中的所有单元格都被填充,所以我可以从单元格H6中完成一个End(xlDown)。 从那里,我想把我的select向左移动,给我所需的范围在列G选定。 上面的代码是大约两个小时的search结果,并尝试吨类似的代码的不同组合。 不过,我仍然收到一个错误。 运行时错误“1004”: 对象'_Global'的方法'范围'失败 奇怪的是1/10倍,我会收到这个愿望的结果。 剩下的时间我收到上述错误。 我感觉好像我的问题与从Access中运行这行代码有关,但是这是目前我完成此任务的唯一方法,因为我还有其他依赖于能够从Access执行的操作。 任何帮助将不胜感激,如果有任何更多的信息,我可以给我尽我所能。 谢谢。

ADOlogging集编号字段无法正确传输给西class牙用户

我有一个由Excel前端控制的Access数据库。 北美有9个用户没有问题,西class牙的第10个用户有数字格式问题。 当点击一个button时,会创build一个PDF(对所有用户都有正确的格式),并创build一个数据库条目。 对于在西class牙的用户,仙分隔符将从数据库条目中删除。 我正在使用ADOlogging集来传输数据,所有值都input到Excel中的文本框控件中。 我试图分隔美元和美元字段,并添加validation,没有非数字字符input。 点击button时,它将PDF和数据库条目的美元和美分字段组合在一起。 Private Sub AmountBoxCents_AfterUpdate() If CheckValuesForNonNumbers(AmountBoxCents.Value) = True Then If IsNumeric(AmountBox.Value Then AmountBoxTotal.Value = (Left(AmountBoxCents.Value, 2)) / 100 + AmountBox.Value End If Else AmountBoxCents.Value = "" End If End Sub CheckValuesForNonNumbers检查刚刚更新的字段中的字母或符号。 然后IsNumeric部分检查美元金额不是空白的。 Set cnn = New ADODB.Connection 'Connect to the Access database With cnn .Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & […]