循环浏览文件夹并复制第一张纸的值和格式

时间:2018-12-30 08:43:46

标签: excel vba

我一直在研究VBA代码,该代码将文件夹中的第一个工作表复制到另一个工作簿中。

代码正确地复制了数据,但是保存后我得到了某些错误的单元格(#Ref),这是由于某些复制的单元格具有公式。

我希望复制到数据以保留原始格式,但仅具有值。或者,具有2个错误的单元格是M11和O11,它们具有索引匹配公式,如果可以粘贴这2个单元格的值而无需公式,则复制的数据的其余部分就可以了。

任何帮助将不胜感激。

我尝试使用PasteSpecial xlPasteValuesAndNumberFormats和.PasteSpecial xlPasteFormats,但是我不确定如何修改复制功能。

Sub MergeMultipleWorkbooks()

    Dim Path, Filename As String

    Path = "C:\Users\User\Desktop\ProMacro\"
    Filename = Dir(Path & "*.xlsx")

    Do While Filename <> ""

        With Workbooks.Open(Filename:=Path & Filename, ReadOnly:=True)
            .Worksheets(1).Copy After:=ThisWorkbook.Sheets(1) 

            .Close False
        End With

        Filename = Dir()
    Loop

    MsgBox "Files has been copied Successfull", , "MergeMultipleExcelFiles"
End Sub

代码从文件夹中的指定文件复制了第一张纸,我唯一的问题是,在将文件保存为已复制的公式时,某些单元格将具有#Ref。

1 个答案:

答案 0 :(得分:0)

打开工作簿时,复制工作表的所有内容并将其粘贴到同一工作表中作为值。这是您放在

之间的代码
  

使用Workbooks.Open(文件名:=路径和文件名,ReadOnly:= True)和.Worksheets(1)。之后复制:= ThisWorkbook.Sheets(1)

格式不变,公式将替换为值。

这不是一个非常友好的解决方案,但是在考虑并试图找到一个好的解决方案之后,我想到的只是其他事情。