(VBA)与其他工​​作站上的CreateTextFile相关的运行时错误76

时间:2013-01-10 16:52:25

标签: vba filesystemobject

晚上好,

我一直试图修复这个bug几个小时,但没有运气。特别令人沮丧的是,这个bug并没有在我自己的工作站上表现出来,而是出现在每个其他人身上。 代码的目的是创建(FileSystemObject - > CreateTextFile)两个.txt文件并将(TextStream)特定信息写入每个文件中。以下是相关的代码行:

Dim username, filename, filename_2, filepath, complete_filepath, complete_filepath_2 As String
Dim fso As New FileSystemObject
Dim fso_2 As New FileSystemObject
Dim txtStream, txtStream_2 As TextStream

'Gets username
username = CreateObject("WScript.NetWork").username

filename = "db_Redel"
filename_2 = "db_ship"

complete_filepath = "C:\Users\" & username & "\Documents\" & filename & ".txt"
complete_filepath_2 = "C:\Users\" & username & "\Documents\" & filename_2 & ".txt"

Set txtStream = fso.CreateTextFile(complete_filepath, True) 'RUNTIME ERROR 76
Set txtStream_2 = fso_2.CreateTextFile(complete_filepath_2, True)

我确定已经测试的计算机上存在声明的文件路径。我怀疑某些东西使FileSystemObject对象无法正常运行,例如权限,但我检查了其他工作站上的Office安全中心,并且它们都具有与我相同的设置。以下是激活的参考:

  • Visual Basic For Application
  • Microsoft Excel 14.0对象库
  • OLE自动化
  • Microsoft Office 14.0对象库
  • Microsoft Scripting Runtime

这些也在所有其他机器上激活。

我该怎么办?需要明确的是:代码在我自己的工作站上按预期工作。

更新:我让我的一个朋友尝试了,它在他的电脑上运行得很好。

3 个答案:

答案 0 :(得分:2)

原来问题在于dateformat。我自己电脑上的格式是DD-MM-YYYY,而其他工作站的格式是DD / MM / YYYY。正斜率显然不能在文件名中,因此问题已解决:

DateNow = Date()
filename = Replace(DateNow, "/", "-")

:(

答案 1 :(得分:0)

根据您的输入,我们不清楚usernameDate的实际值。如果这些空格 - 您可能会遇到问题。首先尝试使用fso.FolderExists("C:\Users\" & username & "\Documents\")方法并确保它返回 True

答案 2 :(得分:0)

您的代码在我的电脑上正常运行。但是,在调整变量时,您会犯一个常见的错误。这一行:

  

Dim username,filename,filename_2,filepath,complete_filepath,complete_filepath_2 As String

实际上只会将 complete_filepath_2 变暗为字符串。其他人成为变种类型。

与行相同的问题:

  

Dim txtStream,txtStream_2 As TextStream

只有 txtStream_2 会变暗为文字流

你需要每行调暗一个变量:

Dim username as String

Dim filename as String

Dim filename_2 as String

将文件路径调暗为String

将complete_filepath变为String

Dim complete_filepath_2 As String

只有这样你才能获得你期望的变量类型