Excel 在.txt文件中特定行的特定位置插入空格
我一直在尝试编写一个程序,打开一个文本文件,在第5、6和7个单词后插入空格,每行以C_PIN开头 我觉得我已经差不多完成了,但是我已经得到了运行时错误5和438 正在读取的示例文本: 公司代码C48 66250110810公司代码0603公司代码H9 43.3959 74.3331 1 0 C_不含铅,Y值,10nF托勒,10%零件名称,06035C103K4T2A C_引脚C48-1 43.3959 75.0951 1 10 sp.0603_H9.1/N$1567 C_引脚C48-2 43.3959 73.5711 10 sp.0603_H9.2 GN 在1 0之后需要额外的空间 以下是我认为代码中存在的问题:Excel 在.txt文件中特定行的特定位置插入空格,excel,vba,regexp,Excel,Vba,Regexp,我一直在尝试编写一个程序,打开一个文本文件,在第5、6和7个单词后插入空格,每行以C_PIN开头 我觉得我已经差不多完成了,但是我已经得到了运行时错误5和438 正在读取的示例文本: 公司代码C48 66250110810公司代码0603公司代码H9 43.3959 74.3331 1 0 C_不含铅,Y值,10nF托勒,10%零件名称,06035C103K4T2A C_引脚C48-1 43.3959 75.0951 1 10 sp.0603_H9.1/N$1567 C_引脚C48-2 43.3
x = " "
Do While Not EOF(infilenum%)
Line Input #infilenum%, a$
If Left$(a$, 5) = "C_PIN" Then
For Each x In InStr
'If InStr(strText, " ") Then
w = w + 1
'w = strText.Split
For w = 5 To w = 7
My.Computer.FileSystem.WriteAllText (infilename$)
strText = My.Computer.FileSystem.ReadAllText(infilename$).Replace(w, x + w)
vb.newline
非常感谢您的帮助
For Each x In InStr
在任何方面都是无效的
您可以使用拆分和联接:
If Left(a, 5) = "C_PIN" Then
va = Split(a, " ")
va(4) = va(4) & " " 'Add extra space
va(5) = va(4) & " "
va(6) = va(4) & " "
a = Join(va, " ") 'Join with extra spaces added
End If
现在您可以编写字符串了
在任何方面都是无效的
您可以使用拆分和联接:
If Left(a, 5) = "C_PIN" Then
va = Split(a, " ")
va(4) = va(4) & " " 'Add extra space
va(5) = va(4) & " "
va(6) = va(4) & " "
a = Join(va, " ") 'Join with extra spaces added
End If
现在您可以编写字符串了。我使用了另一个版本,该版本使用a来进行单发替换 虽然它看起来有点复杂,但除了单次替换之外,它的优点是它只会改变那些 从C_管脚开始 至少还有6个单词 此示例获取初始文件,并使用填充间距保存第二个版本 升级以满足附加要求,使用两个单独的regexp替换
我玩的是另一个版本,它使用a来进行单发替换 虽然它看起来有点复杂,但除了单次替换之外,它的优点是它只会改变那些 从C_管脚开始 至少还有6个单词 此示例获取初始文件,并使用填充间距保存第二个版本 升级以满足附加要求,使用两个单独的regexp替换
请显示完整的代码,包括循环结束和结束,如果…这里有完整代码的链接。请显示完整的代码,包括循环结束和结束,如果…这里有完整代码的链接。谢谢你。我试过密码。我被给予;运行时错误9“下标超出范围”。这显然与我的代码有关,而不是你的。只是出于好奇。我的初始代码有什么问题?我是从几个不同的工作程序中整理出来的。当然有些部分应该已经工作了?For Each迭代集合中的项,但InStr返回一个变量Long。My.Computer.FileSystem来自VB.NET,据我所知,VBA还不是.NET?与正则表达式脚本相比,此解决方案的开销较低-对于这样一个简单的任务来说,这是一个巨大的开销。不过,我承认,RegEx.Replace函数调用可能比运行我的代码的VBA更快。我已经尝试了这两种解决方案,如果有打开/关闭文件操作,我会使用您的代码。谢谢你的意见,谢谢你。我试过密码。我被给予;运行时错误9“下标超出范围”。这显然与我的代码有关,而不是你的。只是出于好奇。我的初始代码有什么问题?我是从几个不同的工作程序中整理出来的。当然有些部分应该已经工作了?For Each迭代集合中的项,但InStr返回一个变量Long。My.Computer.FileSystem来自VB.NET,据我所知,VBA还不是.NET?与正则表达式脚本相比,此解决方案的开销较低-对于这样一个简单的任务来说,这是一个巨大的开销。不过,我承认,RegEx.Replace函数调用可能比运行我的代码的VBA更快。我已经尝试了这两种解决方案,如果有打开/关闭文件操作,我会使用您的代码。感谢您的输入。我刚刚尝试实现这段新代码,但遇到了一个运行时错误53。你能解释一下吗?在线:Set objFil=objFso.opentextfilestrfil你有没有更新StrFil以匹配你机器上的文本文件路径和'StrFil2?还没有。我只是运行了代码,看看它是否能工作。我打算使用其他代码。这将提示用户选择要打开的文件,并为输出创建一个文件。我已经有了第一部分,但没有第二部分。它很有效!!!非常感谢你。这几天我一直在胡闹,终于成功了。这里有一个完整工作程序的链接:我刚刚尝试实现这段新代码,但遇到了一个运行时错误53。你能解释一下吗?在线:Set objFil=objFso.opentextfilestrfil你有没有更新StrFil以匹配你机器上的文本文件路径和'StrFil2?还没有。我只是运行了代码,看看它是否能工作。我打算使用其他代码。这将提示用户选择要打开的文件,并为输出创建一个文件。我已经有了第一部分,但没有第二部分。它很有效!!!非常感谢你。这几天我一直在胡闹,终于成功了。这里有一个完整的工作公关链接 克: