2017-11-02 10 views
0

接続エラーをテストします。ExcelからSQL ServerにMass Export 2014

SQL.ActiveConnection = Cn 
FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0','Data Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb 
End Sub 
+0

どこでこのような構文が見つかりましたか?また、あなたはどのようなパラメータに値をバインドしていますか? – Parfait

+0

改訂コードをご覧ください。私が拘束しているパラメータは、ExcelシートのColumn "Value1"です。 Excelシートの変更を対応するSQLのフィールドにインポートしようとしています。 – codinglady

+0

カラム名やテーブル名などの識別子はバインドできず、データ値のみをバインドすることはできません。 – Parfait

答えて

1

SSISを使用している場合は、そのルートに進む方が良いでしょう。このようにすると、もはやエクスポートプロセスではなくなります。 SQL ServerとSSISで実行されるすべてのタスクがインポートされます。

+0

インポートを定期的に行う必要がある場合は、これが最適なソリューションです。 –

+0

提案していただきありがとうございますが、SSISを使用することはできません。 – codinglady

1

ExcelワークブックにOPENROWSETのSQL Server分散クエリがあるとします。

古いワークブックの種類の代わりに
INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue]) 
SELECT wb.ColumnName 
FROM (OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Data Source=C:\Path\To\File.xlsx;Extended Properties=Excel 12.0;HDR=YES', Sheet1$)) wb 

:以下は、MSSQLのコマンドを実行するには、そのような権限を持っているし、あなたのExcelファイルは、ヘッダを持っていると仮定し

INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue]) 
SELECT wb.ColumnName 
FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Data Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb 

このアクションクエリを実行するには、全体SQLを配置VBA文字列を入力して接続を実行します。パラメータ化、したがってADOコマンドオブジェクトの必要はありません。

strSQL = "INSERT INTO ... wb" 

Cn.Execute strSQL 
+0

インポートが1回限りのイベントの場合、これが最適なソリューションです。 –

+0

Parafaitの提案をありがとうございます。私はそれを試しましたが、うまくいきません。あなたの提案を念頭に置いて書き直したコードを表示しました。 – codinglady

+0

こんにちはParafait、改訂されたコードをご覧ください。あなたの提案を念頭に置いてください。 – codinglady

関連する問題