2016-04-18 20 views
0

DAOを使用してxlsファイル内のSQL ServerテーブルをエクスポートできるVB6関数を置き換える必要があります。SQL ServerテーブルをMicrosoft Excel xlsxファイルにエクスポート

Excel 2007-2010 ...ファイル(xlsx)を使用するために、この機能を使用しようとしましたが、機能しませんでした。ここで

はDAOのfunctionnalityです:

//Opening the SQLServer database with DAO 
Set oBase= DBEngine.OpenDatabase(DSNName, dbDriverNoPrompt, False, "ODBC,PROVIDER=Microsoft.JET.OLEDB.3.51;DSN=DSNName;UID=user;PWD=pwd;DATABASE=SQLServerBDDName;Server=SQLServerName;") 

//Query to export data 
oBase.Execute("SELECT * INTO [SheetName] IN 'xlsFileName' 'Microsoft Excel 8.0;' FROM [SQLServerTableName]") 

この機能は、XLSXファイルをXLSにおける97-2003のExcelファイルと完璧に動作しますが、ありません。

OPENROWSETステートメントまたはストアドプロシージャを使用せずにADOで同じことを行う可能性はありますか?あなたの助け

+0

どうしますか? – Rob

+0

Excel 8.0をExcel 12.0およびプロバイダ(Microsoft.ACE.OLEDB.12.0)で変更すると、エラーが発生します(ISAMドライバが見つかりません)。私はすでに別のソフトウェア用のAccessドライバ12をインストールしています – user1069516

+0

https://support.microsoft.com/en-us/kb/247412には、あなたが望むことをするためのさまざまな方法がたくさんあります。しかし、DAOはその1つではありません。 DAOはADOが出てきた1995年には古いものでした。 Excel 12.0をサポートするには、ADOに変更する必要があります。もしそうなら、あまり難しいことではなく、リンクに例があります。 ADO接続文字列については、www.connectionstrings.comをご覧ください。 – BobRodes

答えて

0

ため

おかげで私は最終的にOfficeがインストールさなしExcel 2007のADOを使用してファイルとにVB6 SQL Serverのエクスポートで作成する方法を発見しました。それから私は、SQL Serverデータベースに接続するためのODBC接続とDSNを使用することにより、シートにテーブルをエクスポートするクエリを実行

Dim l_oBase  As New ADODB.connection 

l_oBase.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myExcelFile.xlsx;Extended Properties=""Excel 12.0 Xml""" 
Call l_oBase.Open 

まず、私はXLSXファイルを作成するために、ADOを使用し

l_sReq = "SELECT * INTO [mySheet] FROM [ODBC;DSN=MyDSN;UID=LoginSQL;PWD=pwdSQL;Server=MySQLServer;Database=myDatabase].[TableName];" 
Call l_oBase.Execute(l_sReq) 
Call l_oBase.Close 

デバッグモードでクエリを実行すると、実行時にエラーが発生しますが、xlsxファイルが正しく作成され、データ形式が読み込まれます。

関連する問題