Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
VBA在Excel文件之间复制值_Excel_Vba - Fatal编程技术网

VBA在Excel文件之间复制值

VBA在Excel文件之间复制值,excel,vba,Excel,Vba,我正在使用一个宏来连接来自不同Excel文件的行,所有这些文件都位于同一目录中。以下是当前版本: Sub Compilation() Dim Temp As String Dim Ligne As Long Temp = Dir(ActiveWorkbook.Path & "\*.xls") Application.DisplayAlerts = False Do While Temp <> "" If Temp <> "Recap.xls" Then Workb

我正在使用一个宏来连接来自不同Excel文件的行,所有这些文件都位于同一目录中。以下是当前版本:

Sub Compilation()
Dim Temp As String
Dim Ligne As Long
Temp = Dir(ActiveWorkbook.Path & "\*.xls")
Application.DisplayAlerts = False
Do While Temp <> ""
If Temp <> "Recap.xls" Then
Workbooks.Open ActiveWorkbook.Path & "\" & Temp
Workbooks(Temp).Sheets(1).Range("A2").CurrentRegion.Copy
Workbooks("Recap.xls").Sheets(1).Activate
Ligne = Sheets(1).Range("A65536").End(xlUp).Row + 1
Range("A" & CStr(Ligne)).Select
ActiveSheet.Paste
Workbooks(Temp).Close
End If
Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
end sub
它工作正常,只是宏复制了以下公式:

我希望它复制值。因此,我尝试更改该行并使其从第二行开始,但它不起作用,请有人帮助我,谢谢。

使用.Paste特殊方法代替.Paste:

应用于您的项目,如下所示:

Sub Compilation()
Dim Temp As String
Dim Ligne As Long

Temp = Dir(ActiveWorkbook.Path & "\*.xls")
Application.DisplayAlerts = False
Do While Temp <> ""
    If Temp <> "Recap.xls" Then
        Workbooks.Open ActiveWorkbook.Path & "\" & Temp
        Workbooks(Temp).Sheets(1).Range("A2").CurrentRegion.Copy
        Workbooks("Recap.xls").Sheets(1).Activate
        Ligne = Sheets(1).Range("A65536").End(xlUp).Row + 1
        Range("A" & CStr(Ligne)).PasteSpecial xlPasteValues
        Workbooks(Temp).Close
    End If
    Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub

是的,我使用它,但它不工作,你知道如何使用这个功能吗,谢谢什么不起作用?我相当肯定您没有收到错误消息,但如果是,请描述它。如果您没有收到错误消息,那么我建议您修改原始问题,以更全面地描述您试图完成的任务-目前您只询问如何粘贴值,我提供了答案。是的,我需要复制所有数据,除了第一行,它将从第二行开始,因为当我用ActiveSheet.Paste.PasteSpecial A2替换.past时,我不需要像图片中那样复制日期/值,但我在编译'424'对象时出错,对不起,可能我的英语不好:我找到了此链接,但它也不好,我找不到问题所在。对不起,请参阅修订。它应该是ActiveSheet.PasteSpecialXLPSTEVALUES。我修改了上面的答案。对不起!!我不知道该怎么做
Sub Compilation()
Dim Temp As String
Dim Ligne As Long

Temp = Dir(ActiveWorkbook.Path & "\*.xls")
Application.DisplayAlerts = False
Do While Temp <> ""
    If Temp <> "Recap.xls" Then
        Workbooks.Open ActiveWorkbook.Path & "\" & Temp
        Workbooks(Temp).Sheets(1).Range("A2").CurrentRegion.Copy
        Workbooks("Recap.xls").Sheets(1).Activate
        Ligne = Sheets(1).Range("A65536").End(xlUp).Row + 1
        Range("A" & CStr(Ligne)).PasteSpecial xlPasteValues
        Workbooks(Temp).Close
    End If
    Temp = Dir
Loop
Range("A1").Select
Application.DisplayAlerts = True
End Sub