Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在.txt文件中特定行的特定位置插入空格_Excel_Vba_Regexp - Fatal编程技术网

Excel 在.txt文件中特定行的特定位置插入空格

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

我一直在尝试编写一个程序,打开一个文本文件,在第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之后需要额外的空间

以下是我认为代码中存在的问题:

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?还没有。我只是运行了代码,看看它是否能工作。我打算使用其他代码。这将提示用户选择要打开的文件,并为输出创建一个文件。我已经有了第一部分,但没有第二部分。它很有效!!!非常感谢你。这几天我一直在胡闹,终于成功了。这里有一个完整的工作公关链接 克: