请诸位高手帮忙看看这段代码是为了实现简单的数据复制粘贴以及高级筛选,为何未达到目的。

claider claider 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
需要通过VBA Excel实现以下功能:
我有一段excel文件,数据包含各机构信息,内容类似如下:
机构代码 其他字段
abc100669 abc1006691000
abc100669 abc1006691007
abc100669 abc1006691008
abc988145 abc9881451000
abc988145 abc9881451003
abc988145 abc9881451004
abc988146 abc9881461000
abc988836 abc9888361003
abc988838 abc9888381000
abc988838 abc9888381001
abc988839 abc9888391002
1、根据每个机构代码生成一个文件,文件名即该机构代码,假设为NewFileOrgId,该文件中包含且仅包含以上数据中该机构信息。在本例中,即对于以上数据,生成名为abc100669.xlsx,abc988145.xlsx,abc988146.xlsx,abc988836.xlsx,abc988838.xlsx,abc988839.xlsx。

2、对于每个文件NewFileOrgId,例如abc100669.xlsx,通过对单元格赋值和复制黏贴操作,在这一步使得文件内容为:
机构代码 其他字段
abc100669
机构代码 其他字段
abc100669 abc1006691000
abc100669 abc1006691007
abc100669 abc1006691008
abc988145 abc9881451000
abc988145 abc9881451003
abc988145 abc9881451004
abc988146 abc9881461000
abc988836 abc9888361003
abc988838 abc9888381000
abc988838 abc9888381001
abc988839 abc9888391002

3、对于第2步处理过的文件进行高级筛选,即列表区域为 (A3:B14),条件区域为(A1:B2),经过筛选后,文件abc100669.xlsx的内容变成:
机构代码 其他字段
abc100669
机构代码 其他字段
abc100669 abc1006691000
abc100669 abc1006691007
abc100669 abc1006691008


相应地其他文件abc988145.xlsx,abc988146.xlsx,abc988836.xlsx,abc988838.xlsx,abc988839.xlsx内容各自生成类似如上的格式。
【现在碰到的麻烦】
Sub ForgeMulFilesToORGWithParameter(ORGid)
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy

Workbooks.Add

Range("a1").Select
ActiveCell.FormulaR1C1 = "机构号"
Range("B1").Select
ActiveCell.FormulaR1C1 = "其他字段"

Range("a2").Select
ActiveCell.FormulaR1C1 = ORGid

Range("A3").Select
ActiveSheet.Paste

ActiveSheet.Range("A3:B78").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
ActiveSheet.Range("A1:B2"), Unique:=False

ChDir "E:\VBA\testdir"
StrDate = Format(Date, "yyyymmdd")
StrTime = Format(Time, "hhmmss")
StrFilename = "E:\VBA\testdir\" & ORGid & ".xlsx"
ActiveWorkbook.SaveAs Filename:=StrFilename, FileFormat _
:=xlOpenXMLWorkbook, CreateBackup:=False

ActiveWorkbook.Save
End Sub

'用这个按钮事件过程调用以上函数对于单次调用并生成文件可以成功
Private Sub CmdBtnNewFileOrg_Click()
Call ForgeMulFilesToORGWithParameter("abc100669")
End Sub

'用这样的方法调用,则文件abc100669.xlsx的内容可以成功,但是abc988145.xlsx文件的内容无法成功:
Private Sub CmdBtnNewFileOrg_Click()
Call ForgeMulFilesToORGWithParameter("abc100669")
Call ForgeMulFilesToORGWithParameter("abc988145")
End Sub


后一种调用时,生成的abc988145.xlsx文件的内容为
机构代码 其他字段
abc988145
机构代码 其他字段


请问高手为何ForgeMulFilesToORGWithParameter()过程不可以连续调用两次?有没有好的解决方法?
...全文
评论 11
收藏 已收藏
分享
返回顶部
claider
VBA 2,506 成员 10,830 内容