2

本质上,代码只是在一个充满信息的目录中创建一个文本文件。就像标题说的我可以在 excel 2003 中打开工作表,它会运行良好,但如果它在 2010 年运行,则会弹出一个错误,提示运行时错误“70”权限被拒绝。

这是代码:

Dim i As Integer
Dim dataType As String
Dim dataName As String

Application.ScreenUpdating = False

ChDir ThisWorkbook.Path  'sets the directory to where the workpaper is
ChDir ".." 'Moves up a directory
ChDir (".\folder\")

direct = ThisWorkbook.Path

Worksheets("SchSB XML").Select

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(direct & "\" & flName &  ".xml", True)

a.writeline ("<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" _
    & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "yes" & Chr(34) & "?>")
a.writeline ("<SchSB xmlns:ns1=" & Chr(34) & "http://efast.gov/2011" _
    & Chr(34) & " xmlns:xsi=" & Chr(34) & "http://ww.w3.org/2001/XMLSchema-instance" & Chr(34) & ">")

在此之后有一个循环,但它包含与上面相同的 a.writeline 代码,它旋转了大约 100 个单元格

调试显示 Set fs = CreateObject("Scripting.FileSystemObject") 正在破坏并显示权限被拒绝错误。

4

2 回答 2

1

即使使用“后期绑定”,您仍然需要检查“Microsoft Scripting Runtime”条目是否存在于引用列表中,并且它是否指向正确的文件路径,例如,所有计算机上的用户都可以访问的网络共享喜欢:

Z:\Lib\scrrun.dll

反对:

C:\Users\"Username"\...
于 2012-08-29T08:03:59.697 回答
0

这可能是因为您有一行代码的效果是:Set fs = CreateObject("Scripting.FileSystemObject")Set a = fs.CreateTextFile(direct & "\" & flName & ".xml", True)在循环内。这可能会导致问题,因为 VBA 认为您正在尝试覆盖现有文件、打开已经打开的文件或类似的东西。为了解决这个问题和/或循环之外CreateObject的`CreateTextFile ,无论是之前还是之后(很可能是之前),然后从循环内部写入你想要的任何数据。

于 2013-02-15T22:22:14.957 回答