0

晚上好,

我已经尝试修复这个错误几个小时了,但没有运气。这尤其令人沮丧,因为该错误不会在我自己的工作站上表现出来,而是在其他每个人的工作站上表现出来。代码的目的是创建(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 应用程序
  • Microsoft Excel 14.0 对象库
  • OLE 自动化
  • Microsoft Office 14.0 对象库
  • Microsoft 脚本运行时

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

我能做些什么?明确一点:代码在我自己的工作站上按预期工作。

更新:我让我的一个朋友尝试了它,它在他的 PC 上也可以正常工作。

4

3 回答 3

2

原来问题出在日期格式上。我自己电脑上的格式是 DD-MM-YYYY,而其他工作站上的格式是 DD/MM/YYYY。正斜杠显然不能在文件名中,因此问题已通过以下方式解决:

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

:(

于 2013-01-11T13:57:39.457 回答
0

你的代码在我的电脑上运行良好。但是,您在调暗变量时犯了一个常见错误。该行:

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

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

与线路相同的问题:

调暗 txtStream, txtStream_2 As TextStream

只有txtStream_2会变暗为 Textstream

您需要为每行调暗一个变量:

将用户名变暗为字符串

将文件名变暗为字符串

将文件名_2 调暗为字符串

将文件路径变暗为字符串

将 complete_filepath 调暗为字符串

将 complete_filepath_2 调暗为字符串

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

于 2013-01-10T21:18:41.340 回答
0

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

于 2013-01-10T18:33:30.900 回答