Tag: vbscript

如何在Microsoft脚本控制中实现事件?

我在MSScriptControl上读过的所有文档都说它可以响应添加到它的对象的事件。 脚本控件允许您编写在发生对象事件时自动触发的脚本。 https://msdn.microsoft.com/en-us/library/ms974586.aspx ScriptControl将能够吸收使用AddObject方法添加的对象生成的事件。 http://flylib.com/books/en/1.492.1.154/1/ 但是我没有成功这么做。 我认为这意味着当添加的对象引发事件时,ScriptControl中的代码将会触发。 我无法得到任何工作。 寻求将任何对象添加到ScriptControl的示例代码,以及处理该控件触发的事件。 不要在意对象是自定义类,窗体,控件还是内置Excel对象(如Worksheet)。 在Win Server 2008 64bit上运行Office 2010 32位。 打开到替代方法,如WSH,但Tushar Mehta没有在这里成功http://dailydoseofexposit.com/archives/2009/08/19/using-vbscript-to-monitor-office-eventsor-not/ 我已经成功地将Excel应用程序对象添加到ScriptControl,并在Excel应用程序对象上执行代码: 这工作没问题: Function TestProc() Dim oScriptCtl As New MSScriptControl.ScriptControl With oScriptCtl ' init .Language = "VBScript" .AllowUI = True ' add Excel application object .AddObject "app", Application, True ' add procedure Dim sCode As String sCode = […]

使用VBScript卸载Excel加载项

我正在尝试创build一个MSI安装程序,在Microsoft Excel中安装一个加载项(.xla)(2007)。 安装它很好。 我使用运行这个VBScript文件的“自定义操作”: Dim SourceDir Dim objExcel Dim objAddin SourceDir = Session.Property("CustomActionData") Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Add Set objAddin = objExcel.AddIns.Add(SourceDir & "addin.xla", True) objAddin.Installed = True objExcel.Quit Set objExcel = Nothing 我使用CustomActionData属性将插件的位置传递给脚本。 加载项被复制到“程序文件”内的一个文件夹中,在那里它将一直保留,直到它被卸载。 这由安装程序自己处理。 问题是当我使用卸载脚本: Dim objExcel Dim addin On Error Resume Next Set objExcel = CreateObject("Excel.Application") For i = 0 To objExcel.Addins.Count […]

生成多个excel

我试过这个代码来创build一个Excel表。 Set ExcelObject = CreateObject("Excel.Application") ExcelObject.visible = True ExcelObject.WorkBooks.Add ExcelObject.Sheets(1).Cells(1,1).value = "My first excel" 但是我想要生成一个以上的Excel所以我试过这个代码 – Set ExcelObject = CreateObject("Excel.Application") For x= 1 to 5 ExcelObject(x).visible = True ExcelObject(x).WorkBooks.Add 'Adds a workbook to an excel object x=x+1 ExcelObject.Sheets(1).Cells(1,1).value = "My first excel" 但它不工作,请帮忙!

在用户操作时向程序追加程序

说,我有一个程序,根据select的变化,改变一个单元格的随机颜色。 我知道我可以在工作表SelectionChange事件的过程中进行编码。 我想我问,因为在JavaScript我们可以使用addEventListeners ,我们可以在Excel VBA中做类似的事情。 我想知道的是,这可以dynamic地完成吗? 也就是说,当用户select一个选项时,我将一个过程绑定到工作表的事件SelectionChange 。 请注意,我知道我可以声明一个全局布尔值并使用它来确定用户操作并在我的SelectionChange事件过程中使用它。 林只是好奇,是否在Excel VBA中,我们可以dynamic地附加程序事件?

运行ExcelmacrosVBScript时出错

从AutoSys运行一个作业,我得到一个错误。 VBS运行一个Excelmacros。 VBS代码: Option Explicit Dim xlApp, xlBook Set xlApp = CreateObject("Excel.Application") On Error Resume Next set xlBook = xlApp.Workbooks.Open("Z:\Confidential Restricted\Weekly_HR_Employees_Macro.xlsm",0, False) xlApp.Run "Weekly_HR_Employees_Macro.Weekly_HR_Employees_Macro" xlBook.Close True xlApp.Quit set xlBook = Nothing Set xlApp = Nothing 错误: Microsoft VBScript runtime error: ActiveX component can't create object: 'Excel.Application'

我们可以使用单个语句将字典键分配给一列吗?

我有大的字典键,我想插入到Excel表格的列。我已经完成了下面: Dim a, d, i 'Create some variables Set d = CreateObject("Scripting.Dictionary") d.Add "a", "Athens" 'Add some keys and items. d.Add "b", "Belgrade" d.Add "c", "Cairo" a = d.keys 'Get the keys For i = 0 To d.Count – 1 'Iterate the array ob.Cells(i + 1, 1).Value = a(i) Next 但是这可以在一个声明中完成吗? 说obj2.Cells(1,1).Resize(dicP.Count,1)=a我也试过这一个,但它只是把第一个关键在我定义的范围我Resize 。

如何根据其他列的值增加一列中的值

如何增加一列中的值取决于其他列的值? 例如 如果是 AB TS-1 TS-1 TS-1 TS-2 TS-2 TS-3 TS-3 TS-3 TS-3 它应该来 AB TS-1 TC-1-1 TS-1 TC-1-2 TS-1 TC-1-3 TS-2 TC-2-1 TS-2 TC-2-2 TS-3 TC-3-1 TS-3 TC-3-2 TS-3 TC-3-3 TS-3 TC-3-4 在B列中应该是这样的,这取决于columm A中的值的数量

使用Excel作为日志阅读器。 如果Excel打开它,如何写入日志文件?

我已经进入了一个位置,所有现有的预定应用程序都将其日志写入.CSV文件,以便人们可以在Excel中打开它们。 当有人打开日志文件并将其保持打开状态时,就会出现问题。 应用程序然后不能写入他们的日志,并通过规则,他们死亡。 所以选项是: 以某种方式让用户以非专有的方式在Excel中打开文件; 不pipe用户的粗鲁程度如何,都能够写入日志; 写一个更友好,更温和的日志阅读器(不,公司运行在Excel和.csv文件,他们不会改变); ??????? 还是我错过了一个完全无脑的方式来处理这个问题? 大多数的应用程序目前是VBScript,但我已经设法将其中的许多转换为C#控制台应用程序,所以这两种风格的答案都是受欢迎的。

VB脚本 – 安装Excel 2003和Excel 2007时,显式调用Excel 2007

我的电脑同时安装了Excel 2003和2007以及安装了Excel 2007兼容包,它还有一个VB脚本,可以自动将logging构build到csv文件中。 最近,需要转储到文件中的logging数量大大增加,超出了Excel 2003中的行限制。因此,我制作了相同文件的副本并将其保存为.xlsm格式。 但是,当我使用VBScript通过调用下面的Excel电子表格运行macros: Set myApp = CreateObject("Excel.Application") Excel文件仍然试图打开自己将其转换(使用兼容包)到Excel 2003中,并在Excel 2003中运行,这在每次运行时都不可避免地发生错误。 有什么办法可以强制Excel.Application指向Excel 2007而不是Excel 2003? 谢谢!

Excel:如何从VbScript调用工作表模块中的函数

使用VBScript,我试图运行驻留在其中一个代码模块的子例程。 现在这个特定的子调用几个其他的子/function,其中包括几个驻留在表单模块。 而在调用这些潜在的表单模块,我得到可以错误: "Sub or Function undefined!" 我怎样才能解决这个问题? 有很多这样的function,我不希望将它们全部从Sheet模块移动到代码模块。 有没有更好的解决办法呢? 调用子模块(驻留在代码模块中),不调用任何代码表单模块上的VBScript工作正常,所以我敢肯定,这是上面的一点是造成问题。