使用宏从另一个工作簿复制工作表

使用宏从另一个工作簿复制工作表

这是我的困境......

  1. 我是宏方面的新手,正在学习必要的宏
  2. 这个论坛很有帮助,但是我对很多脚本仍然不了解。

这就是我想要完成的...我有 1 个文件夹(“月度报告”),其中包含
“月度报告.xlxs”、
“2017 年 2 月 1 日_每日报告.xls” 、“2017 年 2 月 2 日_每日
报告.xls”、
“2017 年 2 月 3 日_每日报告.xls”等...

每份每日报告都有多个工作表

我想要做的是仅复制每份日报的第一张表,然后将其粘贴到月度报告中作为自己的工作表,每张工作表分别标记为“第 1 天”、“第 2 天”、“第 3 天”

每月工作簿设置为
工作表 1 - 这是我的工作表,用于汇编每日报告中的数据。
工作表 2 - 保留用于第 1 天的数据工作
表 3 - 保留用于第 2 天的数据工作
表 4 - 保留用于第 3 天的日期,
一直到工作表 32 - 保留用于第 31 天的数据。

我需要做的就是将工作表 1 从“2017 年 2 月 1 日_每日报告.xls”导入到“月度报告.xlxs”的工作表 2 中,
然后将工作表 1 从“2017 年 2 月 2 日_每日报告.xls”导入到“月度报告.xlxs”的工作表 3 中,
然后将工作表 1 从“2017 年 2 月 3 日_每日报告.xls”导入到“月度报告.xlxs”的工作表 4 中,
一直到 31 天。

我不想复制每日报告中的任何其他工作表 - 仅复制工作表 1

我的月度工作簿第 1 页对其进行了适当的过滤(这部分工作正常)


抱歉,我应该更具体地说明一下我现在正在使用的东西......

Sub CopyWorkbook()

Debug.Print "Started "
'  dimensions variables as type
Dim directory As String, fileName As String, sheet As Worksheet
Debug.Print " completed 
' Turns off screen updating and display alrets
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Debug.Print " Turns off screen updating"

' Initialsizes the variable directory
fileName = "C:\Users\U486474\Documents\00 Monthly from xls\Daily Adjusted Files\DailyReport__2017-01-28_00-00__2017-01-29_00-00  Copy Test .xlsx"       ' actual file to be copied
Debug.Print " Sets file to be copied"

Workbooks.Open (directory & fileName)      ' opens the Excel file
Debug.Print " Opens workbook of file to be copied"

Workbooks(fileName).Worksheets("Daily Report").Copy _
    after:=Workbooks("Monthly Adjusted Reports    Copy macro test.xlsm").Worksheets("Day 1")
Debug.Print " Copies files into existing workbook "

Workbooks(fileName).Close       ' closes the worksheet
Debug.Print " Closes workbook "
' Turn on screen updating and displaying alerts again
Application.ScreenUpdating = True
Application.DisplayAlerts = True


End Sub

我不明白为什么它没有复制文件。

它打开了文件但无法复制。该脚本目前仅适用于 1 个文件,一旦我有 1 天的工作时间,我就会为整个月创建循环

答案1

终于明白了,
我必须分别处理复制和粘贴功能


公共子复制工作簿()

Debug.Print "已开始复制到工作表-每个工作表一次"'维度变量为类型 Dim SourceFileName As String'设置文件夹的文件路径

Dim DestFileName As String Dim Range As Range Dim SourceFile As Workbook '设置源文件文件夹 Dim DestFile As Workbook '设置目标文件夹文件

        ' Initialsizes the variable directory

SourceFileName = FiletoCopy '要复制的实际文件的完整路径 Debug.Print "设置要复制的文件" & SourceFileName

Set SourceFile = Workbooks.Open(SourceFileName) '打开 Excel 文件

             ' copies  the worksheet

SourceFile.Sheets("Daily Report").Range("A1:Z100").Copy ' 从源工作表复制单元格

SourceFile.Close SaveChanges:=False '关闭 Excel 文件

    ' Pastes copied file into worksheet
    Debug.Print " Daysloop = " & DaysLoop
Dim PasteDay As String
PasteDay = "Day " & DaysLoop
PasteDay = WorksheetFunction.Text(DaysLoop, "00")

ActiveSheet.Paste Destination:=Worksheets("Day " & DaysLoop).Range("A1") ' 要粘贴到的工作表

Debug.Print “已完成复制到工作表 -- 每个工作表一次”

子目录结束


它可能有点笨重,但是它可以与我制作的用于调整天数的循环配合得很好。

不过我确实有一个问题。????

我必须使用文件夹中的完整路径来从工作表中复制。它们位于 Excel 工作表所在的子文件夹中。

如果文件夹被移动,有没有办法使用缩短的路径?我在网上找到的所有参考资料都显示了完整路径。

相关内容