我想从不同的源文件中复制几列,列位置将因文件而异,但列标题将相同
Sub CombineFiles()
Dim Wkb As Workbook
Dim WS As Worksheet
Dim findword As String, found As Range
Dim cell As Range
Set myobject = Sheet1
For i = 1 To 50
Windows("Sample.xls").Activate
Sheets("Sheet1").Select
Sheets.Add
ActiveSheet.Next.Select
If Cells(1, i).Find(What:="Billing Provider", LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate Then
Columns("i").Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B1").Select
ActiveSheet.Paste
End If
Next i
End Sub
答案 0 :(得分:-1)
您没有定义这些变量(将其添加到代码的最顶层)
Dim myobject As Object
Dim i As Integer
使用Option Explicit
时不包括它们会导致应用程序定义或对象定义错误。
修改:我认为您对Find
的工作原理感到困惑。尝试更像这样的东西:
Sub CombineFiles()
Dim myobject As Object
Dim i As Integer
Dim Wkb As Workbook
Dim WS As Worksheet
Dim findword As String, found As Range
Dim cell As Range
Set myobject = Sheet1
For i = 1 To 50
Windows("Sample.xls").Activate
Sheets("Sheet1").Select
Sheets.Add
ActiveSheet.Next.Select
Set found = Cells(1, i).Find(What:="Billing Provider", LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not found Is Nothing Then
Columns("i").Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B1").Select
ActiveSheet.Paste
End If
Next i
End Sub