通过VBA导入sql文件时字符串中的奇怪字符



我正在尝试通过 VBA 将 SQL 文件导入 excel 以将 SQL 代码作为一个字符串返回,但是当我将 SQL 作为字符串导入时,每个字符之间都有小方块(回车符?它以前在其他文件中使用不同的 SQL 工作过,所以我不确定我做错了什么。

Function ImportSQLText(FileExt, FileSQLName)
'//Needs Microsoft Scripting Runtime Ref
'//and microsoft active x data objects 2.8
Dim ReadText As String, newLine As String
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Set txtStream = fso.OpenTextFile(FileExt & fileName, ForReading, False)
ReadText = " "
Do While Not txtStream.AtEndOfStream
newLine = txtStream.ReadLine
If InStr(newLine, "[input-sDte]") > 0 Then
ReadText = ReadText & Replace(newLine, "[input-sDte]", sDte) & vbCrLf
ElseIf InStr(newLine, "[input-eDte]") > 0 Then
ReadText = ReadText & Replace(newLine, "[input-eDte]", eDte) & vbCrLf
Else
ReadText = ReadText & newLine & vbCrLf
End If
Loop
txtStream.Close
ImportSQLText = ReadText
End Function

SQL 代码如下所示:

;if object_id('tempdb.#usr_fld') is not null
drop table #usr_fld
-- Creating Temp Table
CREATE TABLE #usr_fld([PLACE-REF] NVARCHAR(50)
,[PROJCODE] nvarchar(100)
,[CUORACLE] nvarchar(100)); 

任何输入将不胜感激 - 谷歌搜索这次对我没有帮助。

你几乎肯定有一个 unicode 文件。在 FSO 的OpenTextfile方法上有一个可选的第四个参数:

Const TriStateTrue = -1
Set txtStream = fso.OpenTextFile(FileExt & fileName, ForReading, False, TriStateTrue)

只需将您的线路换成这两个,它可能会解决问题。

最新更新