2016-03-23 11 views
0

です。これは、私がしばらくの間、ラウンドおよびラウンドしていたものです。本質的には、ExcelのダイナミックAccessテーブルの範囲。Accessデータベースエンジンがオブジェクトオブジェクトを見つけることができませんでした。範囲はExcel

私は、例えば、範囲を参照することでこれを行うことに成功しましたが、少し自立するためには、ダイナミックレンジを使用することをお勧めします。次のように

私が持っているコードは次のとおりです。

Sub ExportDistDatatoSql() 

Dim cn As ADODB.Connection 
Dim STRQUERY As String 

Set cn = New ADODB.Connection 

With cn 
.Provider = "Microsoft.ACE.OLEDB.12.0" 
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\uMyDB.accdb;" 
.Open 
End With 

ssql = "INSERT INTO Crude_Prods_DB Select * from [Excel 12.0;HDR=YES;DATABASE=C:\TEST\mysheet.xlsm].[n_range]" 

cn.Execute ssql 

End Sub 

私は見ていますエラーが装着されていると私は[n_range]ワークブックには存在しないにチェックしています。

[エクセル名前付き範囲からアクセステーブルにデータを挿入しようとしたときに見られるエラー]

任意の提案をいただければ幸いです。

+0

エラーメッセージのスクリーンショットは表示されません。そのエラーに遭遇したら、デバッグモードに入り、イミディエイトウィンドウにこのハイライトされたテキストを1行として貼り付け、その行の最後にEnterキーを押します: 'Debug.Print err.Number; err.Description'あなたは 'Debug.Print'の出力をコピーしてあなたの質問に貼り付けることができます。 – HansUp

+0

...またはCtrl + Cは、通常、メッセージボックスのテキストをクリップボードにコピーします。 –

答えて

1

私はこれを難しい方法で学びました。 A ダイナミックレンジは、Excelの実行時にのみ解決されるため、ファイルを読み込んだだけでは存在しません。

保存され固定された名前付き範囲のみがAccessによって読み取られます。

+0

ご回答ありがとうございます。他にもいくつか質問があります。 上記のコードがexcelから実行されている場合、つまりExcelが開いている場合は、必ずダイナミックレンジが解決されますか?その点を完全に誤解していない限り。 2番目に、名前付き範囲を静的な名前付き範囲に変更すると、同じエラーメッセージが表示されます。 私は、ゆっくりと、列と行で範囲を参照することをお勧めします。 – crawfojk

+0

静的な範囲で動作するはずです。しかしおそらく、ファイルがすでに開かれているのは好きではないでしょうか?別の(閉じた)ファイルからインポートできますか?また、それはあなたが水を得るためにクリークを渡ったかのように私には現れます。なぜ範囲をループしてレコードセットに値を追加するだけではないのですか? – Gustav

関連する問題