[英]Excel VBA : Copy Sheet name to all cells till empty rows loop for all files in a folder
[英]Using Excel VBA to loop through .csv files in folder and copy the filename into cells in last column
我有成千上万个具有特定文件名的.csv文件。 每个.csv文件都以第一行作为标题,然后以随后的行(通常为20行)作为数据。 我需要将每个.csv文件的文件名复制到20列的最后一列中的帮助,并且需要循环浏览文件夹中的所有.csv文件。
提前致谢!
这应该做。 根据您的操作,您可能想要对其进行更改,以使其不会添加文件名字段(如果已存在)。 等等
Public Sub UpdateFiles()
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim xl As New Excel.Application
Dim wb As New Excel.Workbook
Dim lastRow
Dim lastColumn
Dim folder
'Change this folder to the one you want.
Set folder = fso.getFolder("c:\notbackedup\")
'Uncomment to watch/debug code
'xl.Visible = True
For Each f In folder.Files
Debug.Print f.Name
If (f.Name Like "*.csv") Then
Set wb = xl.Workbooks.Open(f.Path)
lastRow = wb.Sheets(1).UsedRange.Rows.Count
lastColumn = wb.Sheets(1).UsedRange.Columns.Count
wb.Sheets(1).Range(ColumnLetter(lastColumn + 1) & "1").Value = "FileName"
wb.Sheets(1).Range(ColumnLetter(lastColumn + 1) & "2:" & ColumnLetter(lastColumn+1) & lastRow).Value = f.Name
wb.Save
wb.Close True
End If
Next
xl.Quit
End Sub
Function ColumnLetter(ByVal ColumnNumber As Long) As String
Dim n As Long
Dim c As Byte
Dim s As String
n = ColumnNumber
Do
c = ((n - 1) Mod 26)
s = Chr(c + 65) & s
n = (n - c) \ 26
Loop While n > 0
ColumnLetter = s
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.