我在一个文件夹中有多个文件,其中有“零件编号”一栏,但并非所有文件都位于同一列号中。列表也不一定从同一行开始。
所以我首先查找字符串“零件编号”,然后复制其地址作为我想要复制的范围的起点。
“零件编号”列中的一些项目中有一些空格,所以我无法使用 .End(xlDown) 来搜索最后一行。
因此我使用“数量”列来找到最后一行并复制行号。
我有范围开始的单元格、范围结束的列号和行号。但我收到错误“应用程序定义或对象定义错误”。
宏尚未完成,但我无法继续前进,除非我解决了这个问题。这是我得到的:
Option Explicit
Sub mergeworkbooks()
Dim path As String
Dim filename As String
Dim wbk As Workbook
Dim wks As Worksheet
Dim lastrow As Long
Dim lastcolumn As Long
Dim rangestart As String
Dim lastcol As Long
Dim rangefinish As String
Dim activesht As String
path = "D:\RubenBK\TEST\"
filename = Dir(path)
Do While filename <> ""
Set wbk = Workbooks.Open(path & filename)
For Each wks In Worksheets
If Not wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False) Is Nothing Then
wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Activate
rangestart = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Address
lastcolumn = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Column
lastrow = wks.UsedRange.Find("qty", lookat:=xlPart, MatchCase:=False).End(xlDown).row
rangefinish = Cells(lastrow, lastcolumn).Address(xlA1)
activesht = ActiveSheet.Name
'AND HERE IS WHERE I GET THE ERROR, THE Range("rangestart: rangefinish") PART:
wbk.Sheets(activesht).Range("rangestart: rangefinish").Copy Destination:=ThisWorkbook.Sheets("Sheet1").Range("A10")
End If
wbk.Close
Next
filename = Dir
Loop
End Sub
有什么建议吗?
答案1
你的问题是你有你的范围开始和范围完成括在引号中。
尝试将它们移到引号外面,它应该可以起作用。
wbk.Sheets(activesht).Range(rangestart & ":" & rangefinish).Copy