如何检查目录中是否有VBA中的InputBox给出的文件名?

时间:2013-01-16 20:24:15

标签: excel vba

我的代码要求用户输入文件名。我们会说目录“C:\ Users \ aUser \ Desktop \ myFolder”中有5个文本文件。这些文本文件名为A,B,C,D和E.

如果文本文件存在,那么我想用我已经制作的脚本来写内容。如果文本文件不存在,我想用他们输入的文件名制作一个,并用[我已经写过的脚本]填充它。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您解释它的方式似乎是最简单的工作流程:

1)删除文件(如果存在)

Sub test()

Dim FSO As FileSystemObject

Dim sPath As String

sPath = "U:\Test.txt"

Set FSO = New FileSystemObject
If FSO.FileExists(sPath) Then
    FSO.DeleteFile (sPath)
End If

End Sub

将脚本(我假设也是一个txt文件)复制到路径中: FileCopy“U:\ Script”,sPath

如果脚本中包含脚本变量:

Set txtFile = FSO.CreateTextFile(sPath, True)
txtFile.WriteLine(sText)
FSO.Close
End Sub

如果脚本包含在数组中,则可以遍历数组并生成多个writelines 不要忘记引用Microsoft Scripting Runtime库。

答案 1 :(得分:0)

像这样的东西

  • 找到登录用户的文件夹,而不管操作系统
  • 检查用户输入文件是否包含在主列表中(由StrFiles保存)
  • 然后创建一个新文件(如果它不存在)或
  • 为您提供了一个逻辑分支,用于添加覆盖脚本

    Sub

<强>码

GetFiles()
Dim wsShell As Object
Dim objFSO As Object
Dim objFil As Object
Dim strFolder As String
Dim StrFile As String
Dim StrFiles()
StrFiles = Array("A.txt", "B.txt", "C.txt")
Set wsShell = CreateObject("wscript.shell")
strFolder = wsShell.specialFolders("Desktop") & "\myFolder"
StrFile = Application.InputBox("Please enter A.txt, B.txt", "File Selection", , , , , 2)
If IsError(Application.Match(StrFile, StrFiles, 0)) Then
MsgBox StrFile & " is invalid", vbCritical
Exit Sub
End If
If Len(Dir(strFolder & "\" & StrFile)) = 0 Then
'make file
Set objFSO = CreateObject("scripting.filesystemobject")
Set objFil = objFSO.createtextfile(strFolder & "\" & StrFile, 2)
objFil.Close
Else
'write over file
'add your code here
End If
End Sub