用VBA的方法从EXCEL中筛选数据导出带分隔符的TXT文件?

代码如下,但无论怎么改生成的文本文件里每行的头尾都有"|"1|1|2013/3/3|19:01|甲|3|3|2013/3/5|19:03|丙|而我想生成的是头尾没有分隔符... 代码如下,但无论怎么改生成的文本文件里每行的头尾都有"|"1|1|2013/3/3|19:01|甲|3|3|2013/3/5|19:03|丙|而我想生成的是头尾没有分隔符的文档,例如:1|1|2013/3/3|19:01|甲3|3|2013/3/5|19:03|丙请问应该怎么修改代码?Sub Macro1() Dim i&, j&, s$ With Sheet2 For i = 1 To .[A65536].End(xlUp).Row If .Cells(i, 1) = "Y" Then For j = 2 To 6 s = s & .Cells(i, j).Text & "|" Next s = s & vbCrLf End If Next End With Open ThisWorkbook.Path & "\a.txt" For Output As #1 Print #1, s Close #1 展开
 我来答
xjxing213

2019-10-25 · TA获得超过5677个赞
知道大有可为答主
回答量:7079
采纳率:86%
帮助的人:614万
展开全部

For j = 2 To 6

    If j = 2 Or j = 6 Then '这里放头尾行

        s = s & .Cells(i, j).Text

    Else

        s = s & .Cells(i, j).Text & "|"

    End If

Next

希望对你有帮助,请采纳,如下图

更多追问追答
追问
厉害大神!让我豁然开朗!顺便问个题外的问题,这段代码生成的固定文件名的文档,可否改成自定义文件名的么?是用inputbox么?应该怎么写
追答
一般是用日期+时间生成文件名称
云南新华电脑学校
2019-10-26 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
展开全部
某EXCEL文件中有两个(其实是多个,但需要用的就两个)如下图:

同学的领导要求,根据选中的名称显示出这个单位的所有手机号码(为保护隐私用*号替换了)及相关信息。说白了就是表(正常 集团 (2))里的数据太多,他想要根据关面列出的名查看其具体包含哪些号等信息。

解决方案:

先将“正常集团(2)表设置筛选。

然后在10个**的表的SHEET选项卡上点击右键-》查看代码,写下如下代码

代码如下:

具体代码什么意思就不用我解释了吧!

由于后来她又改变主意了,不需要另存成文件了,所以另存文件的部分被我注释掉了!需要用的朋友把注释去掉就可以了!另存储路径需要先创建。我当时没有想那么多,而且他也不需要那么复杂就没有包含创建目录以及判断文件是否存在一类的。如果有这方面的需求可以根据情况自己扩展一下就行了!

----------------

补充:

在写代码时一直想找到多行注释按钮,但一直也没有找到。VBA用的也不多,在编辑器中类似/* */或{ }这样的方法行不行。对此耿耿于怀,刚才在网上查找了一下。终于找到答案了,原来自己太大意了。

在工具栏上右键点击-》编辑 会弹出一个工具栏。其中就包括注释及取消注释的按钮。

有人一直说看不到,不知道是看不到代码还是图片。如是代码,请在代码那行上有个加号,点开即可:下边把代码附上!

[code=vb]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Calc (Target.Text)
End If
End Sub
Function Calc(ByVal SelectName As String)
Sheets(3).Select
ActiveSheet.Range("$B$1:$B$60448").AutoFilter Field:=1, Criteria1:=SelectName
'Sheets(3).Cells.Select
'Application.CutCopyMode = False
'Selection.Copy
'Sheets.Add After:=Sheets(Sheets.Count)
'Sheets(Sheets.Count).Select
'Cells.Select
'ActiveSheet.Paste
'Sheets(Sheets.Count).Name = SelectName
'Sheets(2).Select
'Range("A2").Select
'Workbooks.Add
'ActiveSheet.Paste
'Application.CutCopyMode = False
'ActiveWorkbook.SaveAs Filename:= _
' "D:/DHList/" + SelectName + ".xls", FileFormat:= _
' xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
' , CreateBackup:=False
'ActiveWindow.Close
' Windows("政企全网VPN用户23日.xls").Activate
' Sheets(2).Select
' Range("B1").Select
End Function
[/code]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2019-10-25 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
其实你的问题很简单,希望你稍微仔细点,但愿能成功。
把你的代码中下面一段
For j = 2 To 6
s = s & .Cells(i, j).Text & "|"
Next
s = s & vbCrLf
替换为:
s = s & Cells(i,2) & "|" & Cells(i,3) & "|" & Cells(i,4) & "|" & Cells(i,5) & "|" & Cells(i,6) & vbCrLf
注意是多行换位一行,注意符号要用英文半角
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式