将多个Excel文件合并为一个文件后,如何获取源文件名?

时间:2020-06-22 08:07:59

标签: excel vba

我正在尝试通过将4个excel文件合并为1个文件来创建一个文件。 这是相同的代码


Public Sub CommandButton1_Click()

Dim wb As Workbook
Dim row As Long
Dim i As Long
Dim currow As Long
Dim LastRow As Long

LastRow = Sheets("Sheet1").Cells(65536, 2).End(xlUp).row
Columns("O:O").Insert
Range("O1").Value = "Source"
For i = 1 To 4 Step 1
Sheets("Sheet1").Range("O2:O" & LastRow).Value = "Dump" & i
Set wb = Workbooks.Open("C:\Users\BV\Desktop\Excel" & "\Dump" & i & ".xlsx")
With wb.Sheets("Data")
    If i = 1 Then
     row = 1
    Else
     row = 2
    End If
Do Until .Range("A" & row).Value = vbNullString
currow = currow + 1

For n = 0 To 13 Step 1
Me.Range("A" & currow).Offset(columnoffset:=n).Value = .Range("A" & row).Offset(columnoffset:=n).Value
Next n
row = row + 1
Loop
End With
wb.Close True
Next i
Fees_check
Set wb = Nothing
End Sub


Dump1,Dump2,Dump3和Dump4是源文件名。 我想添加另一列,在合并后提供源文件名,例如Dump1,Dump2等。 现在,我将所有行的值都获取为Dump4。 任何帮助表示赞赏。

谢谢

1 个答案:

答案 0 :(得分:1)

您的问题是这一行:

Sheets("Sheet1").Range("O2:O" & LastRow).Value = "Dump" & i

每次循环时,您都用dump & i将“ O2”中的值替换为最后一行,而在最后一次,只是用“ dump4”填充了整个列

因此,摆脱掉这一行,而使用CurrRow变量来填充“ O”列,也许只需在实际跨数据移动的位中插入一行,就像这样:

For n = 0 To 13 Step 1
Me.Range("A" & currow).Offset(columnoffset:=n).Value = .Range("A" & row).Offset(columnoffset:=n).Value
Me.Range("O" & currow).Value2 = "Dump" & i ' INSERT THIS LINE
Next n

这是一个快速解决方案,我通常会一口气填写一个范围,但我认为您只需要处理少量数据就可以了。

相关问题