这是我的困境......
- 我是宏方面的新手,正在学习必要的宏
- 这个论坛很有帮助,但是我对很多脚本仍然不了解。
这就是我想要完成的...我有 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 工作表所在的子文件夹中。
如果文件夹被移动,有没有办法使用缩短的路径?我在网上找到的所有参考资料都显示了完整路径。