如何在将多个excel文件合并到单个文件后获取源文件名?

如何在将多个excel文件合并到单个文件后获取源文件名?,excel,vba,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&qu

我试图通过将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。 感谢您的帮助


谢谢

您的问题是这一行:

Sheets("Sheet1").Range("O2:O" & LastRow).Value = "Dump" & i
每次通过循环时,只需将从O2到最后一行的值替换为dump&i,在最后一次使用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

这是一个快速修复方法,通常我会一次性填充一个范围,但我认为您只是处理少量数据,应该可以。

您不断地在这里覆盖Sheet1.RangeO2:O&LastRow.Value=Dump&I。顺便说一句,行不是一个好的变量名imv。谢谢法语。谢谢你的帮助。