2012-10-16 5 views
0

следующий код позволяет мне просматривать несколько различных файлов excel и вставлять их в один лист ниже друг друга. Файл excel имеет одинаковые имена столбцов, но имеет разные данные и работает отлично, моя проблема в том, что мне нужно, когда он вставляет файл, он также должен создать дополнительный столбец и записать имя этого файла в этом столбце для каждого файла, который он вставляет.Как добавить дополнительный столбец

Sub Button5_Click() 
Dim fileStr As Variant 
Dim wbk1 As Workbook, wbk2 As Workbook 
Dim ws1 As Worksheet 

fileStr = Application.GetOpenFilename(FileFilter:="microsoft excel files (*.xlsx), *.xlsx", Title:="Get File", MultiSelect:=True) 
Set wbk1 = ActiveWorkbook 
Set ws1 = wbk1.Sheets("Sheet3") 

'handling first file seperately 
MsgBox fileStr(1), , GetFileName(CStr(fileStr(1))) 
Set wbk2 = Workbooks.Open(fileStr(1)) 
wbk2.Sheets(1).UsedRange.Copy ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1) 

wbk2.Close 

For i = 2 To UBound(fileStr) 
MsgBox fileStr(i), , GetFileName(CStr(fileStr(i))) 

Set wbk2 = Workbooks.Open(fileStr(i)) 
'using offset to skip the header - not the best solution, but a quick one 

wbk2.Sheets(1).UsedRange.Offset(1, 0).Copy ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1) 

wbk2.Close 
Next i 
End Sub 

ответ

1

Используйте Insert методом Range объекта, чтобы вставить столбец:

'***** Inserts new column to the left of column C 
Range("C:C").Insert 

Ввод текста в ячейке:

'***** Entering text in A1 
ws1.Cells(1, 1).Value = fileStr(i) 
+0

Мы также ищем для вставки имен файлов в этом newcolumn. .. и, пожалуйста, мы не делаем жесткое кодирование. – Cwala

+0

Итак, где вы хотите колонку? Это был пример. –

+0

в конце каждого вставленного данных – Cwala

Смежные вопросы