Tag: vba

使用Python的comtypes库将查询表添加到Excel的问题

我试图在Excel电子表格中使用Python的comtypes库创build一个QueryTable,但得到一个相当无误的错误… 在vba中(在工作簿中的模块中),以下代码正常工作: Sub CreateQuery() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim ws As Worksheet Dim qt As QueryTable Set ws = ActiveWorkbook.Sheets(1) Set con = New ADODB.Connection con.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\to\Db.mdb;") Set rs = New ADODB.Recordset rs.Open "Select * from [tbl Base Data];", con Set qt = ws.QueryTables.Add(rs, ws.Range("A1")) qt.Refresh End Sub 但是下面的Python代码: import […]

这是RegEx是否与Excel公式中的任何单元格引用匹配?

我一直在尝试创build一个正则expression式模式,它匹配任何Excel公式中的任何引用,包括绝对引用,相对引用和外部引用。 我需要返回整个引用,包括工作表和工作簿名称。 我一直无法find有关Excel A1-notation的详尽文档,但是通过大量testing,我确定了以下内容: 公式前面加上等号“=” 公式中的string用双引号括起来,在查找真正的引用之前需要删除,否则=A1&"A1"会打破正则expression式 工作表名称最多可以有31个字符,不包括\ /? * []: 外部引用中的工作表名称必须成功使用bang =Sheet1!A1 外部引用中的工作簿名称必须用方括号括起来=[Book1.xlsx]Sheet1!A1 工作簿path(如果引用是closures工作簿中的范围,则Excel将添加)始终用单引号括起来,并放在工作簿名称'C:\[Book1.xlsx]Sheet1'!A1的括号左侧'C:\[Book1.xlsx]Sheet1'!A1 某些字符(例如,非中断空格)导致Excel将工作簿和工作表名称括在单引号中的外部引用中, 但是我不知道哪些字符 ='[Book 1.xlsx]Sheet 1'!A1 即使启用R1C1-notation, Range.Formula仍然以A1表示法返回引用。 Range.FormulaR1C1返回R1C1表示法中的引用。 3D参考样式允许一个工作簿上的一系列工作表名称=SUM([Book5]Sheet1:Sheet3!A1) 命名范围可以用公式指定: 名称的第一个字符必须是字母,下划线字符(_)或反斜杠(\)。 名称中剩余的字符可以是字母,数字,句点和下划线字符。 您不能将大写和小写字符“C”,“c”,“R”或“r”用作定义名称,因为它们全部用作select当前选定单元格的行或列的简写forms在“名称”或“转到”文本框中input它们。 名称不能与单元格引用相同,例如Z $ 100或R1C1。 空间不允许作为名字的一部分。 名称最长可以有255个字符。 名称可以包含大写和小写字母。 Excel不区分名称中的大写和小写字符。 这是我想出来的包装在VBA程序中进行testing。 我更新了代码以处理名称: Sub ReturnFormulaReferences() Dim objRegExp As New VBScript_RegExp_55.RegExp Dim objCell As Range Dim objStringMatches As Object Dim objReferenceMatches As Object […]

使用macros在excel文件的所有表格中searchstring

我写了一个macros,它将在excel文件的所有表格中search一个string。 这个macros将激活第一个表格以及包含searchstring的表格中的单元格。 如果没有find,它会显示一条消息。 这个macros运行良好。 我想扩展这个function来覆盖包含这个string而不是第一个的所有表单。 所以我修改了这个macros,但没有按预期工作。 我已经给出了下面的代码,并在它显示错误的地方发表评论。 Dim sheetCount As Integer Dim datatoFind Sub Button1_Click() Find_Data 结束小组 Private Sub Find_Data() Dim counter As Integer Dim currentSheet As Integer Dim notFound As Boolean Dim yesNo As String notFound = True 在错误恢复下一步 currentSheet = ActiveSheet.Index datatoFind = InputBox(“请input要search的值”) 如果datatoFind =“”然后退出子 sheetCount = ActiveWorkbook.Sheets.Count 如果IsError(CDbl(datatoFind))= False那么datatoFind = CDbl(datatoFind) […]

将对象存储在Excel工作表中?

有没有人知道一种方法来存储工作表对象本身内的对象? 或者我们必须序列化并将其保存为自定义属性? 我想存储的数据并不是真的想坐在一张纸上。

以编程方式打开文件时Excel VBAdate格式/值发生更改

我有一个问题以编程方式打开.csv文件。 该文件是日常数据的时间序列,每个date都有几个数据点。 当我手动打开文件时,date正确打开,date格式为dd/mm/yyyy 。 但是,当我以编程方式打开文件时,直到每月12号的date以mm/dd/yyyy打开,尽pipe格式仍为dd/mm/yyyy (例如1983年7月1日(1983年1月7日) ,将于1983年1月7日(1983年1月7日)开始 – 这不仅仅是一个格式问题,与这些date相关的Juliandate(1901年1月1日以来的天数)也是变化的),以及每个月的第十二天都是正确的打开,尽pipe是文本而不是date。 以文本formsinput的数据不是问题,但打开文件后更改的date是有问题的。 我可以尝试导入整个.csv文件作为逗号分隔的文本,而不是实际打开文件,但是,如果我可以停止更改打开文件时的date会更容易和更快。 过去有没有人有类似的问题? 任何意见,将不胜感激。 干杯,本。 Flder = InputBox("Copy and Paste Folder path here:") Set FSO = CreateObject("Scripting.FileSystemObject") Set SourcePath = FSO.GetFolder(Flder) For Each File In SourcePath.Files Workbooks.Open (File) FlNm = File.Name StrtCol = Workbooks(FlNm).Worksheets(1).Range(Cells(4, 1), Cells(4, 30)).Find ("Mean").Column Workbooks(FlNm).Worksheets(1).Range(Cells(1, 1), Cells(60000, 1)).Copy (Workbooks("Find Water Years V2.xls").Worksheets(1).Range("A3")) […]

Excel VBA“内存不足”debugging技术

我正在debugging其他几个*问题中提到的问题,并在debugging过程中注意到一个奇怪的行为。 行为:粘贴复杂公式时遇到“内存不足”错误。 在迭代的20,000行中,只有大约一半在错误之前粘贴公式。 几乎所有的代码注释掉了,错误消失了。 为了发现导致它的代码的特定部分,增量地取消注释代码。 最后取消注释所有的代码,并停止体验错误! 这意味着完全相同的代码在同一个Excel实例中工作正常,并且修复它只需要在返回到原始版本之前运行各种较轻版本的代码。 什么可能导致这个?

运行时错误1004不能复制工作表从源到目标

真的这很好奇。 让我试着解释发生了什么事情。 我写了一个叫做excelfile的macros的macros Set excel = CreateObject("excel.application") excel.Visible = True excel.workbooks.Open FileName:=tablePath IDcolumn = excel.Application.Run("main", generatedExelPath) 从单词macros中调用的“main”函数是“简单地”通过从被调用的excel文件复制特定数据来生成一个新的excel文件。 所以我们得到了1个单词和2个excel文档。 一些excel1必须复制到excel2。 因此我使用: For i = 0 To UBound(copySheets) Windows(srcWinName).Activate Sheets(copySheets(i)).Activate Set AcSh = ActiveSheet Windows(destWinName).Activate If copySheets(i) = "config" Then AcSh.Copy Before:=Sheets(1) Else AcSh.Copy After:=ActiveSheet End If Next i copySheets包含需要复制的工作表。 但是复制命令会引发错误。 就像“无法从源文件复制到目标文件,导致目标文件的行数和列数less于源文件” Atm excel1是一个xlsm因为它是一个xls文件,这个错误没有发生。 我想知道这个增加了excel2的行是否是prob Workbooks.Add Template:="Workbook" […]

Excel:固定button位置

在Excel工作表上需要一些帮助附加Excel / VBAbutton。 我需要它保持在屏幕上的相同位置,无论我如何滚动或缩放。 最好,我需要在屏幕的左下angular或右下angular。 我曾尝试添加一个button。 然后,我右键单击button。 点击格式控制 – >属性 – >select不移动或使用单元格大小。 我错过了什么使这不工作? 谢谢!

一个.xlsx多个链接的工作表如何分解成单独的工作表文件,以后如何重新组合?

一个非IT相关的类已经被分配了一个组项目,他们所做的工作将被存储在一个.xlsx文件中。 成员们决定协同编辑这个文件的最好方法是把它分成组成单,把每个* .xlsx表单上传到一个SVN仓库,并使用锁和一个.txt文件来组织表单/成员的责任。 该小组已经完成了所述文件与VB脚本分裂(礼貌这个美妙的网站),如下所示: Sub SaveSheets() Dim strPath As String Dim ws As Worksheet Application.ScreenUpdating = False strPath = ActiveWorkbook.Path & "\" For Each ws In ThisWorkbook.Sheets ws.Copy 'Use this line if you want to break any links: BreakLinks Workbooks(Workbooks.Count) Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx" Next Application.ScreenUpdating = True End Sub Sub BreakLinks(wb […]

EXCEL VBA – 基于单元格区域和string创builddynamic下拉菜单

好的,所以我现在有一个从单独的工作表范围填充的下拉菜单。 我希望能够通过在每个值文本中添加具有来自另一个单元格的文本值的值来减less下拉列表中的值。 例如:单元格A1表示“表格”单元格A2是从范围内拉取值的下拉列表范围包括“表格”,“大表格”,“凳子” 目前下拉菜单会带来所有的值。 在这种情况下,我希望它能带来“桌子”和“大桌子”,因为他们都有“桌子”。 我的文件的一个例子可以在这里findhttp://www.filedropper.com/example_1 请帮忙..我正在把我的头发撕掉! 谢谢Mike