Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何插入空格_Excel_Vba - Fatal编程技术网

Excel 如何插入空格

Excel 如何插入空格,excel,vba,Excel,Vba,下面的代码浏览excel工作簿,允许您选择多个工作簿并将它们全部粘贴到一张工作表中,这一切都很好,但我的问题是,粘贴它们时,不会在两个工作簿之间留出空间来分隔文件。有人能帮我吗 Sub Button4_Click() Dim fileStr As Variant Dim wbk1 As Workbook, wbk2 As Workbook Dim ws1 As Worksheet fileStr = Application.GetOpenFilename(FileFilter:="micros

下面的代码浏览excel工作簿,允许您选择多个工作簿并将它们全部粘贴到一张工作表中,这一切都很好,但我的问题是,粘贴它们时,不会在两个工作簿之间留出空间来分隔文件。有人能帮我吗

Sub Button4_Click()
Dim fileStr As Variant
Dim wbk1 As Workbook, wbk2 As Workbook
Dim ws1 As Worksheet

fileStr = Application.GetOpenFilename(FileFilter:="microsoft excel files (*.xlsx), *.xlsx", Title:="Get File", MultiSelect:=True)
Set wbk1 = ActiveWorkbook
Set ws1 = wbk1.Sheets("Sheet3")

For i = 1 To UBound(fileStr)

MsgBox fileStr(i), , GetFileName(CStr(fileStr(i)))

Set wbk2 = Workbooks.Open(fileStr(i))
wbk2.Sheets(1).UsedRange.Copy ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row, 1)

wbk2.Close

Next i

End Sub

如果我正确解释了您的问题(以及对注释的回答),要在从不同工作簿复制的数据之间留出空间,请在代码中更改此行:

ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row, 1)
为此:

ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1)
使用原始代码,实际上是将一个工作簿的最后一行数据替换为另一个工作簿的第一行数据。添加
+2
将在复制的最后一个数据集下方2行开始粘贴操作,这将在数据集之间提供1个空白行。显然,调整+2以获得更多空间:)

更新

我已经修改了你的代码,只在第一次文件拉取时复制标题

Sub Button4_Click()

Dim fileStr As Variant
Dim wbk1 As Workbook, wbk2 As Workbook
Dim ws1 As Worksheet

fileStr = Application.GetOpenFilename(FileFilter:="microsoft excel files (*.xlsx), *.xlsx", Title:="Get File", MultiSelect:=True)
Set wbk1 = ActiveWorkbook
Set ws1 = wbk1.Sheets("Sheet3")

For i = 1 To UBound(fileStr)

    MsgBox fileStr(i), , GetFileName(CStr(fileStr(i)))

    Set wbk2 = Workbooks.Open(fileStr(i))

    If i = 1 Then ' if it's the first file, copy the headers

        wbk2.Sheets(1).UsedRange.Copy

    Else 'otherwise only copy the data (assumes headers are always in row 1

        wbk2.Sheets(1).Intersect(wbk2.Sheets(1).UsedRange, wbk2.Sheets(1).UsedRange.Offset(1)).Copy

    End If

    ws1.Cells(ws1.Range("A" & Rows.Count).End(xlUp).Row + 2, 1).PasteSpecial xlPasteAll


    wbk2.Close

Next i

End Sub

我假设是MsgBox没有释放出您期望的空间?如果是这样的话,你可能想把,改成,“,它不起作用了rajah…谢谢你现在帮助它工作的很好Scott…现在的问题是它也会给每个文件取标题…但是我希望它只取文件的第一个标题,然后剩下的只取没有标题的数据。仅供参考,@Cwala。在将来,由于这个新问题是一个新问题,最好发布一个新问题,因为你原来的问题已经解决了,虽然它是一个扩展,但它是一个单独的问题。