【发布时间】:2021-02-08 05:43:11
【问题描述】:
我正在尝试在 Excel 中编写一个宏:
-
遍历数百个
.csv文件。 -
获取他们的名字并将他们放在目标工作簿的第一行。
-
从每个
.csv文件中复制columns E & R并将它们粘贴到目标工作簿中相应名称的下方。
示例: 在目标工作簿中,我应该得到单元格 A1 中的 title_1(csv_1),然后将来自 csv_1 的 columns E & R 的数据粘贴到 cells A2 & B2 中。 C 列为空。然后cell D1中的title_2(csv_2),各自的columns E & R粘贴在D2 & E2中。 F列为空,依此类推...
I would like the data to be organize like this
尝试:
Sub LoopExcels ()
Dim directory As String
Dim fileName As String
Dim i As Integer
Dim j As Integer
Dim wb As Workbook
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim ColOutputTarget As Long
ColOutputTarget = 1
Set wsTarget = Sheets("Sheet1")
Application.ScreenUpdating = FALSE
Application.DisplayAlerts = FALSE
directory = "C:\data"
fileName = Dir(directory & "*.csv")
Do Until fileName = ""
Set wbSource = Workbooks.Open(directory & fileName)
Set wsSource = wbSource.Worksheets(1)
j = j + 1
i = 1
Cells(i, 1) = fileName
Workbooks.Open (directory & fileName)
For Each sheet In Workbooks(fileName).Worksheets 'my excels contain only one sheet but didn't know how to get rid of the "For each sheet"
wsTarget.Cells(i, j).Value = sheet.Name
j = j + 2
Next sheet
With wsTarget
.Range("A" & ColOutputTarget).Value = wsSource.Range("E1:E100").Value 'Need to copy all data in columns it can be 10 cells and it doesn't exceed 100 cells
.Range("B" & ColOutputTarget).Value = wsSource.Range("R1:R100").Value
ColOutputTarget = ColOutputTarget + 1
End With
wbSource.Close SaveChanges:=False
fileName = Dir()
Loop
Application.CutCopyMode = FALSE
End Sub
我一直在寻找没有运气的解决方案。
-
我找到了一种循环文件的方法
-
我设法部分获取了每个文件的名称(我发现了一个代码,它可以遍历 Excel 文件中的所有工作表。我的文件只包含一个工作表,所以也许可以简化) 由于某种原因,它不会复制全名。一些文件的名称很长,+50 个字符。
-
我在复制/粘贴列时遇到问题。每列包含 10 到 100 个单元格的数据。 下面的代码遍历文件,但将数据粘贴到同一列中。我最终只从它打开的最后一个 excel 文件中获取数据,该文件粘贴在前 2 列中。 每次处理完每个 csv 文件时,我都找不到让它转移到下一列的方法。
【问题讨论】:
-
我无法理解...当您说“每个名称之间的 3 个单元格距离”时,x 轴或 y 轴的距离是多少? ...然后..你说“从每个excel中复制两列对应的名称下面”..什么?¿?..我建议你改进你的解释..
-
@Gass,我想在每个组之间留空列。理想情况下,单元格 A1 中会有 title1,然后是从单元格 A2 和 B2 开始的两列中的数据。第 3 列 (C) 为空。然后单元格 D1 中的标题 2,D2 和 E2 中的相应列。 F 列为空,依此类推...
-
好的。我接到你了。您能否尝试尽可能清晰和简短地简化您的主要帖子?大概到时候我就可以帮你了。
-
@Gass,感谢您的评论。我会做的
-
我还是不明白你写
copy two columns from each excel (E & R) below their corresponding names.是什么意思??请在主帖中澄清这一点。我明天看看。