1

I am fairly new to VBA and am stumped on how to resolve the "Run-time error '5': Invalid procedure call or argument" error that I am receiving when executing this code. The cell in question has chinese characters and the code seems to work fine on the english alphabet. The stream is outputting to a text file. (should be an xml file in the future, but I still don't have all the correct formatting implemented)

Dim fso As New FileSystemObject, stream As TextStream    
Set stream = fso.createTextFile("C:\Users\username\XMLs\" _
   & WS_Src.Cells(c.Row, 5).Value & "_" & WS_Src.Cells(c.Row, 4).Value & "_Feature.xml", True)

...

stream.WriteLine "<title>" & vbCrLf & "<![CDATA[ " & WS_Src.Cells(c.Row, 6).Value & "]]>" & vbCrLf   & "</title>" 'error is on this line
stream.Close

Thanks! Chris

4

1 に答える 1

4

メソッドを使用するための構文は、 のCreateTextFileようなもの object.CreateTextFile(filename[, overwrite[, unicode]]) です。どこ:

  • filename: 必須。作成するファイルを識別する文字列式。
  • overwriteオプション。既存のファイルを上書きできるかどうかを示すブール値。ファイルを上書きできる場合、値は True です。上書きできない場合は false。省略した場合、既存のファイルは上書きされません。
  • unicodeオプション。ファイルが Unicode ファイルまたは ASCII ファイルとして作成されるかどうかを示すブール値。ファイルが Unicode ファイルとして作成された場合、値は True です。ASCII ファイルとして作成された場合は False。省略した場合は、ASCII ファイルと見なされます。

そして、ここで最後のパラメータを省略しましたが、受信テキストである beingChineseは単にASCII. むしろ、Trueその値を提供する必要があります。つまり、unicodeparam です。これは間違いなく問題を解決するでしょう。

ところで!コードには、他の実行時エラーを引き起こす可能性のあるいくつかの要因がまだあります。

  • セル値を結合してファイル名を生成するときは、パス文字列に無効な文字が含まれていないことを確認してください。
  • さらに、overwrite値を に設定するだけtrueでは不十分で、フォルダーが既に存在することも確認してください。そうしないと、プロシージャーが再び実行時エラーに遭遇する可能性があります。

お役に立てれば。

于 2012-07-28T03:13:35.343 に答える