我在和这个混蛋。我已经设法使这项新工作的文件处理部分自动化,以便为我的小组创建新的每日报告,但是最烦人的步骤是使用来自FTP的新转储来更新主文件。
这是我抄写/复制的代码和我自己写的一些东西的混合物,所以这是我所知道的一团糟。
这是破败。
致死我的部分是弄清楚如何从日常文件中读取内容,评估中间文件并更新某些列(如果发生更改)并添加任何新行(前一天的活动)。
我绝对知道,我的选择副本不正确或无法在下面工作,但我什至无法打开上部文件并从文件中进行选择才能正常工作,但我不断收到“对象在OldRange和NewRange上不支持此属性或方法。
Sub UpdateDataWithNew()
Dim ILmain As Workbook
Dim ILnew As Workbook
Dim data As Worksheet
Dim maintable As Worksheet
Dim OldRange As Integer
Dim NewRange As Integer
Dim ListOld As Range
Dim ListNew As Range
Dim x As Range
Dim y As Range
Workbooks.Open Filename:="C:\Users\adeno\Desktop\Test Load
Files\Illinois.xlsm"
Workbooks.Open Filename:="C:\Users\adeno\Desktop\Today's FTP\IL.csv"
Set ILmain = Workbooks("Illinois.xlsm")
Set ILnew = Workbooks("IL.csv")
OldRange = ILmain.Range("A2",
Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count
NewRange = ILnew.Range("A2",
Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count
Set ListOld = Range("B2:B" & OldRange)
Set ListNew = Range("B2:B" & NewRange)
Set data = ILnew.Sheets("Sheet1")
Set maintable = ILmain.Sheets("Sheet1")
For Each x In ListOld
Workbook.ILnew.Activate
If Application.CountIf(ListB, x) = 0 Then
Row.Copy
Workbook.ILmain.Activate
Row.End(x1Up).Select
Cells.PasteSpecial
End If
Next x
End Sub
答案 0 :(得分:0)
使用Long
代替Integer
。在现代Excel中,可以很容易地最大化任何整数值(可能的行数大于整数可以容纳的行数)。
您的问题可能是如何设置Excel / VBA无法识别的参数的最后一行
'Original bad code
OldRange = ILmain.Range("A2", Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count
您只想获得最后一行,因为您在以下各行上设置了实际范围,然后考虑了标题行。
OldRange = ILmain.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).row
我使用xlUp
是因为进入xlDown
可能会在第一个空白单元格而不是最后一个填充的单元格之后停止(我想自己还没有测试过)。