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

时间:2015-11-24 13:24:18

标签: vba file access-vba filesystemobject

我正在运行一个将字符串变量输出到文件的循环。循环的每次运行都会改变字符串。在某些循环的运行中,我收到错误无效的过程调用或函数

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

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

这是循环:

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

2 个答案:

答案 0 :(得分:1)

尝试使用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

答案 1 :(得分:-1)

创建文件:

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)

路径 - 确保路径指向您具有读/写权限的文件夹。据我所知,以下说明适用于Windows 7-10。它们也可能对XP有好处。

  1. 右键单击该文件夹(在此示例中,文件夹为" myFolder"在驱动器C中)
  2. 单击“属性”
  3. 单击“安全”选项卡
  4. 组或用户名下方的框中是pc用户的列表。 系统是默认的系统用户,请忽略它。点击您的用户。如果您是管理员,则可以点击管理员
  5. >用户< 的权限下,列出了可以对文件执行的所有操作,并检查允许列,如果此用户有允许执行此操作。否则,检查将位于拒绝列中。
  6. 要更改权限,请点击组或其他用户名下的修改... 按钮:
  7. 确保在创建文件后关闭该文件以启用读/写。

    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转换为字符串/ char类型,就可以将不同的变量类型与&连接起来。我用过:

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

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

    Close #myFile