Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
(VBA)与他人上的CreateTextFile相关的运行时错误76';车站_Vba_Filesystemobject - Fatal编程技术网

(VBA)与他人上的CreateTextFile相关的运行时错误76';车站

(VBA)与他人上的CreateTextFile相关的运行时错误76';车站,vba,filesystemobject,Vba,Filesystemobject,晚上好, 我已经试着修复这个bug好几个小时了,但没有成功。尤其令人沮丧的是,这个bug并不是在我自己的工作站上表现出来的,而是在每个人的工作站上表现出来的。 代码的目的是创建(FileSystemObject->CreateTextFile)两个.txt文件,并将(TextStream)某些信息写入其中。以下是相关代码行: Dim username, filename, filename_2, filepath, complete_filepath, complete_filepath_2 A

晚上好,

我已经试着修复这个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 security Center,它们的设置都与我相同。以下是激活的参考:

  • visualbasic应用程序
  • Microsoft Excel 14.0对象库
  • OLE自动化
  • Microsoft Office 14.0对象库
  • Microsoft脚本运行时
在所有其他机器上,这些也被激活

我能做什么?只是想澄清一下:代码在我自己的工作站上按预期工作


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

从您的输入不清楚
用户名
日期
的实际值。如果这些有空格,您观察到可能有问题。首先尝试使用
fso.FolderExists(“C:\Users\”&username&“\Documents\”
方法,并确保它返回True

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

Dim用户名、文件名、文件名\u 2、文件路径、完整\u文件路径、完整\u文件路径\u 2作为字符串

实际上,只会将dim作为字符串完成\u filepath\u 2。其他的变成了变种

线路也有同样的问题:

将txtStream、txtStream_2设置为TextStream

只有txtStream_2将变暗为Textstream

每行需要调暗一个变量:

将用户名设置为字符串

将文件名设置为字符串

Dim filename_2作为字符串

将文件路径设置为字符串

Dim complete_文件路径为字符串

Dim complete_filepath_2作为字符串


只有这样,您才能获得所需的变量类型。事实证明,问题出在日期格式上。我个人电脑上的格式是DD-MM-YYYY,而其他工作站上的格式是DD/MM/YYYY。正斜杠显然不能出现在文件名中,因此该问题已通过以下方式解决:

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

:(

如果您怀疑FSO可能是原因,您是否尝试过使用“内置”创建文件VBA文件方法?你有哪些内置的文件方法?我对这方面的知识不是很深。谢谢!KHH-我的意思是类似的东西看起来很有趣。我刚刚测试过,看起来我可以使用它。谢谢。你好,彼得。
用户名总是6个字符长,3个字母和3个数字:XXX####移动了
Date
变量,但它的格式为YYYY/MM/DD。宏在我的工作站和电脑上都能工作,所以我看不出问题出在文件名上。@KHH目前我唯一的猜测是-FSO没有写入目标文件夹的权限。只要您使用Win“特殊”文件夹中的一个-“C:\用户",通常具有特殊的访问权限。还有一件值得检查的事情-
Microsoft脚本运行时
确实添加到了工作站上的引用中。哇,非常感谢。这可能会在将来给我带来很多麻烦。这真的是声明变量的唯一方法吗?它只是在hat格式。您不需要为每行设置一个变量:
dim username as String、filename as String、filename_2 as String、filepath as String、complete_filepath as String、complete_filepath_2 as String
是一个完全有效的强类型声明行。
Replace
函数适用于此特定实例(但它会导致ODDDMM的顺序根据用户的设置而混乱),但更可靠的方法将处理任何区域日期格式中的任何潜在无效字符,并保持DD和MM的顺序一致。更安全的方法是使用`filename=Format$(DateNow,“yyyyymmdd”)其中,YYYYMMDD是符合ISO-8601的日期格式。