Tag: vba

从Access的Excel格式化每隔一段时间(对象variables/块未设置)

我有一个点击子例程,导出两个表格,以Excel。 然后,我logging了一个Excelmacros,并将代码复制到相应的格式化工作表。 我的问题是,我每隔一段时间运行代码,我得到这个错误:“运行时错误'91':对象variables或块variables未设置” 这发生在我的代码的这一点: With .ActiveSheet .Range("B" & .Cells.Rows.Count).End(xlUp).Offset(1, 0).Activate End With With ActiveCell '~~~~~~~~ERROR OCCURS HERE~~~~~~~~~~~~ .formula = "=SUM(B2:" & ActiveCell.Offset(-1, 0).Address & ")" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .Font.Bold = True End With 我想要SUM的范围是dynamic的,这就是为什么我在公式中抵消了单元格1,我试过了: .formula = "=SUM(B2:B3)" 但是这给出了同样的错误。 完整的代码如下,我已经收到来自“Excel工作表格式”注释下的第一行的这个错误,并且已经通过在代码中添加了块,但是无法避开.formula =行。 我真的坚持这一点,任何帮助将不胜感激 完整代码: Private Sub cmdExport_Click() Dim xl As Excel.Application Dim wb As Object Dim todaysDate As String […]

在Excel数据透视表中将不同的SlicerCache分配给切片器

我有两个数据透视表与相同的数据透视表和类似的切片器组。 一些切片器控制两个数据透视表,这意味着例如对于PivotField [月],共有共享相同的SlicerCache的2个切片器。 现在我需要“不同步”这些切片,以便每个控制它自己的数据透视表。 我不能右键单击切片机,并通过“数据透视表连接”,因为在一个切片机中所做的更改将反映在另一个。 所以我创build了一个新的SlicerCache: ThisWorkbook.SlicerCaches.Add ws.PivotTables(2), "[Month]" 并且想要将这个新的SlicerCache分配给其中一个切片器,但是这两种方法都失败了: oSlicer.SlicerCache = ThisWorkbook.SlicerCaches(38) 'Object doesn't support this property or method oSlicer.SlicerCache.Index = 38 'invalid property assignment 有任何想法吗? 我知道我可以通过删除和重新创build其中一个切片器来实现这一点,但是它必须以编程方式完成。

VBA从网站刮取数据 – 空数据错误

我正在创build一个macros来从网站上抓取数据。 我遇到的问题是当最后一个完整的页面被刮,列A没有数据,但其他列做,我收到一个运行时间1004错误。 例如,如果要刮取的总页数是6,并且列A在第5页上的最后一个条目中没有数据,则macros将擦除第5页上的所有数据,但是在尝试获取时会抛出运行时错误到第6页。第6页也有数据,但是我认为,因为A列中没有数据,所以它只是决定给出运行时间错误。 任何想法呢? 另外,用我所包含的代码,直到下一个箭头消失,macros观循环会更容易吗? 如果是这样,我怎么会这样做呢? 'Macro to query Daily Activity Search for DFB Counties 'Run Monday to pull data from Friday Sub queryActivityDailyMforFWorking() Dim nextrow As Integer, i As Integer Dim dates dates = Date – 3 Application.ScreenUpdating = False Application.DisplayStatusBar = True Do While i <= 50 Application.StatusBar = "Processing Page " & […]

Excel 2013:我需要Sheet1 Col D = Sheet2 Col D如果Sheet1 Col B = Sheet 2 Col A,否则Sheet1 Col D是昨天的date

使用Excel2013,我只需要在Sheet1 Column B = Sheet2 Column A的条目中填充Sheet1 Column D中的单元格,否则Sheet1 Column D填充了昨天的date。 这需要引用表单的索引号,而不是名称或代码名称,因为Sheet2将每天更改。 我是VBA新手,真的不知道从哪里开始呢! 编辑:Sheet1是完整列表和Sheet2是每日例外的列表,或只是那些不报告。 所以我需要它来查看所有的ColumnA,并将其与所有的ColumnB进行比较。 Sheet2 ColumnD是最后的报告date。 对此我非常陌生,所有我试过的都是比较基本的配方。 如果我不需要它总是参考第二张纸,那就完成了! 我感谢所有的build议!

根据多个条件合并两个Excel工作簿

我想合并两个不同的布局的Excel文件。 两个文件之间唯一的共同列是“名称”和“邮政编码”。 文件1是“基本文件”,文件2包含我想要集成到文件1中的附加信息。 当相应行的名称和邮政编码相同时,只能将附加信息(地址,国家,字段7和字段8)复制到基本文件中。 基本文件有多个工作表,相应的行可以在任何工作表中。 两个excel文件都非常大(> 60000行,5列)。 代码应该从文件2中获取第一个条目,并在文件1中search相应的条目。如果find,则附加信息将被复制到文件1中。然后(或者如果找不到相应的条目)重新运行该过程,时间与文件2中的第二个条目 – 只要文件2中的所有条目已合并到文件1中。 下面的代码工作,但是太慢了。 花了大约两分钟来巩固一个单一的行。 你有什么build议如何提高性能? Sub merging_two_excel_files() ' Dim data_path As String Dim filename_base As String Dim filename_addon As String Dim xlApp As Excel.Application Dim xlBook_base As Workbook Dim xlBook_addon As Workbook data_path = "…" filename_base = "file1" filename_addon = "file2" Set xlApp = CreateObject("Excel.Application") Set xlBook_base […]

在EXCEL上用VBAparsing一个string

我试图分析一个文本文件在excel选项卡中导入。 第一列是一个文本代码,用于表示操作的时间线,我会把这个文本代码转换成几秒钟。 文本代码可以这样形成: 5,9h180s -> 21420s 10min -> 600s 3,4h5min30s -> 12570s … 我的想法是提取一个正则expression式的值,稍后在函数中使用它们,但我不知道VBA非常好。 EXCEL VBA中是否有函数对string执行正则expression式并从中提取数据? 你有这样的function的例子吗?

如何用VBA中的Do循环replace列中的string中的值

我有一列电话号码。 其中一些包含两个连续的连字符“ – ”,而不是一个“ – ”。 我想用“ – ”replace“ – ”。 问题是如果“ – ”每个单元格只出现一次,那很好,但是可能有“—-”或“—”,甚至“——– —”。 我的直觉是使用Do While或Until Loop,但我不知道如何。 我想我会需要查找function,但我不知道如何将它们结合起来。 请有人帮助我好吗? 谢谢。

将3个工作表复制到新的工作簿 – 1只有可见的单元格 – 另外两个只有值

我是新来的,一般来说vba。 我基本上只是把自己的事情看成是为了我的新工作。 所以请忍受我。 我正在寻找解决scheme来解决我的问题,并发现部分解决scheme,但我无法将它们拼凑在一起。 我的目标如下:将工作簿的3个工作表复制到一个新的工作表(不存在),并将其保存在具有特定名称的当前date之下。 下面是我为了工作正常而编写的代码。 Sub export() Dim path As String Dim file As String Dim ws As Worksheet Dim rng As Range path = "D:\@Inbox\" file = Format(Date, "YYYY-MM-DD") & " " & Format(Time, "hhmm") & " " & "accr " & Format(DateSerial(Year(Date), Month(Date), 1), "YYYY_MM") & " city" & ".xlsx" Application.ScreenUpdating = […]

VBA – 在自动筛选后复制数据时遇到问题

我正在尝试编写一个VBA代码,它将根据A列在“新build业务数据”表中过滤报表。然后,它应该将列B中的结果粘贴到“新build销售额”表中的K列。但是,只有部分数据正在通过,因为CJ列中可能有一些空单元格。 我知道问题是与范围(select…),但不知道如何纠正 'Stage 6 Sheets("New Sales").Select Range("B1").End(xlDown).Offset(1, 0).Select ActiveCell.FormulaR1C1 = "Accounts Live – Stage 6" Sheets("New Business Data").Select ActiveSheet.Range("$A$1:$K$122").AutoFilter Field:=1, Criteria1:= _ "Stage 6 – Live" Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("New Sales").Select Range("B1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("B1").End(xlDown).Offset(1, 0).Select ActiveCell.FormulaR1C1 = "Total"

来自Power Pivot的翻录数据(“Item.data”)

我已经收到一份工作手册,其中包含两个表格(一个大约1毫米的行,另外一个20毫米的行)。 我想撕掉这个(真的是什么 – 但是让我们说一个CSV),以便我可以在R + PostGreSQL中使用它。 由于行数超过100万行,因此无法导出到Excel表格; 和复制粘贴数据只有当我select大约200,000行时才起作用。 所以我有点卡住了! 我试图将xlsx转换成zip文件,然后在记事本++中打开“item.data”文件,但是它被encryption了。 我会很感激任何解决scheme(高兴使用VBA,Python,SQL) 编辑:我把一些工作好的VBA放在0.5毫米左右的行然而打破了17毫米的行文件: Public Sub CreatePowerPivotDmvInventory() Dim conn As ADODB.Connection Dim sheet As Excel.Worksheet Dim wbTarget As Workbook On Error GoTo FailureOutput Set wbTarget = ActiveWorkbook wbTarget.Model.Initialize Set conn = wbTarget.Model.DataModelConnection.ModelConnection.ADOConnection ' Call function by passing the DMV name ' Eg Partners WriteDmvContent "Partners", conn MsgBox […]