【发布时间】:2016-02-18 18:02:26
【问题描述】:
我是新来的,一般来说是 vba。我基本上只是为我的新工作读懂了这件事。所以请多多包涵。 我正在寻找解决我的问题的方法,并找到了单独的零件解决方案,但我无法将它们拼凑在一起。
我的目标如下: 将工作簿的 3 个工作表复制到一个新工作表(尚不存在),并以特定名称将其保存在当前日期下。 这是我到目前为止为运行良好而整理的代码。
Sub export()
Dim path As String
Dim file As String
Dim ws As Worksheet
Dim rng As Range
path = "D:\@Inbox\"
file = Format(Date, "YYYY-MM-DD") & " " & Format(Time, "hhmm") & " " & "accr " & Format(DateSerial(Year(Date), Month(Date), 1), "YYYY_MM") & " city" & ".xlsx"
Application.ScreenUpdating = False
Sheets(Array("Accr", "Pivot", "Segments")).Select
Sheets(Array("Accr", "Pivot", "Segments")).Copy
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
For Each ws In Worksheets
ws.Rectangles.Delete
Next
Sheets(Array("Pivot", "Segments")).Visible = False
ActiveWorkbook.SaveAs Filename:=path & file, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Sheets("Menu =>").Select
Range("C1").Select
End Sub
第一个条件:不应该手动创建新工作簿并首先打开,但宏应该这样做。
第二个条件:第一个工作簿应该选择自动过滤器,然后只复制可见的单元格。 这可以作为一个完整的工作表,还是我必须复制单元格并在新工作簿中创建一个工作表? 这是过滤器的代码
Sheets("Accr").Select
Reset_Filter
Selection.AutoFilter Field:=1, Criteria1:="12"
Selection.AutoFilter Field:=2, Criteria1:="booked"
Selection.AutoFilter Field:=35, Criteria1:="Frankfurt"
Set rng = Application.Intersect(ActiveSheet.UsedRange)
rng.SpecialCells(xlCellTypeVisible).Copy
第 3 个条件:其他两个工作表应在没有公式但有格式的情况下复制。 (包含在第一个代码示例中)
我现在的问题是,将所有内容拼凑在一起,以便新工作簿中有 3 个工作表,其中第一个 ws 包含源 ws 的可见单元格和自动过滤器,另外两个工作表仅包含数据和格式和被隐藏。 我的推理信息:第一个工作表将公式引用到其他两个工作表,以便文件的收件人预先选择字段和列表来填写单元格。
非常感谢您。
编辑:背景信息:
Accr 表包含应计信息,并在 A 列中包含月份信息。由于以后也应该能够在一个数据透视表中比较几年,因此格式从单纯的数字更改为日期(格式:MM.YYYY) .
【问题讨论】:
-
抱歉回答有点晚了。这几天很忙。回答您的问题:自动过滤器仅供我复制要导出的正确数据。数据由每个站点的几行组成,必须发送给负责人。他们不需要查看其他信息。在第一张表中只有数据、条件格式和公式,它们会转到其他两个工作表,以帮助人们填写具有特定名称的数据以获得一致的条目。