Tag: vba

VBA中date之间的SQL查询

我有一个问题,使用Excel和Access数据库在VBA中进行SQL查询。 在mi VBA代码中,我有两个数据variables与这个内容: DateMin = 31/07/2014 22:00:00 DateMax = 01/08/2014 06:00:00 我有一个访问数据库与许多数据与date字段。 我试图从数据库中提取数据与我的两个variables之间的date,我编码: sql = "SELECT Date FROM Table WHERE Date BETWEEN #" & DateMin & "# AND #" & DateMax & "# 但不起作用。 结果不正确,date不在我的两个date之间。 但是,如果我改变这个句子并编码 sql = "SELECT Date FROM Table WHERE Date > #" & DateMin & "# 有用! 给date比DateMin更高的数据,但我没有DateMax来阻止它。 我认为这个问题是在我的第一个代码的第二部分,因为如果我编码 sql = […]

* .xlam加载项和缺less引用的新的VBA项目/新Excel的实例打开加载项

摄制: 启动Excel并打开VBE ALT + F11 。 findTools ,然后单击References 。 向下滚动,直到findMicrosoft Scripting Runtime并勾选它。 将文件保存为Addin.xlam默认的位置应该是这样的: C:\Users\username\AppData\Roaming\Microsoft\AddIns closures这个Excel实例 启动一个新的实例并打开VBE( 现在你应该看到 Addin.xlam 作为第二个可用于工作簿的VBA项目,如果你没有打开 Developer 标签,那么加载项并在名称旁打勾在保存,closures,打开一个新的Excel实例 ) 添加一个新的标准模块 打开References ,你应该看到只有4打勾( 默认 ) 向下滚动并尝试查找Microsoft Scripting Dictionary – 它不在那里!? 所以,这基本上意味着你不能添加引用到新的VBA项目(Book1),因为你的*.xlam已经在使用它 但 你不能交叉使用Scripting库,因为尝试 Dim d as Dictionary 在新创build的Module1失败,因为它不能识别Dictionary对象…. 难道这是一个我从来没有意识到的已知错误,或者我完全忽略了一些东西? 任何解决方法?

当不相关的单元格被删除时,需要停止UDF的重新计算

我注意到,我删除单元格时,我的UDF重新计算。 这会在删除整个列时造成大量延迟,因为UDF会针对所使用的每个单元格进行调用。因此,如果您使用的是1000个UDFS,那么删除列或单元格将调用它1000次。 举个例子,把下面的UDF放到一个模块中,然后用工作表调用一堆= HelloWorld() Function HelloWorld() HelloWorld = "HelloWorld" Debug.Print Now() End Function 然后删除一行。 如果你的经验和我的一样,你会看到每调用一次就会调用一次。 任何人有任何想法,这种行为是否可以停止? 我也有兴趣为什么它应该被调用。 看起来像Excel的依赖树中的一个缺陷给我,但可能有一个很好的理由。 编辑:经过实验,我发现了更多触发UDFS的操作: 对ListObject(即Excel表)跨越大小(但不包括行)的列数进行的任何更改。 即使UDF本身不在相关的ListObject中,或者实际上也不在任何 ListObject中。 在工作表中的任何位置添加新的单元格或列(但不包括行)。 请注意,手动计算模式不是几个方面的选项。 首先,鉴于这是一个应用程序级别的设置,它只是performance出太大的风险,即有人会使用任何一个电子表格的输出,而没有意识到他们处于手动计算模式。 其次,我实际上并没有devise特定的电子表格,而是写了一本关于非开发人员如何使用良好编写的现成代码(如UDF)来做本来不可能的事情的书。 例子包括dynamic连接或分割文本,或Charles Williams在https://fastexcel.wordpress.com/2011/07/22/developing-faster-lookups-part-2-how-to- build-a-faster-vba-lookup / (是的,我给了他们很多警告,通常一个基于本地公式的解决scheme将胜过UDF,但正如你从上面提到的线程中看到的那样,可以performance良好)。 我不知道用户如何使用这些。 在没有编程解决scheme的情况下,看起来我只需在本书中指出,如果用户使用资源密集型UDFS,添加或删除单元格或调整ListObjects的大小时,用户可能会遇到显着的延迟。 即使这些UDF被有效地写入。

Excel VBA将多个单元格设置为相同的值

我想将一个工作表上的每个八分之一的单元格设置为另一个工作表中一个单元格的值。 我在这里写了这个: Sub xx() For i = 5 To 45 Step 8 Set ThisWorkbook.Sheets("Sheet5").Cells(i, 3).Value = ThisWorkbook.Sheets("Sheet7").Cells(13, 31).Value Next i End Sub 如果我尝试运行它,它会给我一个下标超出范围的错误。 Sheet5也被命名为Binomial Sheet ,我必须以不同的方式引用它吗? 还有其他的方法来完成这个吗?

有条件计数过滤的范围

我有一个大约一百万行的工作表。 在一个特定的专栏中,我有从0到50,000数字。 我试图确定,在一个过滤的范围内,有多less个滤波范围内的单元落在一个特定的值内。 我可以轻松地做一个=COUNTIF(L:L, "<5000")来查看有多less行less于5,000,或者=COUNTIFS(L:L,">500",L:L,"<5000")看到在两个数字之间的TOTAL范围内的数字,但我无法弄清楚如何做一个过滤的范围中的任何一个 。 通常使用过滤的数据,我使用=SUBTOTAL函数,但是我看不到任何既定的=SUBTOTAL函数在这个例子中是如何工作的。 有任何想法吗?

确定ActiveCell是否在特定的表中

我想通过VBA在Excel 2013中确定ActiveCell是否不在任何表中,而是在特定的表中。 下面是代码原样,但只检测任何表中的ActiveCell。 注释掉的线是我正在寻找,但显然这是行不通的。 … 设置rng =相交(.EntireRow,ActiveCell.ListObject.DataBodyRange) 'Set rng = Intersect(.EntireRow,ActiveCell.ListObjects(“myTable”).DataBodyRange) 在错误转到0 如果rng没有那么 MsgBox“请在共识input表中select一行的单元格”,vbCritical,“Delete Evaluator” 其他 … 任何build议在这个正确的语法? 谢谢!

在创build文件后直接使用时,打破外部链接不工作

我有一个代码将两个工作表从一个工作簿复制到一个新的工作表。 由于这两个工作表包含图表,其中数据位于工作表本身上,但数据套指向不同的工作表,所以我只复制这些值,以避免外部链接。 不过,我发现还有一个外部链接到我原来的工作簿。 我不知道它在哪里,因为没有公式了。 我想到了名字,并删除了它们,因为有很多名字,甚至在原始文件中都没有。 这也没有帮助。 当使用function区中的菜单时,我可以删除外部。 下面的代码也可以工作,当我在新的工作簿中使用它时打开它并在那里运行它。 Sub BreakLinks() Dim wb As Workbook Set wb = Application.ActiveWorkbook If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then For Each link In wb.LinkSources(xlExcelLinks) wb.BreakLink link, xlLinkTypeExcelLinks Next link End If End Sub 但是,如果我想要将这些代码与复制一起使用,那么这并不能解决问题。 在断开链接之前,我故意保存了它,因为我认为它可能无法做到,但没有帮助。 有人知道为什么它不工作,或可以指向我的解决scheme? 以下是完整的代码: Sub ACTION_Export_Capex() Dim Pfad As String Dim Dateiname As String Dim ws As Worksheet Dim […]

如何使用OpenPyXl清除Excel工作簿中的一系列值

我有一个工作簿,我想使用OpenPyXI清除一系列值。 到目前为止,我有以下几点: # import OpenPyXl module from openpyxl import load_workbook # load workbook wb = load_workbook(filename = 'testing.xlsx') # make variable with worksheet you want to view/modify sheet = wb['AR Cutoff'] # Change value of A3 sheet['A3'] = 'Assigned value' 总之,我正在尝试在OpenPyXL中执行以下VBA的相同操作: Worksheets("Sheet1").Range("A1:G37").Clear 谢谢!

为每个唯一代理创build一个新工作表并将所有数据移动到每个工作表

我有这个问题,我试图解决。 每天我都会收到一份包含我需要发送的数据的报告。 所以为了使它更容易一点,我试图find一个macros,创build一个新的工作表与代理的名称,并移动创build表中的每个代理的数据… 我find了一个可以做很多事情的人。 但是,由于这不是我的专业领域,所以我无法修改它来处理我的请求,甚至可能使其工作。 任何人有任何想法? Const cl& = 2 Const datz& = 1 Dim a As Variant, x As Worksheet, sh As Worksheet Dim rws&, cls&, p&, i&, ri&, j& Dim u(), b As Boolean, y Application.ScreenUpdating = False Sheets("Sheet1").Activate rws = Cells.Find("*", , , , xlByRows, xlPrevious).Row cls = Cells.Find("*", , , , […]

使用VBA如何调用Adobe创buildPDFfunction

Sheets("Key Indicators").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ArchivePath, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ :=False, OpenAfterPublish:=False 目前这是我所拥有的。 我知道如何ExportAsFixedFormat PDF,但我需要知道如何做是使用VBA访问Acrobat下的创buildPDFfunction(如下图所示)。 如果我做ExportAsFixedFormat链接被夷为平地。 Acrobat“创buildPDF”将允许我将Excel转换为包含超链接的PDF。 我该怎么做? 我正在使用Excel 2016和Adobe Pro DC 这些是我的Adobe参考