excel - VBA根据过滤结果创建excel文件
问题描述
在尝试进行相对简单的自动化工作时,我遇到了一个问题。背后的想法是过滤表格的字段,复制所有可见结果,将它们粘贴到新工作表中,将过滤后的值作为文件名保存新工作表,关闭新文件并重复直到我的列表结束。请帮忙!
这也是我的代码:
Dim ws As Worksheet
Dim y As Integer
Set ws = ThisWorkbook.Worksheets("Restructure_F")
y = 2
Do While Not IsEmpty(Cells(26, y).Value)
ws.Range("A1").AutoFilter Field:=15, Criteria1:=Cells(26, y).Value
ws.Range("A1:O2486").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Workbooks.Add.Worksheets(1).Paste
ActiveWorkbook.SaveAs Filename:="C:\tools\Output\" & Cells(2, 13).Value
ActiveWorkbook.Close True
y = y + 1
Loop
End Sub
解决方案
我在你的代码中添加了一些车道。如果我理解您的描述,它会按您的意愿工作。
Sub test()
Dim ws As Worksheet
Dim y As Integer
' save variable
Dim sPath As String
Dim TempWb As Workbook
Dim TempWs As Worksheet
Set ws = ThisWorkbook.Worksheets("Restructure_F")
y = 2
Do While Not IsEmpty(ws.Cells(26, y).Value)
ws.Range("A1").AutoFilter Field:=15, Criteria1:=ws.Cells(26, y).Value
ws.Range("A1:O2486").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
sPath = "C:\tools\Output\" & ws.Cells(26, y).Text & ".xlsx"
Set TempWb = Workbooks.Add
Set TempWs = TempWb.Worksheets(1)
TempWs.Range("A1").PasteSpecial
TempWb.SaveAs Filename:=sPath
TempWb.Close True
Set TempWb = Nothing
ws.Range("A1").AutoFilter
y = y + 1
Loop
End Sub
推荐阅读
- java - 如何在二叉树中实现一种方法来返回变量后访问的下一个节点?
- java - 在 intellij 上使用 openjpa 进行手动动态增强
- react-admin - 使用 react-admin-s3-file-upload 反应管理员
- excel - Excel - 从行和列条件返回列引用
- c# - C# 如何使用 SkiaSharp 控件缩放到光标位置?
- php - 在php html中识别索引的问题
- python - 遍历子目录中的文件并加载它们
- typescript - puppeteer:单击 shadowroot 中的按钮
- node.js - nodejs:如何运行测试然后构建 dockerfile
- deployment - 将 OLD EJB 部署到 Weblogic 12. 停用 EJB 检查器