尝试写入文件时权限被拒绝

Permission denied when attempting to write to a file

我正在 运行 循环将字符串变量输出到文件。循环的每个 运行 都会更改字符串。在某些循环的 运行 上,我收到错误消息 Invalid procedure call or function.

rst 是 table 的记录集,fl 是一个对象,我将其设置为这样的文件:

Set fso = CreateObject(fileType)
Set fl = fso.createtextfile(path)

这是循环:

Do Until rst.EOF
            start = rst.Fields(fieldName))
            fl.writeLine start
            rst.MoveNext
Loop

尝试使用 Open 命令代替:

Dim FF As Byte

FF = FreeFile

Open "C:\Users\MacroMan\SomeFolder\myTextFile.txt" For Output As #FF
    '// Rest of code here
    start = rst.Fields(fieldName)
    Print #FF, start
    '// Rest of code here
Close #FF

创建文件:

Dim fso as Object
Dim f1 as Object
Dim fileType as String
Dim path as String
Dim myFile as Byte

fileType = "Scripting.FileSystemObject"
path = "C:\myFolder\fileName"
Set fso = CreateObject(fileType)
Set fl = fso.createtextfile(path)

路径 - 确保路径指向您拥有 read/write 权限的文件夹。据我所知,以下说明适用于 windows 7-10。它们可能也适用于 XP。

  1. Right-click 文件夹(在本例中文件夹是 "myFolder" 在驱动器 C 中)
  2. 单击属性
  3. 单击“安全”选项卡
  4. 组或用户名下的框中是电脑用户的列表。 System是默认的系统用户,不用管它。单击您的用户。如果您是管理员,则可以单击 管理员
  5. >user< 的 Permissions 下列出了可以对文件执行的所有操作,并在 Allow 列,如果此用户有权执行此操作。否则,将在 Deny 列中进行检查。
  6. 要更改权限,请单击 组或其他用户名下的 编辑... 按钮:

确保在创建文件后关闭文件以启用 read/write。

f1.close
set f1 = Nothing

现在您可以打开文件并在文件末尾添加行而不删除之前的行。

myFile = FreeFile
Open path For Output As #myFile
Write #myFile, "Something or other " & chr(9) & variableName & rst.Fields(0).Value
  • #myFile是我们在代码中给文件取的名字
  • write 是在文件最后一行后添加一行的命令。

您可以使用 & 连接不同的变量类型,只要它们可以 implicitly 转换为 string/char 类型。我用过:

  • 一个字符串:"something or other"
  • 一个字符:chr(9),一个制表符
  • 一个变量:variableName,字符串类型
  • rst 记录集中第一个字段的内容:rst.Fields(0).Value。在括号 rst.Fields().Value 中,您可以将 1 用于第二个字段,2 用于第三个字段,依此类推。或者字符串 "columnName".

完成循环并写入文件后,确保关闭它。

Close #myFile