ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: twl

[求助] 对工作表按条件筛选,将筛选结果复制到新文档。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-9-6 08:47 | 显示全部楼层
limonet 发表于 2023-9-6 08:26
能解决问题就行了

按题意,另存文件应该放在桌面上。

TA的精华主题

TA的得分主题

发表于 2023-9-6 10:51 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2023-9-6 08:47
按题意,另存文件应该放在桌面上。

附件说了放桌面

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-7 22:05 | 显示全部楼层
limonet 发表于 2023-9-5 23:14
已经接近完成,但是你的2与3文件同名,拜托你用点心。

复制了第二条的信息没注意到文件名没改。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-7 22:13 | 显示全部楼层
limonet 发表于 2023-9-5 23:39
Sub Limonet()
    Dim StrSQL$, Cn As Object, IntoF$
    IntoF$ = "Into Sheet1 From  [Excel 12.0;Da ...

实在太强大了,顿时打开了新世界的大门。完成度99%,稍微修改一下就能使用。

1、日期上一个月问题:修改Format(Month(Date) + 1为 - 1能解决
2、放桌面而不是当前工作簿路径:将Data Source=" & ThisWorkbook.Path 修改为Data Source=" & "C:\" (以放在C盘根目录为例)能解决。


非常棒!!!

Sub Limonet2()
    Dim StrSQL$, Cn As Object, IntoF$
    IntoF$ = "Into Sheet1 From  [Excel 12.0;Database=" & ThisWorkbook.FullName & "].[产品表$C15:Y] Where"
    Set Cn = CreateObject("ADODB.connection")
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 XML;Data Source=" & "C:\" & "\可食用产品-" & Year(Date) & Format(Month(Date) - 1, "00") & ".xlsx"
    StrSQL = "select 产品号,产品名称,产品编号1,产品编号2,产品编号3,产品编号4,产品编号5,产品编号6,是否可使用,使用范围1,使用范围2,使用范围3 " & IntoF$ & " 是否可使用='是'"
    Cn.Execute (StrSQL): Cn.Close
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 XML;Data Source=" & "C:\" & "\小瓶产品-" & Year(Date) & Format(Month(Date) - 1, "00") & ".xlsx"
    StrSQL = "Select 产品号,产品名称,产品编号1,产品编号2,产品编号3,产品编号4,产品编号5,产品编号6,生产日期,到期日 " & IntoF$ & " [三] like '小瓶'+'%' and [七] Like '%'&'[A-C]'"
    Cn.Execute (StrSQL): Cn.Close
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 XML;Data Source=" & "C:\" & "\小瓶浓度产品-" & Year(Date) & Format(Month(Date) - 1, "00") & ".xlsx"
    StrSQL = "Select 产品号,产品名称,产品编号1,产品编号2,产品编号3,产品编号4,产品编号5,产品编号6,生产日期,到期日 " & IntoF$ & " [三] like '小瓶'+'%' or [四] Like '浓度'&'%'"
    Cn.Execute (StrSQL): Cn.Close
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-7 22:30 | 显示全部楼层
ykcbf1100 发表于 2023-9-6 07:47
这个难是不难,就是写代码比较费时间。

附件供参考。。。

辛苦了,非常感谢大神的帮助。
经过测试,如果在原工作簿中执行的话可以实现到。

不过“要求1、2、3的结果”这三个工作表实际上是不在工作簿中的。代码应该是对这三个工作表做了引用,如果把这三个工作表删除了,运行时就会出错。
截图1.JPG

测试2.rar

38.43 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-9-8 07:43 | 显示全部楼层
twl 发表于 2023-9-7 22:30
辛苦了,非常感谢大神的帮助。
经过测试,如果在原工作簿中执行的话可以实现到。

你这不是废话嘛,代码是根据附件写出来的,你现在把三个表删除了,不出错才怪。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-8 19:26 | 显示全部楼层
ykcbf1100 发表于 2023-9-8 07:43
你这不是废话嘛,代码是根据附件写出来的,你现在把三个表删除了,不出错才怪。

,主要是因为怕运行结果出错,所以把结果放在了原工作簿中作为一个参考,实际是不存在的。。

TA的精华主题

TA的得分主题

发表于 2023-9-8 21:00 | 显示全部楼层
twl 发表于 2023-9-8 19:26
,主要是因为怕运行结果出错,所以把结果放在了原工作簿中作为一个参考,实际是不存在的。。

你可以用3楼的代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-8 22:56 | 显示全部楼层
ykcbf1100 发表于 2023-9-8 21:00
你可以用3楼的代码。

花了一晚时间把你的代码截开了三部分,再用call把它们连起来用

TA的精华主题

TA的得分主题

发表于 2024-3-9 21:34 | 显示全部楼层
limonet 发表于 2023-9-5 23:39
Sub Limonet()
    Dim StrSQL$, Cn As Object, IntoF$
    IntoF$ = "Into Sheet1 From  [Excel 12.0;Da ...

老师,您好。我按照你写的另外写了一份很长的输出字段,结果它创建不成功,报这个错误。能帮我看看下面是我写的StrSQL有什么错吗?
select 数据账期,地市编码,地市,区县编码,区县,片区编码,片区,服务中心编码,服务中心,客户经理工号,客户经理,集团代码,集团名称,集团等级,产品号码,专线号码,专线分类,资费名称,专线开户时间,带宽,资费金额,专线状态,是否离网,开户渠道编码,开户渠道名称,离网时间,开户工号,行业BU,八大行业,送费比例,送费金额,产品资费代码,融合专线号码,三新四融标识,渠道类型 Into Sheet1 From [Excel 12.0;Database=D:\Desktop\放在桌面.xlsm].[产品表$A39:AI] Where [专线开户时间] like '202403%' AND [区县] Like '高新%'

strSQLbug

strSQLbug

D:\Pictures\Camera Roll\strSQLbug.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 15:05 , Processed in 0.035682 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表