2016-04-14 11 views
0

を読んで、私はこのコードを実行しようとしている:VBAは、Accessクエリのエラーを実行します。データベースまたはオブジェクトは

Dim cn As ADODB.Connection 
Set cn = New ADODB.Connection 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 
Dim strConn As String 
Dim strAcc As String 

'Connecting to the DB 
cn.ConnectionTimeout = 7200 
cn.CommandTimeout = 7200 
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\Documents\proof.accdb;Mode=Share Deny None; Persist Security Info=False" 
cn.Open strConn 

'Creating the query string 
strAcc = "SELECT * " _ 
& " INTO Table1 " _ 
& " FROM [Excel 8.0;HDR=YES;DATABASE=D:\Documents\database.xlsm].[Sheet1$];" 

'Executing the query 

rs.Open strAcc, cn, adOpenDynamic 

実行する場合、それはエラーを取得:「リフレッシュできませんが、データベースまたはオブジェクトは読み取り専用」に次の行:

rs.Open strAcc, cn, adOpenDynamic 

この問題を解決する方法はわかりません。興味深いのは、別のクエリ(既存のテーブルから選択)を実行すると完全に機能するということです。だから私は、問題は、新しいテーブルがSELECT INTOコマンドで作成されているという事実に関連していると思います。私はまた、接続で "Mode = Share Deny None"(あなたが見るかもしれない)を書こうとしましたが、問題を解決しませんでした。

答えて

0

この問題は、バックエンドデータベースのディレクトリ「d:\ Documents \ proof.accdb」が書き込み権限を持たないディレクトリ内にあるために発生している可能性があります。したがって、あなたはDB /ファイルからのみ読み込み、「書き込み」できません。つまり、現在行っているようにINSERTまたはUPDATESを実行できます。

そのディレクトリに移動して右クリックし、[プロパティ]を選択します。可能であれば、[セキュリティ]タブを確認して、そのディレクトリにアクセス権を割り当てます。

関連する問題