我已经写了这个,它对大部分的作品...我找到的第一个文件。关于第二个文件,我得到以下错误:将多个空格分隔文件导入到一个Excel工作表中
“的信息无法粘贴,因为复制区域和粘贴区域是不一样的尺寸和形状,请尝试以下之一:
- 点击单个单元格,然后粘贴。
- 选择一个相同大小和形状的矩形,然后粘贴。“
我不明白我做错了什么。
假设遍历一个目录,并抓取所有.txt文件并将它们导入到Sheet1或Sheet2中。我可以得到第一个导入正常,但下一个文件抛出错误,而不是追加到同一电子表格。
Sub PopulateSheets()
Dim file As String, path As String, fullpath As String, StaticPath As String
Dim count As Integer
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet
Dim Sheet As String
Dim RowCount As Long
On Error GoTo Errorcatch
RowCount = 1
count = 1
StaticPath = Sheet3.Cells(2, 7)
While (count <= 2)
If count = 1 Then
path = StaticPath & "\com\*.txt"
Else
path = StaticPath & "\res\*.txt"
End If
file = Dir(path)
Sheet = "Sheet" & count
While (file <> "")
fullpath = Left(path, InStr(1, path, "*.txt") - 1) & file
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets(Sheet) '<~~ Sheet where I want to import
Set wbO = Workbooks.Open(fullpath)
RowCount = wsI.Range("A:A").CurrentRegion.Rows.count
wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
wbO.Close SaveChanges:=False
file = Dir 'Grab Next File
Wend
count = count + 1
Wend
Exit Sub
Errorcatch:
MsgBox Err.Description
End Sub
它已经粘贴从第一文件中的信息后,在wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
炸毁,关闭它,然后尝试粘贴第二个文件。
在这一点上,任何帮助,将不胜感激。
附注 我注意到,如果我换wbO.Sheets(1).Cells.Copy Destination:=wsI.Range("A" & RowCount)
与wbO.Sheets(1).Cells.Copy wsI.Cells
,将所有文件粘贴到表的...但它之前它覆盖文件。我需要它追加并且不知道如何做到这一点。
路径部分实际上像冠军一样工作。它会根据需要抓取目录中的所有文件。问题是当vba代码放到表单中时。该路径的值类似于“C:\ Comres”。根据是第一遍还是第二遍,我会去C:\ comres \ com或\ res。所以这部分不是问题,它的工作原理。 – user2597159
我看到你在说什么,我把一个StaticPath变量放在修复那个小家伙的路径中,但是这仍然不能解决问题,因为它是如何将数据复制到电子表格中而不是它如何访问它。 – user2597159