Tag: vba

CreateObject(“Excel.Application”).Workbooks.Open和Just Workbooks.Open之间的区别

我目前正在使用Workbooks.Open来处理目录中包含的大量文件。 但是打开和closures这些文件会使文件出现在任务栏中,我想避免不停的闪烁。 我得到了一个build议,我可以使用CreateObject创build一个新的实例,因为这将打开一个新的隐藏的Excel实例。 在性能方面开放新工作簿的两种方式有没有其他区别? 另外,我是否应该只使用一个使用CreateObject创build的Excel实例来打开所有Workbook,或者是否需要为每个工作簿创build一个实例( 这似乎浪费了大量的内存和较less的速度 )?

最后一行不是空行; Excel VBA

我有一个Excel工作表,我需要find特定列中的最后一个非空单元格 。 我该怎么做呢? 下面将为我select这个,但它会select第一个不是空的单元格,我需要在行中的最后一个不空的单元格。 Worksheets("DTCs").Range("A29").End(xlToRight).Select

检查是否选中了基于工作表的checkbox

我正在尝试使用IF子句来确定我的checkbox(名为“checkbox1”)是否被选中,以便在我的程序中进一步使用。 我目前的代码: Sub Button167_Click() If ActiveSheet.Shapes("Check Box 1") = True Then Range("Y12").Value = 1 Else Range("Y12").Value = 0 End If End Sub 这似乎不工作,但debugging告诉我有一个问题 ActiveSheet.Shapes("Check Box 1") 不过,我知道这个代码有效(即使它有不同的用途): ActiveSheet.Shapes("Check Box 1").Select With Selection .Value = xlOn 编辑:如果需要更多的信息,我的checkbox(在我的网页上有200个)位于sheet1,名称为“Demande”。 并且每个checkbox都具有相同的格式名称“checkbox…”。 所有的帮助将不胜感激。 谢谢

通过VBA复制另一个工作簿中的数据

这就是我想要做的事情,而且我有点麻烦。 我有一个工作簿,我想从不同的文件收集数据做这样的事情。 Do While THAT_DIFFERENT_FILE_SOMEWHERE_ON_MY_HDD.Cells(Rand, 1).Value <> "" And Rand < 65536 then 'I will search if the last row in my main worksheet is in this file… End Loop 如果是这样,我会退出While循环,如果不是,我会复制一切。 其实这不会像我想要的那样工作,但我不会find正确的algorithm的麻烦。 我的问题是,我不知道如何访问不同的工作簿。

Excel中的Application.CutCopyMode属性的function到底是什么?

那么首先我发现了几个答案,而谷歌search,但大多数的论坛被阻止在我的Office Network因此在这里问这个问题! 还有一个意图是用简单的英语得到答案:P 我明白,如果我们设置Application.CutCopyMode = False那么复制/剪切结果将消失(即内存将被清除),但什么时候应该使用这个,什么时候不使用? 任何人都可以请帮忙?

禁止“另存为”提示

我看了这个话题,发现了一些帮助,但build议似乎并没有工作。 我正在打开一个CSV文件到EXCEL中进行一些更改,然后想要将结果保存回相同的文件名和CSV格式。 我想这样做没有提示,我正在确保我想保存该文件。 我们正在使用一个macros启用Excel文件来导入数据进行更改,然后保存。 整个过程由一个batch file启动,这个batch file将会在一段时间内打开Excel应用程序和指定的文件,这就是为什么我们不希望提示停止进程。 这里是我在VBA中使用的代码来完成这项工作,以及我发现的其他潜艇,以帮助我压制提示。 此代码位于文件的TheWorkbook中,而不是模块。 我错过了什么吗? 码 Sub fixfile() Const strFileName = "W:\Webshare\Documents Acquired in 2017\Jim Excel\snr-room-schedule.csv" Dim wbkS As Workbook Dim wshS As Worksheet Dim wshT As Worksheet Set wshT = Worksheets.Add(After:=Worksheets(Worksheets.Count)) Set wbkS = Workbooks.Open(Filename:=strFileName) Set wshS = wbkS.Worksheets(1) wshS.UsedRange.Copy Destination:=wshT.Range("A1") wbkS.Close SaveChanges:=False 'This is the area of work […]

Excel VBA仅复制粘贴值(xlPasteValues)

我试图将sheetA中的整个列复制到SheetB中。sheetA列具有用formuls形成的值。 我只使用xlPasteValues复制SheetA列值。 但它不会将值粘贴到另一个sheetB。 sheetB中的列是空的。 我的VBA代码 Public Sub CopyrangeA() Dim firstrowDB As Long, lastrow As Long Dim arr1, arr2, i As Integer firstrowDB = 1 arr1 = Array("BJ", "BK") arr2 = Array("A", "B") For i = LBound(arr1) To UBound(arr1) With Sheets("SheetA") lastrow = Application.Max(3, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row) .Range(.Cells(1, arr1(i)), .Cells(lastrow, arr1(i))).Copy Sheets("SheetB").Range(arr2(i) & firstrowDB).PasteSpecial xlPasteValues End With […]

如何改变命名范围的范围

当我通过名称pipe理器创build一个命名范围时,我可以select指定工作簿或[worksheet name]作用域。 但如果想要更改范围,则下拉列表会灰显。 有没有办法,在名称pipe理器,或者,最好是VBA来改变现有的命名范围的范围? 例如: testName引用'sheet1'!A1:B2 testName 'sheet1'!A1:B2与范围工作簿。 我将如何改变 testName引用'sheet1'!A1:B2 testName '作用域?

如何使用VBA或macros将Outlook邮件复制到Excel中

我是VBA和macros的新手。 如果有人帮助我使用VBA代码和macros,这将是有益的。 每天我会收到约50-60邮件与一个标准科目:“任务已完成”。 我已经为所有这些邮件创build了一个规则移动到一个特定的文件夹:“任务完成”。 每天阅读所有50-60封邮件并更新所有邮件非常耗时。 收到的所有50-60封邮件都会有相同的主题,但来自不同的用户。 邮件的身体会有所不同。 我正在使用Outlook 2010和Excel 2010。

编译器错误:未定义用户定义的types

我在这一行上得到编译时错误“用户定义types未定义”: Dim cn As ADODB.Connection 什么可能是错的? 码: Sub test() Dim cn As ADODB.Connection 'Not the best way to get the name, just convenient for notes strFile = Workbooks(1).FullName strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" Set cn = CreateObject("ADODB.Connection") 'For this to work, you must create a DSN and use the name […]