接続エラーをテストします。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
接続エラーをテストします。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
SSISを使用している場合は、そのルートに進む方が良いでしょう。このようにすると、もはやエクスポートプロセスではなくなります。 SQL ServerとSSISで実行されるすべてのタスクがインポートされます。
インポートを定期的に行う必要がある場合は、これが最適なソリューションです。 –
提案していただきありがとうございますが、SSISを使用することはできません。 – codinglady
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
インポートが1回限りのイベントの場合、これが最適なソリューションです。 –
Parafaitの提案をありがとうございます。私はそれを試しましたが、うまくいきません。あなたの提案を念頭に置いて書き直したコードを表示しました。 – codinglady
こんにちはParafait、改訂されたコードをご覧ください。あなたの提案を念頭に置いてください。 – codinglady
どこでこのような構文が見つかりましたか?また、あなたはどのようなパラメータに値をバインドしていますか? – Parfait
改訂コードをご覧ください。私が拘束しているパラメータは、ExcelシートのColumn "Value1"です。 Excelシートの変更を対応するSQLのフィールドにインポートしようとしています。 – codinglady
カラム名やテーブル名などの識別子はバインドできず、データ値のみをバインドすることはできません。 – Parfait