从Excel文件复制工作表

时间:2013-06-05 14:09:55

标签: excel vba excel-vba

我有以下问题。我有一个Excel文件已经有一些工作表,我们称之为我的主文件,在子目录中我有五个其他Excel文件,每个包含一个工作表。现在我需要将excel文件的内容复制到我的主文件中,并且在我的主文件中需要为子目录中的每个文件创建一个工作表。

我是VBA的新手,所以这对我来说并不容易,但我得到了以下内容:

Sub Makro1()

Dim objWorkbook As Workbook
Dim mybook As Workbook
Set basebook = ThisWorkbook

Dim strPath As String
strPath = ThisWorkbook.Path + "\data"

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strPath)

Dim ws As Worksheet

For Each objFile In objFolder.Files

If objFso.GetExtensionName(objFile.Path) = "xls" Then

Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
objWorkbook.Worksheets(1).Copy
Set ws = basebook.Sheets.Add
ws.Paste

objWorkbook.Close
Set objWorkbook = Nothing
Set ws = Nothing


End If

Next

objExcel.Quit

End Sub

所以它在我的主文件中创建了工作表,但它不会将子目录中文件的内容粘贴到这些工作表中,但是我用Ctrl + C复制了这些文件。

我会感谢解决方案或提示。

提前致谢
大卫

1 个答案:

答案 0 :(得分:0)

您必须将数据从源表复制到目标表。以下是VBA项目的一些示例代码:

Dim wbDest As Workbook
Dim wbSource As Workbook
Dim shDest As Worksheet
Dim shSource As Worksheet

Set wbDest = Workbooks("Missing_Paper_Spreadsheet.xlsm")
Set wbSource = Workbooks("Missing_Paper_Assist.xls")

Set shDest = wbDest.Sheets("Weekly")
Set shSource = wbSource.Sheets("Main")

Dim rngNumUnits As Range

Set rngNumUnits = shSource.Range("A9:A50")

你看到最后一行,它写着“shSource.Range()”?您可以使用.Range()访问工作表上的单元格。要执行您要执行的操作,可以将一个单元格范围从一个工作表分配给变量,然后将这些范围值复制到另一个工作表上的单元格。