首页 > 解决方案 > 通过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)); 

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

标签: sqlexcelstringvba

解决方案


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

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

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


推荐阅读