Tag: vba

CreateObject随机抛出“系统关机已经安排”错误

我Googlesearch了,没有任何东西。 我的工作围绕让我的同事生活更轻松。 目前,他们正在使用十多年前devise的非常笨重的电子表格。 在使用PHP将他们的工具和报告迁移到本地Intranet的过程中,我已经configuration了一个电子表格,根据他们的Application.Username 然后在服务器之间来回地生成一个会话密钥,然后popup Internet Explorer打开它们从工作簿中的下拉列表中select的相关工具 – 这意味着他们的会话和工具纯粹是基于浏览器的。 所有的作品很好,但是随机的,有时,当子打开互联网浏览器触发一个非常奇怪的错误消息出现: – 点击Debug后,会显示以下function,您可以自己查看哪一行以黄色突出显示。 我可以确认在我的任务计划内没有任何任务。 当我结束这个,并再次运行它,机会是运行得很好.. 有时只是这个错误popup。 请帮忙! 预先感谢。

CallByName如果参数是将Variant数组设置为单元格范围,则会出现意外的结果

我一直在使用CallByName在一个特定的应用程序,并得到我无法解释的结果。 它们在以下条件下可通过简单的testing重现 类对象的属性是typesDouble 正在添加的值(Let)来自已设置为多个单元格范围的变体数组 我将不胜感激这种行为的解释。 下面的代码应该重现它(至less在Excel 2007 / Windows 7中) 工作表单元格A1包含5.8 A2包含1.3 ,列A中的其余单元格为空白。 类模块 (class1) Private pMyData Public Property Get MyData() MyData = pMyData End Property Public Property Let MyData(Value) pMyData = Value End Property 常规模块 Option Explicit Sub foo() Dim class1 As class1 Dim V(1 To 2, 1 To 1) As Variant V(1, 1) […]

Excel VBA到C#

我将Excel VBA一些代码转换为C#并遇到这个问题。 我不确定这个代码在C#中的等价物。 Intellisence不是很有帮助:( Selection.ShapeRange.Adjustments.Item(1) = 90 我设法尽可能在C# Adjustment ,但没有Item属性。

如何使用Excel VBA查找/提取属性大小为“+ 1”的HTML“font”元素

我想从url中提取美国专利标题 http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=6293874.PN.&OS=PN/6293874&RS = PN / 6293874 (更新:正如所指出的那样,专利标题没有被标记为“标题”,然而它一直出现在网页上的“摘要”之上)。在大多数情况下,它是在“身体”的第七个子元素中,或文件中的第三个“字体”元素,但偶尔会在页面顶部注明“**请查看图像:(更正证书)**”或“(复审证书)”两种方法混淆通过在标题之前插入一个额外的“body”子元素和三个额外的“font”元素来提取。 然而,标题看起来一直是具有“+1”值的属性“size”的第一个“font”元素。 不幸的是,其他元素的大小等于“ – 1”,包括前面提到的并不总是存在的元素,所以必须具体指定这个属性和值。 我已经search,但无法弄清楚如何获取元素的属性和价值。 这是我的代码: Function Test_UpdateTitle(url As String) Dim title As String Dim pageSource As String Dim xml_obj As XMLHTTP60 Set xml_obj = CreateObject("MSXML2.XMLHTTP") xml_obj.Open "GET", url, False xml_obj.send pageSource = xml_obj.responseText Set xml_obj = Nothing Dim html_doc As HTMLDocument Set html_doc = CreateObject("HTMLFile") html_doc.body.innerHTML = […]

表根据范围干扰VBA范围variables

Excel文件包含部署在表(VBA listobjects)中的VBA编码的用户定义函数(UDF)。 现在,出于逃避我的原因,如果UDF模块包含声明在任何子函数或函数范围之外的Rangevariables,当文件打开时,会出现非常严重的警告:“自动错误 – 灾难性故障”。 “灾难性”似乎有些夸张,因为在警告被驳回之后,文件似乎正常工作。 但是我仍然想明白这个问题是什么。 我已经设法复制这个问题与MVC的例子如下。 我在Windows 10上运行Excel 2016(更新)。 有两个表(即VBA列表对象): 表1列出了“项目”, 表2列出了“项目function”(两个表格都是通过select数据并单击“ Insert选项卡上的表格生成的)。 表2在Item_Name字段中有一个名为ITEM_NAME()的UDF,它根据项目ID返回项目名称,请参阅截图: 函数ITEM_NAME()实际上是常规工作表函数INDEX和MATCH的一个包装,如下面的代码所示: Option Explicit Dim mrngItemNumber As Range Dim mrngItemName As Range Public Function ITEM_NAME(varItemNumber As Variant) As String ' Returns Item Name as a function of Item Number. Set mrngItemNumber = Sheets(1).Range("A4:A6") Set mrngItemName = Sheets(1).Range("B4:B6") ITEM_NAME = Application.WorksheetFunction.Index(mrngItemName, […]

Excel跟踪CSV文件中的逗号错误

我有一个XLS文件在Excel 2003中创build一个带有macros的CSV文件,我有40 +列,最后3个是可选的,因此在XLS上有很多空的值,当我运行导出子程序,它不会把所有行上的尾随逗号,为什么? 因为: http : //support.microsoft.com/kb/77295 -.- 在Microsoft Office Excel中,如果以文本或CSV(逗号分隔值)格式保存文件,Excel将在工作表的每列之间放置制表符或逗号。 但是,某些文本文件可能以16行块的不同数量的制表符或逗号保存。 这里是他们build议的工作: 要确保Excel保存所有空列的制表符或逗号分隔符,请确保文件中的最后一列在整个文件中至less每隔16行包含一些数据。 如果行块不包含数据,则将每16行中的空格或其他字符添加到最后一列中的单元格,或者重新排列工作表中的列,以便工作表上的最后一列始终包含信息。 – 。 – 方式去微软! -.- 好了,所以我的主要问题是,生成的文件将被另一个程序parsing出我的范围,这需要特定的格式,因为它现在我每隔16行添加一个空白,如果该字段为空,这似乎这样做但数据处理部门正在抱怨这个空白…你能相信他们吗? 无论如何,我也试图添加一个标志,并删除它与查找function,但ofc当你保存文件它将带走分隔符… 感谢您阅读我的历史; p 有什么build议么 ? 编辑:不幸的是,使用Excel是必须的,数据是由不同的用户通过Excel表格手动input,VBA代码更像模板生成等。这是我唯一的问题,这是不可行的改变整个过程。

Excel vba:input范围和单元格

在vba(excel)中,我有点困惑于单元格和范围。 从逻辑上讲,我可以把一个单元看作size = 1的范围。 我认为从一个单元格中划出一个范围是很容易的。 如果我在这里阅读EntireRow属性的api,它会在范围内运行。 但是,下面的代码工作,指示循环内的“cell”variables是一个范围 Set import = Sheets("import") Set spRange = import.Range("A2") Set spRange = import.Range("A2:" & spRange.End(xlDown).Address) For Each cell In spRange dict.Add cell.Offset(0, 2).Text, cell.EntireRow Next cell 同时,下面的代码在调用removecell函数时返回一个指示types不匹配的错误。 函数定义中应该是什么types的targetCell ? Set spRange = mySheet.Range("b2", mySheet.Range("b2").End(xlDown)) For Each cell In spRange val = removecell (cell) Next cell Public Function removecell(targCell As […]

将Excel中的2个列表与VBA正则expression式进行比较

我想用它们来比较Excel中的两个列表(列)以查找匹配项。 由于这是一个非常复杂的操作,我以前在Excel中使用了几个不同的函数(非VBA),但是事实certificate它最多是尴尬的,所以我想尝试一个全合一的VBA解决scheme,如果可能的话。 第一列有不规则的名称(例如引用的昵称,后缀如“jr”或“sr”,括号中的“首选”版本)。 另外,当中间名字出现时,它们可能是名字或者是名字。 第一列的顺序是: <first name or initial> <space> <any parenthetical 'preferred' names – if they exist> <space> <middle name or initial – if it exists> <space> <quoted nickname or initial – if it exists> <space> <last name> <comma – if necessary><space – if necessary><suffix – if it exists> 第二栏的顺序是: `<lastname><space><suffix>,<firstname><space><middle name, if it […]

sortingCombobox VBA

我一直在想如何sortingcombobox中的值。 当我初始化表单时,我将项目添加到combobox中,因为值的数量在表单上不断增加。 我使用下一个代码来添加项目: With ComboBox1 lastcell = ThisWorkbook.Sheets("1").Range("F1000000").End(xlUp).Row + 1 For i = 2 To lastcell .AddItem ThisWorkbook.Sheets("1").Cells(i, 6) Next i End With 我想复制我将添加到另一个工作表的ComoBox的值,并在那里sorting他们在新工作表,它工作正常,但它似乎不是一个明智的select,这意味着我创build另一个工作表,然后复制值并对其进行sorting,而不是直接对它们进行sorting。 我的问题是,任何人都知道如何直接从原始表单中进行操作? 所以,我不知道任何API,只有VBA代码。 我试图检查MSDN,但我不知道如何使其工作。 谢谢,如果需要更多的信息,请让我知道。 PS:我不能直接从原始表中sorting,因为这张表必须是静态订单

比较两个不同Excel表格和工作簿中的列,然后将匹配值发布到另一列中

我在试图弄清楚这个macros时遇到了很多麻烦,所以现在我在一个工作簿中使用了两张表格。 我想使用两个不同的工作簿,但这不像问题那么重要。 要解释,Sheet1列E是ID号,在Sheet2列A是ID号,现在如果Sheet1 E中的任何值匹配Sheet2列A中的值,我需要macros从Sheet 2列D中复制相应的单元格所以基本上如果E5(从表1)匹配Sheet2中的A1,我需要macros将Sheet2的D1输出到Sheet1的F5。 如果Sheet1列E与Sheet 2列A中的值不匹配,也可以删除Sheet1列F的值。 我有一些代码,但它只是从Sheet2的列D粘贴值如果Sheet1列E的值匹配Sheet2列A的值。问题是当从Sheet2粘贴的值粘贴在Sheet1的列F中,并且值不是与在Sheet2中匹配的正确值匹配。 他们只是愚蠢的。 所以如果Sheet1列E是这样的 Sheet1 Column E Sheet1 F 1317 relays_120x120.jpg 1319 Control%20boards_120x120 1320 Control%20boards_120x120 Sheet2 Column A Sheet2 column D 1317 relays_120x120 1318 /relays_120x120 1319 ebay/SingleRunOval 但实际上,我需要它们都是相等的,如果Sheet1列E的值不是Sheet2列中的值,那么不要在Sheet1列中发布链接F将其留空。 这是我的代码 Sub FindMatches() Dim oldRow As Integer Dim newRow As Integer Dim i As Integer i = 1 For oldRow = […]