简体   繁体   English

Excel工作表:将数据从一个工作簿复制到另一个工作簿

[英]Excel sheet: Copy data from one workbook to another workbook

I am not able to copy data from one workbook to another. 我无法将数据从一个工作簿复制到另一个工作簿。 But with in same workbook its working. 但是在同一个工作簿中它的工作。 After running the macro program the destination worksheet is empty. 运行宏程序后,目标工作表为空。 I have 2 codes. 我有2个代码。 Both are not working. 两者都不起作用。 My source file is .xlsx format and destination file is .xlsm format. 我的源文件是.xlsx格式,目标文件是.xlsm格式。 Is there any mistakes? 有什么错误吗?

Code1: 代码1:

Sub mycode()

Workbooks.Open Filename:="source_file"
Worksheets("Sheet1").Cells.Select
Selection.Copy


Workbooks.Open Filename:="destination_file"
Worksheets("Sheet1").Cells.Select
Selection.PasteSpecial
ActiveWorkbook.Save


End Sub

Code 2 代码2

Sub foo2()
Dim x As Workbook
Dim y As Workbook

Set x = Workbooks.Open("source file")
Set y = Workbooks.Open("destination file")

y.Sheets("Sheet1").Range("A1").Value = x.Sheets("Sheet1").Range("A1")

x.Close

End Sub

I assume that you are writing below Code1 and Code2 excel macros in a separate file, say copy_paste.xlsm : 我认为你是在一个单独的文件中写入以下代码1代码2 Excel宏,说copy_paste.xlsm

Code 1 is working when you provide a full path of files to Workbooks.open : 当您向Workbooks.open提供完整的文件路径时, 代码1正在工作:

Sub mycode()

Workbooks.Open Filename:="C:\Users\xyz\Documents\Excel-Problem\source_file.xlsx"
Worksheets("Sheet1").Cells.Select
Selection.Copy

Workbooks.Open Filename:="C:\Users\xyz\Documents\Excel-Problem\destination_file.xlsm"
Worksheets("Sheet1").Cells.Select
Selection.PasteSpecial xlPasteValues               'xlPasteAll to paste everything
ActiveWorkbook.Save

ActiveWorkbook.Close SaveChanges:=True             'to close the file
Workbooks("source_file").Close SaveChanges:=False  'to close the file

End Sub

To paste everything (formulas + values + formats), use paste type as xlPasteAll . 要粘贴所有内容(公式+值+格式), xlPasteAll粘贴类型用作xlPasteAll

Code 2 is working too, all you need is to provide full path and you are missing _ in file names: 代码2也在工作,您只需要提供完整路径,并且您在文件名中缺少_

Sub foo2()
Dim x As Workbook
Dim y As Workbook

Set x = Workbooks.Open("C:\Users\xyz\Documents\Excel-Problem\source_file.xlsx")
Set y = Workbooks.Open("C:\Users\xyz\Documents\Excel-Problem\destination_file.xlsm")

'it copies only Range("A1") i.e. single cell
y.Sheets("Sheet1").Range("A1").Value = x.Sheets("Sheet1").Range("A1")

x.Close SaveChanges:=False
y.Close SaveChanges:=True

End Sub

edited to add a (minimum) file check 编辑以添加(最小)文件检查

you must specify full file path, name and extension 您必须指定完整的文件路径,名称和扩展名

more over you can open only destination file, like this 更多,你可以只打开目标文件,像这样

Option Explicit

Sub foo2()
    Dim y As Workbook
    Dim sourcePath As String, sourceFile As String, destFullPath As String '<--| not necessary, but useful not to clutter statements

    sourcePath = "C:\Users\xyz\Documents\Excel-Problem\" '<--| specify your source file path down to the last backslash and with no source file name
    sourceFile = "source_file.xlsx" '<--| specify your source file name only, with its extension
    destFullPath = "C:\Users\xyz\Documents\Excel-Problem\destination_file.xlsm" '<--| specify your destination file FULL path

    If Dir(destFullPath) = "" Then '<--| check is such a file actually exists
        MsgBox "File " & vbCrLf & vbCrLf & destFullPath & vbCrLf & vbCrLf & "is not there!" & vbCrLf & vbCrLf & vbCrLf & "The macro stops!", vbCritical
    Else
        Set y = Workbooks.Open(destFullPath)

        With y.Sheets("Sheet1").Range("A1")
            .Formula = "='" & sourcePath & "[" & sourceFile & "]Sheet1'!$A$1"
            .Value = .Value
        End With

        y.Close SaveChanges:=True
    End If
End Sub

you could even open neither of them using Excel4macro 您甚至可以使用Excel4macro打开它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 VBA将数据从一个工作簿表复制到另一工作簿表 - VBA copy data from one workbook sheet to another workbook sheet 将工作表从excel工作簿复制到另一个工作簿 - Copy sheet from excel workbook to another workbook 从Excel中的一个工作簿复制到另一个工作簿 - Copy from One Workbook in Excel to Another Workbook 将数据从一个Excel工作簿复制到最后一行中的另一个工作簿 - Copy Data from one Excel Workbook to Another Workbook in Last row Excel VBA将数据从一个工作簿复制到另一工作簿 - Excel VBA copy data from one workbook to another workbook 使用Python(和DataNitro)将单元格从一个Excel工作簿中的特定工作表复制到另一个Excel工作簿中的特定工作表 - Using Python (and DataNitro) to copy cells from a particular sheet in one Excel workbook, to a particular sheet in another Excel workbook 从一张纸上复制数据并将其从另一张相同的工作簿中过去 - copy data from one sheet and past it on another sheet of same workbook 如何使用 Python 将数据从一个 Excel 工作表复制到同一工作簿的另一工作表? - How to copy data from One Excel sheet to another sheet for same Workbook Using Python? 如何使用工作簿和工作表的变量将数据从一个 Excel 工作簿复制到另一个 Excel 工作簿? - How can I copy data from one Excel workbook to another Excel workbook using variables for Workbook and Worksheet? EXCEL VBA:将工作表中的工作表复制到其他位置的工作簿中 - EXCEL VBA: Copy Sheet from a workbook to another workbook in different location
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM