0
問題があります:3つのワークシート(ソース1、ソース2、テンプレート)を使用するソースファイルからデータを取り出し、列に応じてテンプレートに貼り付ける必要があります名前。 I.ソース1の最初の3つの列の名前はテンプレートの名前と一致し、テンプレートの4番目の行はソース4の4番目の行と一致します。Excel VBA - 列名に応じてデータをコピーする
これは私がこれまでに得たものです(不完全です)。 他のスレッドのチェック例の "派生"を作ったが、それでも動作させることはできない。私は近い例が多少あります)Copy_Columns内のコメント(でマークされた行に
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
をランタイムエラー9を得るが、彼らはその用語のいずれか複雑すぎ(これは、VBAを使用して、私の最初の時間である)、またはあまりにも「あいまい」です彼らは、O、xは、変数名であるB ... すべてのヘルプは大歓迎:)使用
は、あなたの答えをありがとう! – Powdertrail