Tag: vbscript

vbsript和excel删除除最后一个之外的所有工作表

我试图删除所有工作表在excel exept最后一个并保存它,然后移动它的位置。 我无法得到它的工作,因为它删除所有其他工作表,但错误超出范围的错误。 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True objExcel.DisplayAlerts = False Set objWorkbook = objExcel.Workbooks.Open("C:\M-tek 10-31-12_Tony.xlsx") i = objWorkbook.Worksheets.Count Do while i = i i = i – 1 objWorkbook.Worksheets(i).Delete Loop

Excel VBA中的RegEx不正确匹配扩展ASCII字符

我正试图使用​​Excel VBA中的以下RegEx删除所有不可打印和非ASCII(扩展)字符: [^\x09\0A\0D\x20-\xFF] 这在理论上应该与任何不是制表符,换行符,回车符或可打印的ASCII字符(hex和hex之间的字符代码或十二进制和二十五和二十五进制)之间匹配。 我已经在这里证实,Microsoft VBScript正则expression式支持\ xcc表示法,其中CC是hex的ASCII码。 问题是,这个正则expression式匹配127以上的每个字符。然后,当匹配字符的代码高于127时,在match.value上抛出一个“无效的过程调用”。是不是VBScript RegExes不支持127以上的字符代码? 我似乎无法在任何地方find这个数据。 以下是完整的代码: regEx.Pattern = "[^\x09\0A\0D\x20-\xFF]" regEx.IgnoreCase = True 'True to ignore case regEx.Global = True 'True matches all occurances, False matches the first occurance regEx.MultiLine = True If regEx.Test(Cells(curRow, curCol).Value) Then Set matches = regEx.Execute(Cells(curRow, curCol).Value) numReplacements = numReplacements + matches.Count For matchNum = matches.Count To […]

从VB脚本运行Excelmacros,但不会提示VBA运行时错误

我想从VB脚本中运行一个Excelmacros,但是如果没有VBA提供运行时错误提示,即使这个macros有一个未被捕获的运行时错误。 理想情况下,我想捕获实际的运行时错误消息,但是如果能够在不与对话进行交互的情况下恢复脚本,我会很高兴。 这是我正在谈论的一个最简单的例子。 test.vbs: Option Explicit Dim Excel: set Excel = CreateObject("Excel.Application") Dim wb: set wb = Excel.Workbooks.Open("C:\Temp\test.xls") On Error Resume Next Excel.run "Hello" On Error Goto 0 wb.Close Excel.Quit 在名为test.xls的Excel电子表格的模块1中: Option Explicit Sub Hello() Dim x As Integer x = 1 / 0 ' Just causing an error for this example's purposes End Sub […]

手动打开Excel文件允许公式运行,用VBScript或PowerShell或Python的win32com打开excel文件不会

我遇到一个脚本没有更新Excel文件的问题,我减less了以下问题: 如果我打开一个Excel文件,我可以去公式选项卡,点击“现在计算”,它会花一点时间更新所有的计算。 如果我只是运行一个VBScript来打开文件(见下面的代码),如果我去公式选项卡,然后单击“立即计算”它将立即刷新,没有什么会改变。 Dim objXLApp, objXLWb, objXLWs Set objXLApp = CreateObject("Excel.Application") objXLApp.Visible = True Set objXLWb = objXLApp.Workbooks.Open(file_path.xls) 我已经尝试了各种各样的东西: objXLApp.Calculation = xlAutomatic objXLApp.Calculate objXLApp.CalculateFull objXLApp.CalculateFullRebuild objXLWb.RefreshAll objXLWs.EnableCalculation = True objXLWs.Calculate 但这些似乎做同样的事情,去标签,点击“计算”导致只是一个快速刷新和Excel页面不会尝试更新。 使用python的win32com模块也是如此。 我无法在打开的文件中运行计算。 import win32com.client as win32 excel = win32.Dispatch('Excel.Application') excel.Visible = True excel_workbook = excel.Workbooks.Open(file_path.xls) 使用PowerShell也是如此。 $excel = New-Object -com excel.application $excel.Visible = $True […]

用一个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 我似乎没有得到任何编译错误,当我运行的代码,它只是不工作,我仍然有相同的空白/空单元格。 任何人都可以阐明我做错了什么?

VBScript和多级OLE?

我做了一个vbscript来定位一些电脑,并对它们进行wmi查询,而我的老板想把这些数据放在一个文档里面。 问题是这个文档是一个Microsoft Word文档,里面embedded了excel对象。 现在我已经search了广泛和远在谷歌任何方式来定位和操纵一个对象内部和OLE对象,但我似乎无处可去。 所以我的问题是,如果有人有这样的代码,我可以看看,或者一个教程,甚至有可能甚至告诉我,如果这是可能的?

ADODB查询将Excel单元格更新为转义文本

我正在尝试更新Excel 2003电子表格中的一个单元格,但是我遇到的问题是Excel向我的值的前面添加了一个单引号。 有没有办法input一个整数的值,而不是一个转义的string? 谢谢!! Const filePath = "C:\1.xls" Dim ado: Set ado = CreateObject("ADODB.Connection") ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _ & filePath & """;Extended Properties=""Excel 8.0;HDR=No"";" ado.CursorLocation = 3 ado.Open ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = 1;" ado.Close 上面的代码将单元格A1更新为'1

在VBA中删除前后单元格中不需要的字符(excel)

我对编程非常陌生,虽然有几个类似的问题要问我,但我似乎无法让他们为我的需求工作。 我想要的是能够将原始数据复制到列A中,命中macros运行,它应该删除我想保留的数据前后的任何不需要的字符导致在一个单元格中包含我想要的数据。 我也希望它通过列中的所有单元格,但要记住一些单元格可能是空的。 我想保留的数据是这种格式:L1-somedata-0000 -somedata-文本将会改变,但是 – ether侧将会一直存在,L1有时候是L2,而0000(可能是任何4个数字)有时候会是3个数字。 也可能有一些行中没有有用的数据,这些应该被删除。 最后,一些单元格不会包含任何不需要的数据,这些应该保持不变。 Sub Test() Dim c As Range For Each c In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) c = removeData(c.text) Next End Sub Function removeData(ByVal txt As String) As String Dim result As String Dim allMatches As Object Dim RE As Object Set RE = CreateObject("vbscript.regexp") RE.Pattern = […]

自动打开,更新和保存Excel工作簿

我想在Excel中自动修改列的数字格式。 Set excel = CreateObject("Excel.Application") Set oWB = excel.Workbooks.Open("E:\Docs\Invoice.csv") /* Excel Macro starts */ Columns("G:G").Select Selection.NumberFormat = "m/d/yyyy" Columns("H:H").Select Selection.NumberFormat = "0.00" /* Excel Macro ends */ oWB.save oWB.Application.Quit 我使用命令行运行这个.vbs。 Excel文档不会被更新。 任何人都可以请帮我解决这个问题? 提前致谢

如何获得使用vbscript运行excel实例的工作簿名称?

Dim objXL, strMessage On Error Resume Next Set objXl = GetObject(, "Excel.Application") If Not TypeName(objXL) = "Empty" then strMessage = "Excel Running" Else strMessage = "Excel NOT Running" End If MsgBox strMessage, vbInformation, "Excel Status" 嘿,谢谢你的朋友。 这真的使我接近寻找的东西,更接近解决scheme。 让我告诉你我确切的要求/问题:其实我的问题是,从Java我试图find具有特定工作簿名称的Excel实例,但即使它出现不返回Excel实例。 在我的情况下,我有一个Excel中打开2个工作簿“Book1”和“Book2”。 当试图用这些工作簿名称查找Excel时,我没有给出任何结果。 为了缩小这个问题,只有在我的客户端机器上才能观察到这个问题。 在rest机器这个相同的Java代码工作正常。 这在卸载Excel2010并安装Excel2007后开始发生。 所以我想要做的是,要创build一个vbscript,我可以给工作簿作为input,它会返回我是否有这样的Excel实例运行给定的工作簿名称。 嘿,请进一步指导我创build这样的脚本,我会给工作簿名称和脚本将find是否这样的Excel实例正在运行或不。 即使工作簿名称作为脚本中的硬编码input传递,也不是问题。 我将根据我的工作簿名称进行更改。 感谢您以前的答复,并等待这一个.. :))