2017-08-28 318 views
1

我每天都会做一个报表,我必须将几张表复制并粘贴到名为Report(今天的日期)的新工作簿中。VBA宏将表单复制并粘贴到新工作簿中

在我的报告中,我有4张:客户,订单,国家,ID。

客户和国家是从主文件中简单复制和粘贴的,但订单和ID是从主文件中的一张我的工作表中过滤的数据。订单被过滤到“完成” ID是除了ID 200的一切,500

我试图建立一个基于该解决方案的宏这里找到: http://www.hivmr.com/db/ack717pc8f88jpdsf7838pcaspkcsdmd

复制和粘贴作品,但我无法复制并粘贴多个工作表/重命名工作表并过滤数据。

编辑:

Sub CopyInNewWB() 
    'has been tested 
    Dim newWS, WS As Worksheet 
    Application.ScreenUpdating = False 
    Set WS = ThisWorkbook.Sheets("Sheet1") 
    Set newWS = Workbooks.Add.Sheets("Sheet1") 
    WS.Cells.Copy 
    newWS.Cells.PasteSpecial xlValues Application.CutCopyMode = False 
    Application.ScreenUpdating = True 
End Sub 
+0

你能向我们展示你一直在使用的代码吗? – Slaqr

+0

我道歉,我想我的贴吧 – GrandeurH

+0

子CopyInNewWB() “已经过测试 昏暗newWS,WS作为工作表 Application.ScreenUpdating =假 集WS = ThisWorkbook.Sheets( “工作表Sheet1”) 设置newWS = Workbooks.Add .Sheets(“工作表Sheet1”) WS.Cells.Copy newWS.Cells.PasteSpecial xlValues Application.CutCopyMode =假 Application.ScreenUpdating =真 结束小组 – GrandeurH

回答

0

不知道你的过滤片如何设置,但这种方法会复制你的主人张他们究竟如何目前过滤到一个新的工作簿:

Sub CopyInNewWB() 
Dim wbO As Workbook, wbN As Workbook 

On Error GoTo ErrHandler 

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
Application.DisplayAlerts = False 

Set wbO = ActiveWorkbook 
Set wbN = Workbooks.Add 

wbO.Sheets("Customers").Copy wbN.Sheets(1) 
wbO.Sheets("Orders").Copy wbN.Sheets(2) 
wbO.Sheets("Country").Copy wbN.Sheets(3) 
wbO.Sheets("ID").Copy wbN.Sheets(4) 

wbN.Sheets("Sheet1").Delete 
wbN.Sheets("Customers").Activate 

Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 
Application.DisplayAlerts = True 

ErrHandler: 
Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 
Application.DisplayAlerts = True 

End Sub 
+0

嗨,非常感谢你的这个工作完美,但是有什么办法可以告诉宏来过滤数据吗?我的数据设置在表格中,因此过滤器只是您的基本过滤器。每天我都要过滤订单(刚才我已经有一个过滤标题),然后复制并粘贴到一张新表中,然后我将过滤除ID为200和500以外的所有标识为ID的列。如果有任何方法可以做到这一点,将不胜感激,并感谢您的帮助! – GrandeurH

+0

我需要查看一些示例数据,并知道哪些来自主数据表正被过滤/复制到报表中的哪个位置 –

相关问题