1

Excel データを Access にプッシュするマクロを作成しようとしています。もともとは、Access をオブジェクトとして開き、そのように実行するように単純に書いたのですが、恐ろしく遅くなりました。だから今、私はADO接続を使用するように書いています。現在のファイル以外のファイルから書き込むと動作しますが、これはリボン ボタンであり、現在のファイルのみを使用するため、動作させる必要があります。以下は私のコードです。私が得るエラーは次のとおりです。

実行時エラー -2147217911 (80040e09) 更新できません。データベースまたはオブジェクトが読み取り専用です。

Excelファイルを更新していないので、これはばかげていますが、Microsoft. 何かご意見は?

Transfers2 = ActiveWorkbook.FullName & "].[" & ActiveSheet.Name & "$]"
'C:\temp\ContractToolSetV2.xlsm].[Sheet1$]  - this would work, since it is not the file open

Dim con As Object ''Create ADODB Connection
Set con = CreateObject("ADODB.Connection")

SQLcmd = "Insert INTO tblExcelImportCT Select * FROM [Excel 12.0 Xml;Readonly=1;HDR=YES;IMEX=2;ACCDB=YES;DATABASE= " & Transfers2 

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\nrpi.local\shared_files\ADCC\Commercial Auction Division\BA Support\BAmangment.accdb;"
con.Execute _
    SQLcmd
4

2 に答える 2

1

はい、ファイルが開いているため、このメッセージが表示されます。あなたは出来る:

  • ワークシートを新しいワークブックにコピーし、これを閉じて保存し、データを転送してから、次を使用してこの (一時) ファイルを削除します。Kill
  • ADO レコードセットを作成し、ワークシート データをループしてAddNew、Access テーブルに挿入 ( ) します。このような例は、インターネット上で見つけることができます。
于 2013-07-19T00:16:35.130 に答える