2

このエラーは非常に一般的であるため、既存のソリューションの多くがさまざまな問題に対処しているようです。

私の場合、Excel 2010 で機能し、Excel 2007 では機能しないマクロを作成しました。

コードの要約は次のとおりです。

cn = "ODBC;Driver={SQL Server Native Client 10.0};Server=serverName;Database=dbName;Trusted_Connection=yes;"
sql = "select top 10 * from tableName"

Dim S As Worksheet
Set S = ActiveWorkbook.Sheets("Medical")

With S.QueryTables.Add(Connection:=cn, Destination:=S.Range("B1"))

        .CommandText = sql
        .Refresh BackgroundQuery:=False

     End With

このコードは Excel 2010 では完全に実行されますが、Excel 2007 ではエラーになります。

2007 の接続文字列構造を変更する必要がありますか、それとも別の問題がありますか?

4

5 に答える 5

3

解決:

私が Excel 2010 で使用していたすべてのマシンには、ODBC データ ソースの可能なドライバーとして「SQL Server Native Client 10.0」があります。Excel 2007 を搭載したマシンには、「SQL Server」しかありません。

接続文字列を次のように変更しました。

cn = "ODBC;Driver=SQL Server;Server=serverName;Database=dbName;Trusted_Connection=yes;"

そしてそれは魅力のように機能しました。

回答者に感謝します。

于 2013-04-23T01:44:38.897 に答える
0

プロパティ.Refresh BackgroundQuery:=Falseを に変更します.Refresh。これに関しては 2007 年から 2010 年まで何も変更されていないため、プロパティを変更しても問題が解決しない場合は、ワークブックの一部が破損しているなど、別のことが起こっています。

于 2013-04-22T16:17:30.160 に答える
0

マクロからストアド プロシージャを呼び出すときに同じ問題が発生しました。解決策をインターネットで検索するのに丸一日を費やした後、ついに解決策を見つけました。

SET NOCOUNT ON を使用しました。

出来た!

于 2015-07-02T13:09:07.897 に答える