EXCEL VB 在保存文本中第53行出错。调试出错语句,请问如何修改? “ Open nm For Output As #1 ”

Sublqxs()Dima()AsString,b()AsString,i&,s$,nm$nm=Application.GetOpenFilename("TextFile... Sub lqxs()
Dim a() As String, b() As String, i&, s$, nm$
nm = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "请选择文件", , MultiSelect:=False)
If Len(nm) = False Then MsgBox "你没有选择文件!": Exit Sub
Open nm For Input As #1
a = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
For i = 0 To UBound(a)
If a(i) <> "" Then
b = Split(a(i), ",")
If b(4) = "7" Or b(4) = "8" Or b(4) = "9" Then b(4) = "6"
a(i) = Join(b, ",")
s = s & a(i) & vbCrLf
End If
Next
nm = ThisWorkbook.Path & "\" & nm & "转换后.txt"
Open nm For Output As #1
Print #1, s
Close (1)
End Sub
能否留邮箱,我附件发给你
展开
 我来答
表里如一
2012-08-27 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11664
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部
把Close (1) 改成Close #1

出错的提示是是什么?
好的。evilfarmer@126.com

晕,你的问题是nm的名称中含有了路径。
你nm = ThisWorkbook.Path & "\" & nm & "转换后.txt"
这段代码就表示这个文件名带有两个盘符和路径。导致无法生成这样的文件。导致
Open nm For Output As #1

出错。。
给你改了。。
Sub lqxs()
Dim a() As String, b() As String, i&, s$, nm$
nm = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "请选择文件", , MultiSelect:=False)
If Len(nm) = False Then MsgBox "你没有选择文件!": Exit Sub
Open nm For Input As #1
a = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
For i = 0 To UBound(a)
If a(i) <> "" Then
b = Split(a(i), ",")
If b(4) = "7" Or b(4) = "8" Or b(4) = "9" Then b(4) = "6"
a(i) = Join(b, ",")
s = s & a(i) & vbCrLf
End If
Next
nm = ThisWorkbook.Path & "\" & Mid(nm, InStrRev(nm, "\") + 1, Len(nm) - InStrRev(nm, "\") - 4) & "转换后.txt"
Open nm For Output As #1
Print #1, s
Close #1
End Sub

这里Mid(nm, InStrRev(nm, "\") + 1, Len(nm) - InStrRev(nm, "\") - 4)表示取得原来nm中的文件的不带路径的名称,也不含后缀.txt
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式