Excel VBA-根据列名复制数据
我有一个问题:使用三个单独的工作表Source 1、Source 2和Template,我必须从源文件中获取数据并将其粘贴到模板上,具体取决于列名。 即,源1的前三列名称与模板上的名称匹配,模板的第四行与源2的第四行匹配 这是我到目前为止得到的,它是不完整的。 检查其他线程时,我对一个示例进行了派生,但仍然无法使其工作。我在Copy_列中用注释标记的行中得到运行时错误9Excel VBA-根据列名复制数据,excel,runtime-error,copy-paste,vba,Excel,Runtime Error,Copy Paste,Vba,我有一个问题:使用三个单独的工作表Source 1、Source 2和Template,我必须从源文件中获取数据并将其粘贴到模板上,具体取决于列名。 即,源1的前三列名称与模板上的名称匹配,模板的第四行与源2的第四行匹配 这是我到目前为止得到的,它是不完整的。 检查其他线程时,我对一个示例进行了派生,但仍然无法使其工作。我在Copy_列中用注释标记的行中得到运行时错误9 Sub MasterCopy() Open_Files Copy_Columns End Sub Sub
Sub MasterCopy()
Open_Files
Copy_Columns
End Sub
Sub Open_Files()
Application.Workbooks.Open Filename:="C:Source 1.xls"
Application.Workbooks.Open Filename:="C:Source 2.xls"
Application.Workbooks.Open Filename:="C:Template.xls"
End Sub
Sub Copy_Columns()
Dim Source1 As Worksheet
Source1 = Application.Workbooks("C:Source 1.xls").Worksheets("Sheet1") 'here is where the error appears
Source1.Select
Dim columnToBeCopied As Integer
columnToBeCopied = getColumnName("Source1", "columnToBeCopied")
Dim template As Worksheet
template = Application.Workbooks("C:Template.xls").Worksheets("Data")
template.Activate
Dim columnToBePasted As Integer
columnToBePasted = getColumnName("template", "columnToBePasted")
Sheets("Source1").Columns(columnToBeCopied).Copy Sheets("template").Columns(columnToBePasted)
End Sub
Public Function getColumnName(ByVal sheetName As String, ByVal columnName As String)
Dim lastColumn As Integer
lastColumn = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Column
Dim iterator As Integer
iterator = 0
While (iterator <= lastColumn)
If (LCase(Sheets(sheetName).Range(1, iterator)) = LCase(columnName)) Then
getColumnName = iterator
Else: iterator = iterator + 1
End If
Wend
If IsEmpty(getColumnName) Then getColumnName = 0
End Function
有一些比较接近的例子,但它们要么太复杂,这是我第一次使用VBA,要么太模糊,因为它们使用a、o、x、b作为变量名。。。
非常感谢您的帮助:将出现错误的行更改为:
Set Source1=workbooksource 1.SheetsSheet1谢谢您的回答!