我有以下问题。我有一个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复制了这些文件。
我会感谢解决方案或提示。
提前致谢
大卫
答案 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()访问工作表上的单元格。要执行您要执行的操作,可以将一个单元格范围从一个工作表分配给变量,然后将这些范围值复制到另一个工作表上的单元格。