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 に答える