2017-04-19 4 views
0

私はマクロExcelワークブックで。 MS Office 32ビット版と64ビット版はうまく動作しますが、64ビット版のOfficeユーザーの場合は、中間に(.Refresh行の)ポップアップウィンドウが表示されます。可能であれば、このポップアップウィンドウを避けたいのですが、なぜこれが起こっているのか理解しておきたいのですが?マクロ/ VBA経由のSQLクエリ、64ビットMS Officeユーザーは、資格情報プロンプトウィンドウのように見えますが、32ビットMS Officeユーザーの場合は表示されません

クエリ:(:それを引用してはならない、実際に):Conn_strとして

Sub Run_Query(_ 
ByRef SQL_Data_rng As Range, _ 
ByRef Conn_str As String, _ 
ByRef SQL_str As String) 

    With ws1.QueryTables.Add(_ 
    Connection:="" & Conn_str & "", _ 
    Destination:=SQL_Data_rng, _ 
    Sql:=SQL_str) 
     .BackgroundQuery = False 
     .Refresh 
    End With 
End Sub 

Pop Up window

答えて

0

はすでに文字列である、あなたはそれを引用する必要はありません

Connection:= Conn_str, ... 
+0

良い点、私は今、自分のコードを更新しました、ありがとうございました(しかし、そのポップアップウィンドウに影響を与えずに) – JK2017

0

問題の原因がわかったと思います。私の言葉には深く間違いがありましたが、言及しませんでした。私はここに私の発見を掲載するつもりです、うまくいけば、将来誰かを助けるでしょう。

私はConnectionとSQLのクエリ情報をワークシートに保存し、これを文字列に変換するために小さな関数を使用しています。

Function BuildStr(Rng As Range) As String 
    Dim Sub_Str As Range 
    For Each Sub_Str In Rng 
     BuildStr = BuildStr & Sub_Str & vbNewLine 
    Next Sub_Str 
End Function 

& vbNewLineは私のSQL文字列内の文は、新しい行(そうでない場合はなしサイコロ)から開始WHEREなど、FROM、SELECTを確保するために存在し、それはまた、時折、プリントアウト時に、それが簡単にクエリを読み取ることができます。 しかし、Connection文字列で使用しないでください。

だから要するに、接続文字列は次のようになります。

OLEDB;DRIVER=SQL Server;SERVER=SVR_name;Database=DB_name;Trusted_Connection=Yes 

そしてません。このように:私は、これは32の問題ではない理由を理解することはまだ午前

OLEDB; & VbNewLine & DRIVER=SQL Server; & VbNewLine & SERVER=SVR_name; & VbNewLine & Database=DB_name; & VbNewLine & Trusted_Connection=Yes 

を最も重要なことに、私は迷惑なポップアップウィンドウを取り除きました(そして私が知らなかったことを学びました)。

おかげで、 J.

関連する問題