Vba 打开txt文件,创建新的txt文件,将旧文本保存到新文件

Vba 打开txt文件,创建新的txt文件,将旧文本保存到新文件,vba,excel,Vba,Excel,我正在寻找一段代码,该代码提示一个OpenFile框输入现有的txt文件(file1),然后创建一个新文件,并提示另存为框输入新的txt文件(file2)。文件1的内容将在以后保存到文件2中 到目前为止,我在第一部分做得很好。我知道第二部分错了,但我不知道该怎么办 我的代码到目前为止 infilename$ = Application.GetOpenFilename("Neutral Files (*.txt),*.txt", , "Open Neutral File", "OPEN", Fal

我正在寻找一段代码,该代码提示一个OpenFile框输入现有的txt文件(file1),然后创建一个新文件,并提示另存为框输入新的txt文件(file2)。文件1的内容将在以后保存到文件2中

到目前为止,我在第一部分做得很好。我知道第二部分错了,但我不知道该怎么办

我的代码到目前为止

infilename$ = Application.GetOpenFilename("Neutral Files (*.txt),*.txt", , "Open
Neutral File", "OPEN", False)
If infilename$ = "False" Then
    msg = MsgBox("No input file selected. Press OK to retry or cancel to quit",vbOKCancel)
    If msg = vbOK Then
        Do While msg <> vbCancel  'loop until user presses cancel
            infilename$ = Application.GetOpenFilename("Neutral Files (*.r01),*.r01", , "Open Neutral File", "OPEN", False)
            If infilename$ = "False" Then
                msg = MsgBox("No input file selected. Press OK to retry or cancel to quit", vbOKCancel)
            End If
        Loop
    ElseIf msg = vbCancel Then Exit Sub
    End If
End If

outfilename$.SaveAs =:"FileName"infilename.txt",False"

If outfilename$ = "False" Then
    msg = MsgBox("No output file selected. Press OK to retry or cancel to quit", vbOKCancel)

    If msg = vbOK Then
        Do While msg <> vbCancel  'loop until user presses cancel
            outfilename$ = Application.SaveAsFilename("Neutral Files (*.r01),*.r01", , "Save As Output", "SAVE", False)

            If outfilename$ = "False" Then
                msg = MsgBox("No output file selected. Press OK to retry or cancel to quit", vbOKCancel)
            End If
        Loop
    ElseIf msg = vbCancel Then Exit Sub
    End If
End If
infilename$=Application.GetOpenFilename(“中性文件(*.txt),*.txt”,“打开”
中性文件(“打开”,错误)
如果infilename$=“False”,则
msg=MsgBox(“未选择输入文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果msg=vbOK,则
在用户按下“取消”之前,请执行“取消”循环
infilename$=Application.GetOpenFilename(“非特定文件(*.r01),*.r01”,“打开非特定文件”,“打开”,False)
如果infilename$=“False”,则
msg=MsgBox(“未选择输入文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果结束
环
ElseIf msg=vbCancel然后退出Sub
如果结束
如果结束
outfilename$.SaveAs=:“FileName”infilename.txt“,False”
如果outfilename$=“False”,则
msg=MsgBox(“未选择输出文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果msg=vbOK,则
在用户按下“取消”之前,请执行“取消”循环
outfilename$=Application.SaveAsFilename(“中性文件(*.r01),*.r01”,“另存为输出”,“保存”,False)
如果outfilename$=“False”,则
msg=MsgBox(“未选择输出文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果结束
环
ElseIf msg=vbCancel然后退出Sub
如果结束
如果结束
线路

outfilename$.SaveAs =:"FileName"infilename.txt",False"
看起来确实很不对

您可以尝试此操作来弹出一个保存文件的对话框

outfilename$ = Application.GetSaveAsFilename(infilename$, "Neutral Files (*.txt),*.txt", , "Save file", "SAVE")
更新:完整的代码是

Sub test()
Dim outfilename as Variant
Dim infilename as Variant
Dim msg As Variant
infilename = Application.GetOpenFilename("Neutral Files (*.txt),*.txt", , "Open Neutral File", "OPEN", False)
If infilename = "False" Then
    msg = MsgBox("No input file selected. Press OK to retry or cancel to quit", vbOKCancel)
    If msg = vbOK Then
        Do While msg <> vbCancel  'loop until user presses cancel
            infilename = Application.GetOpenFilename("Neutral Files (*.r01),*.r01", , "Open Neutral File", "OPEN", False)
            If infilename = "False" Then
                msg = MsgBox("No input file selected. Press OK to retry or cancel to quit", vbOKCancel)
            End If
        Loop
    ElseIf msg = vbCancel Then Exit Sub
    End If
End If

 outfilename = Application.GetSaveAsFilename(infilename, "Neutral Files (*.txt),*.txt", , "Save file", "SAVE")

If outfilename = "False" Then
    msg = MsgBox("No output file selected. Press OK to retry or cancel to quit", vbOKCancel)

    If msg = vbOK Then
        Do While msg <> vbCancel  'loop until user presses cancel
            outfilename = Application.SaveAsFilename(infilename, "Neutral Files (*.r01),*.r01", , "Save As Output", "SAVE")

            If outfilename = "False" Then
                msg = MsgBox("No output file selected. Press OK to retry or cancel to quit", vbOKCancel)
            End If
        Loop
    ElseIf msg = vbCancel Then Exit Sub
    End If
End If

End Sub
子测试()
Dim outfilename作为变体
作为变体的Dim-infilename
Dim-msg作为变体
infilename=Application.GetOpenFilename(“中性文件(*.txt),*.txt”,“打开中性文件”,“打开”,False)
如果infilename=“False”,则
msg=MsgBox(“未选择输入文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果msg=vbOK,则
在用户按下“取消”之前,请执行“取消”循环
infilename=Application.GetOpenFilename(“非特定文件(*.r01),*.r01”,“打开非特定文件”,“打开”,False)
如果infilename=“False”,则
msg=MsgBox(“未选择输入文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果结束
环
ElseIf msg=vbCancel然后退出Sub
如果结束
如果结束
outfilename=Application.GetSaveAsFilename(infilename,“中性文件(*.txt),*.txt”,“保存文件”,“保存”)
如果outfilename=“False”,则
msg=MsgBox(“未选择输出文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果msg=vbOK,则
在用户按下“取消”之前,请执行“取消”循环
outfilename=Application.SaveAsFilename(内嵌名,“中性文件(*.r01),*.r01”,“另存为输出”,“保存”)
如果outfilename=“False”,则
msg=MsgBox(“未选择输出文件。按“确定”重试,或按“取消”退出”,vbOKCancel)
如果结束
环
ElseIf msg=vbCancel然后退出Sub
如果结束
如果结束
端接头

相信我,我已经试过了。我一直在犯愚蠢的“预期表达”错误,我不知道为什么!当然,它应该具有与打开文件命令相同的格式,对吗?您运行了吗?我看到有点语法错误。现在它很好,但我现在有一个文件类型错误令人费解。。。当然,我已经运行了您的全部代码-请参阅答案udpdate了解完整的代码。实际上,
Application.GetSaveAsFilename
返回一个变量。因此,您应该将infilename和outfilename声明为Variant
Dim infilename声明为Variant
。另外,通过将
Option Explicit
作为模块的第一行来强制执行变量声明也是一种很好的做法。