0

我有以下问题。我有一个 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 复制的 ast 内容。

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

提前感谢
大卫

4

1 回答 1

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() 访问工作表上的单元格。要执行您要执行的操作,您可以将一个工作表中的单元格范围分配给一个变量,然后将这些范围值复制到不同工作表上的单元格。

于 2013-06-05T14:20:29.417 回答