繁体   English   中英

CreateObject可在Excel 2003中工作,但不能在2010中工作

[英]CreateObject working in excel 2003 but not 2010

本质上,代码只是在充满信息的目录中创建一个文本文件。 就像标题所示,我可以在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”)中断,并显示权限被拒绝错误。

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

Z:\Lib\scrrun.dll

反对:

C:\Users\"Username"\...

可能是因为您有一行代码可以达到以下效果:在a中Set fs = CreateObject("Scripting.FileSystemObject")Set a = fs.CreateTextFile(direct & "\\" & flName & ".xml", True)环。 这可能会引起问题,因为VBA认为您正在尝试覆盖现有文件,打开已打开的文件或类似的事情。 为了解决这个问题,可以在循环之前或之后(最可能是之前)在循环外部创建 CreateObject和/或`CreateTextFile,然后从循环内部将所需的任何数据写入其中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM