Tag: vba

检测对象是否与客户端断开连接

我在自动化Excel文件时遇到问题。 Excel中的VBA脚本首先打开一个Word应用程序和Word文档: Dim wordApp As Object Set wordApp = CreateObject("Word.Application") vPath = Application.ActiveWorkbook.Path Set wordDoc = wordApp.Documents.Open(vPath & "\test.doc") 然后我调用Word文档中的一个子例程,从Excel文件中传递一些数据: Call wordApp.Run("StartWithData", variable1, variable2) 如果Excel检测到在该子例程中发生错误,我将从Excel中closuresWord文档和Word应用程序,并在标签中调用Err1 : On Error Goto Err1 'all the code from above Exit Sub Err1: wordDoc.Close wdCloseWithoutSaving wordApp.Quit SaveChanges:=wdDoNotSaveChanges Set wordDoc = Nothing Set wordApp = Nothing 在正常情况下,这样做是完美的。 但是,如果在执行Err1标签(如用户手动closures文档)之前closuresWord文档或应用程序,则会出现以下错误: 运行时错误“-2147417848(80010108)”: 自动化错误被调用的对象与客户端断开连接。 这是非常有意义的,因为wordApp和/或wordDocvariables仍然引用Application和Document对象,并且这些对象不再存在(但也不被认为是Nothing […]

用于VBA Userform文件select的省略号文本框

我试图为我一直在努力的广泛的VBA程序创build一个pathselect用户界面,但我似乎无法得到我想要的省略号文本框。 这是一个非常常见的function,特别是在选项表中。 这是我想从VBA选项面板直接得到的一个例子: 我会喜欢find一种方法来获取用户窗体中的相同function。 我迄今为止唯一find的解决scheme是使用combobox,并启用省略号箭头选项。 但是,似乎没有一种明显的方法来使用combobox箭头的激活来运行对话框,也似乎没有办法使其看起来不像combobox。 最后一招,我在文本框下面使用了一个button,但是我真的更喜欢这样做的不那么笨重的方式。 任何解决scheme将不胜感激。

用VBA内存数组replace工作表数组公式

我的工作表需要BG2中的以下数组公式。 =INDEX('Client'!O$2:O$347473, MATCH(1, (('Client_Cost'!D$2:D$347473='Client'!BC2)* ('Client_Cost'!E$2:E$347473='Client'!BE2)), 0)) 这提供了两列匹配(Client_Cost!D:D到Client!BC2和Client_Cost!E:E到Client!BE2),并从Client!O:O返回相应的值。 大量的行使得数组公式非常计算密集。 我可以处理几百行(500行约90秒),但是我需要一直到客户端BG347473的结果,我希望在今年的某个时候。 我已经尝试使用Application Evaluate从数组公式返回结果数组到变体数组,然后返回结果数组到集体工作表,但这不是我期待的改进。 寻找替代品。

满足将行复制到sheet2中的值

在Excel VBA中,我是完全的新手 如果满足某些条件,我有一个任务将sheet1中的行复制到2中。 在Sheet1中,列JY中的值以列MV结尾我希望如果您可以帮助我写一个macros来将所有行复制到sheet2,其中包含小于1的值。有可能一行可以有多个<1个值。 例如:第16行可以在jY 0.9以下,MA 0.5以下 最好的结果是在表2中只能看到列A,B,C,D和列值小于1的列,但是如果不可能,那么复制整行就没有问题。 到目前为止,我已经find了一个正在复制正好是1的值的代码 这里是我想改变的代码: Sub SearchForNumber1() Dim LSearchRow As Integer Dim LCopyToRow As Integer On Error GoTo Err_Execute 'Start search in row 1 LSearchRow = 1 'Start copying data to row 2 in Sheet2 (row counter variable) LCopyToRow = 2 While Len(Range("A" & CStr(LSearchRow)).Value) > 0 'If value in […]

运行macros时,variables数组“损坏” – Excel崩溃

我有一个macros(代码附加),将数据从两张表写入两个变种arrays。 然后使用嵌套循环在第一张表格中的第二张表格中查找所有可能的匹配。 当第一场比赛被发现一个变种arrays似乎被抹去,我得到一个'下标超出范围'。 这可能发生在数据被比较的时候,或者当我随后尝试从数组传递数据到另一个过程时,由于匹配被发现。 当我在Locals窗口中查看时,这个数组可以从显示存储值变为在每个索引中有错误消息“应用程序定义的或对象定义的错误”,或者根本没有索引,或者具有高负数的索引。 无论如何,如果我在代码处于debugging模式时尝试进一步调查,Excel崩溃(“Excel遇到问题,需要closures”)。 我已经按照这个链接的build议: http : //exceleratorbi.com.au/excel-keeps-crashing-check-your-vba-code/ …但无济于事。 我已经遍历代码,并可以跟踪第一次被testing的数据值是否匹配。 每次运行时,都会发生相同的索引(相同的i和j值)。 我在我们的办公室networking上使用Excel 2013。 任何人都可以告诉我什么可能导致这个或我可以执行的任何testing来帮助缩小原因? 难道是由于内存使用? arrays出来的时候大概是15000 x 11和4000 x 6,而小的是被破坏/失败的。 Sub classTest() Dim i As Long, j As Long Dim CK_Array() As Variant, RL_Array() As Variant Dim wb As Workbook Dim CK_Data As Worksheet, RL_Data As Worksheet Set wb = ThisWorkbook Set CK_Data […]

Workbook.Protect与切换保护的错误

当我在VBA中调用Thisworkbook.Protect时,工作簿的保护实际上是从当前工作簿的保护状态切换而不是保护工作簿。 此工作簿.Unprotect虽然没有这样做。 任何人都知道为什么这样或怎样解决它?

用一个string值replace空白/空单元格

希望有人能帮忙。 我需要使用特定的string填充单元格范围内的任何空白/空单元格。 我也不知道最后一行会在这个范围内,所以我正在寻找第一个,我知道这行代码工作,因为我用它在脚本内的另一个function。 以下是我正在使用的代码: LastRow = Cells(Rows.Count, 2).End(xlUp).Row For Each r In Range("AS22:AU" & LastRow) If r.Value2 = vbNullString Then r.Value2 = "Greens" End If Next 我似乎没有得到任何编译错误,当我运行的代码,它只是不工作,我仍然有相同的空白/空单元格。 任何人都可以阐明我做错了什么?

如何在Excel中查找单元格的所有依赖项(还有条件格式和数据validation)

我需要清理一个非常复杂的Excel文件。 为了能够擦除单元格,我需要确保它不在工作簿中的某处使用。 我知道可以通过进入公式审计>跟踪依赖关系来查找是否在另一个单元格公式中使用单元格,但是如果在以下上下文中使用该单元格,则不起作用: 在另一个单元格的数据validation中用于下拉列表的范围的一部分 在另一个单元格的条件格式的公式部分。 这两个Excelfunction在工作簿中使用很多。 你知道一个方法来发现这些依赖关系吗?

如何在Excel中运行网站表单而不必使用Sendkeys?

我正在尝试使用Excel VBA在网站上填写表格。 我创build了一个InternetExplorer.Application,导航到页面,并查找了一堆数据,使用If UserForm1.TC2.Value = True Then或类似PostCode = objIE.document.getElementsByName("ProjectFile-ProposalAddress-PostCode")(0).Value等。 之后,我导航到一个新的页面,并使用我以前的数据来填写。 这是我遇到麻烦的地方。 我想勾选一个checkbox“新许可”,其代码是; <form id="document-form"> <div class="generate-form form-horizontal"> <div class="form-group"><label class="col-sm-3 control-label"><span>New Permit</span></label><div class="input col-sm-7"> <div class="checkbox"> <input type="checkbox" data-bind="checked: NewPermit" /> </div></div></div><div class="form-group"><label class="col-sm-3 control-label"><span>Staged Permit</span></label><div class="input col-sm-7"> <div class="checkbox"> <input type="checkbox" data-bind="checked: StagedPermit" /> </div> 其中没有名称可以locking。 我不是一个HTML专家,但还有一些代码是指这个checkbox(我认为) var model = { "NewPermit": null, "StagedPermit": […]

如何从Excel中的if语句中提取'logical_test'?

我正在制定一个excel电子表格进行计算,我需要能够显示公式与决定,大部分是非常简单的,但是当我在excel单元格中find'if'公式时,我不想显示value_if_true和value_if_false …只是logical_test值。 例: 公式为: =if(and(5<=A1, A1<=10),"Pass", "Fail"); 结果将是: "and(5<=A1, A1<=10)" 我需要能够处理复杂的逻辑testing,这些testing可能包含嵌套的if语句,所以只是在逗号分割将无法可靠地工作。 同样,value_if_true和value_if_false语句也可以包含if语句。 有任何想法吗?