Tag: vba

如何以编程方式将上下文引用添加到场景中

我目前正在修改import商脚本简单的VBA Excel到EAimport商v4从bellekens。 我已成功导入包含场景和场景步骤的用例。 我正在寻找一种方式来以编程方式添加上下文引用。 我目前将它们手动添加到用例“属性”>“规则”>“scheme”>“上下文引用”中。 有没有办法从API添加上下文引用?

循环嵌套数组与arrays更快

我有一个工作表上的数据数组。 我需要循环访问数组,根据特定条件评估每行,然后采用条件匹配的行并将其复制到另一个工作表中。 我写了下面的代码来完成这个过程。 但是,循环需要很长时间。 大约需要5分钟的时间。 我需要它在不到30秒的时间内运行。 我在SO上读取以下内容: 在VBA(excel)中循环行的最有效/最快的方法是什么? 这导致我创build数组。 我也试图保持代码简单。 我closuresscreenupdating和enableevents。 我能做些什么来使这个过程更快? 感谢您的帮助。 Sub tester() Dim vData() As Variant Dim R As Long Dim C As Long Dim LastRow1 As Long Dim rng1 As Range, rng2 As Range Set sh3 = Sheets("ABC") Set sh5 = Sheets("XYZ") Application.ScreenUpdating = False Application.EnableEvents = False LastRow1 = sh3.Cells(Rows.Count, […]

如何在VBA中使用唯一标识符引用Excel链接

如何使用唯一标识符在VBA中引用外部工作簿,该文件在打开文件时不会更改? 当包含完整的文件path并且没有打开同名文件时,它工作正常。 但是,打开文件时,文件path的完整格式不起作用,仅文件名不起作用。 我想创build一个更新Sub来更新所有的引用,如果电子表格是打开的(参考下面的第二点),这会自行消失。 这些是我觉得应该有可能的一些原因: 似乎在手动链接更新菜单中只有文件名参考; 也不能打开两个具有相同名称的工作簿,因此,如果您打开源链接,则单元格引用会从文件path更改为文件名(这是导致问题的原因。 这是我目前拥有的代码updCellRef是一个单元格引用的文件path(我只想使用文件名): Sub updateValues(updCellRef) updFilePath = ActiveWorkbook.Sheets("INPUTS").Range(updCellRef).Value ActiveWorkbook.updateLink Name:=updFilePath, Type:=xlExcelLinks End Sub 为了澄清这个问题,当我使用上面的函数来更新值时出现,但是当源电子表格被打开的时候,它被它的文件名引用。 当它closures时,它被完整的文件path引用。 我在VBA v7.0中使用Excel Professional 2010 v14 注意:我不想使用包括Power Query在内的任何其他软件,因为它不能在没有pipe理员权限的情况下安装。

在VBA中使用Base64插入图像到工作表中?

我试图插入一个图像到VBA使用Base64的工作表,但我找不到任何地方如何正确地做到这一点的任何示例。 我有一个图像的string设置,如下所示: vLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZoAAABfCAY" 我只想做以下事情,而不是寻找一个图像文件存储在VBA中的图像。 Sheets("Sheet1").Pictures.Insert (Application.ActiveWorkbook.Path & "\vLogo.png") 我甚至看过像这样做: ' Write the image to file Dim myFile As String myFile = Application.ActiveWorkbook.Path & "\temp.png" Open myFile For Output As #1 Write #1, vLogo Close #1 ' Insert the image Sheets("Sheet1").Pictures.Insert (Application.ActiveWorkbook.Path & "\temp.png") ' Delete the temp file Kill Application.ActiveWorkbook.Path & "\temp.png" 但我不知道如何编写base64编码的图像文件。

在没有Excel VBA中select的情况下设置缩放

是否有可能根据屏幕分辨率设置缩放级别没有Select ? 我已经按照代码: Sheets(1).Range("A1:AC1").Select ActiveWindow.Zoom = True 取自https://stackoverflow.com/a/19439177/1903793 所需的代码将如下所示: Range("A1:AC1").Width.Zoom=True 更新。 为什么我要避免select? 我的表具有基于用户设置的隐藏列。 因此,范围A1:AC1中的某些列是隐藏的。 我不能select单个列,因为这个特定的列可能被隐藏。 select触发事件。 当然,我可以禁用事件,但禁用事件有一些我想避免的副作用。

使用excel VBA在Outlook中添加包含图像的签名

我有代码,除了不添加图像签名。 这里的图片是指公司的标志和社交networking图标。 此代码是用Excel VBA编写的,目标是在Outlook电子邮件中复制粘贴范围作为图片。 Dim Rng As Range Dim outlookApp As Object Dim outMail As Object Dim wordDoc As Word.Document Dim LastRow As Long Dim CcAddress As String Dim ToAddress As String Dim i As Long Dim EndRow As String Dim Signature As String '// Added Microsoft word reference Sub Excel_Image_Paste_Testing() On Error GoTo Err_Desc […]

如何将包含多个值(逗号分隔)的单元格拆分成单独的行?

我正在处理一个数据样本,我想根据逗号分隔符将其分成几行。 Excel中的数据表在拆分之前看起来像这样: 我想开发VBA代码来拆分C列(“公司联系点”)中的值,并为每个“公司联系点”创build单独的行。 到目前为止,我已经设法将C列中的值拆分成不同的行。 然而,我还没有设法在列D(关系长度)和E(关系强度)中分割值,以便用逗号分隔的每个值对应于列C中其各自的接触。 你会在下面find我借来分割我的单元的代码样本。 这个代码的限制是它没有拆分我的表中的其他列,只是一个。 我怎样才能让这段代码工作分裂在其他列的值? Sub Splt() Dim LR As Long, i As Long Dim X As Variant Application.ScreenUpdating = False LR = Range("A" & Rows.Count).End(xlUp).Row Columns("A").Insert For i = LR To 1 Step -1 With Range("B" & i) If InStr(.Value, ",") = 0 Then .Offset(, -1).Value = .Value Else X = […]

使用非字母数字字符sorting的范围的意外顺序

当我使用Excel或某些VBA( Range.Sort )对列表进行sorting时,出现意外的结果。 当文本被sorting时,连字符似乎被忽略: 用Excelsorting的列表 align-content align-items alignment-baseline << Should be after "align-self" align-self animation-delay 与自由办公室sorting相同的列表 align-content align-items align-self alignment-baseline animation-delay 该文档不提供有关此行为的任何信息: https://support.office.com/en-gb/article/Sort-data-in-a-range-or-table-62d0b95d-2a90-4610-a6ae-2e545c4a4654?ui=en-US&rs=en-GB&ad= GB #__ toc246836970 https://msdn.microsoft.com/en-us/library/office/ff840646.aspx 那么这个行为背后有什么规则? 有没有一种方法可以像人们所做的那样(如自由职业办公室那样)对列表进行sorting?

VBA从一个工作簿复制并粘贴到另一个

工作:将范围从一个工作簿复制到另一个(另一个工作簿存在,需要打开) 复制范围: `Worksheets("paste").Range("A2:BD500").SpecialCells(xlCellTypeVisible).Copy` 打开新文件: Workbooks.Open Filename:="C:\Test\test.xlsx", WriteResPassword:="WriteFile" 激活工作表并粘贴@RANGE A6 Windows("test.xlsx").Activate Selection.Range("A6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 问题:它不粘贴在A6! 它在任何细胞!

如何在VBA中运行一个string作为命令

我有下面这个简单的VBA代码,我不知道为什么不工作。 Sub Run() test = "MsgBox" & """" & "Job Done!" & """" Application.Run test End Sub 我想要做的就是把VBA命令放到一个variables中作为文本,并作为命令运行。 在这种情况下,我想像MsgBox "Job Done!"一样运行 并只打印: 任务完成!