質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

1475閲覧

TransferDatabaseで送り先が存在しないとエラーが出る

goulok

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2022/11/29 03:15

編集2022/12/08 08:27

Access2019で「TransferDatabase acImport」を使って、PostgreSQLよりデータ取得を考えています。
設定を試してみると、以下のようなエラーが発生します。
送り先のテーブルが存在しない、ということかと思いますが「DeleteObject acTable」で削除済みです。
参照)https://teratail.com/questions/191065

これを回避する方法があれば、教えてください。

発生している問題・エラーメッセージ

オブジェクト'H_送り先'が見つかりませんでした。オブジェクトが存在していること、名前やパスが正しいことを確認してください。 'H_送り先'がローカル オブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。

該当のソースコード

VBA

1Const strType As String = "ODBC Database" 2Const strConnect As String = "ODBC;DSN=**;DATABASE=**;SERVER=192.*.*.*;PORT=**;UID=**;PWD=**;" 3 4Private Sub ImportODBC 5 6 DoCmd.DeleteObject acTable, "H_送り先" 7 DoCmd.TransferDatabase acImport, strType, strConnect, acTable, "h1_", "H_送り先" False 8 9End Sub 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

エラーが出たときに、デバッグボタンをクリックしたときにどのコードが反転表示されますか。
もし、DoCmd.DeleteObject acTable, "H_送り先"なら、「H_送り先」テーブルが既に削除済みということではないでしょうか。

存在しない場合に対処するなら、エラー処理を追加すればいいでしょう。

vba

1Private Sub ImportODBC 2 On Error Resume Next 3 DoCmd.DeleteObject acTable, "H_送り先" 4 On Error Goto 0 5 DoCmd.TransferDatabase acImport, strType, strConnect, acTable, "h1_", "H_送り先", False 6 7End Sub

投稿2022/11/29 05:39

hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goulok

2022/11/29 07:06 編集

回答ありがとうございます。説明不足にて失礼いたしました。 `DoCmd.TransferDatabase acImport`の行が反転表示されます。 送り先のテーブルを削除したあとに上記エラーが表示されたので ためしに、送り先のテーブル削除させずにTransferDatabase まで進めると、「オブジェクト 'H_送り先1' が見つかりませんでした」と表示されました。 この対処をすると、以下の1-2が延々と繰り返され、処理を進めることができません。 1)指定テーブルと同名のテーブルを必要とする 2)同名のテーブルを回避して、指定テーブルを作成しようとする どの点を改善すればよいのか、よければご教示ください。
hatena19

2022/11/29 07:43

VBAではなく手作業でインポートを実行した場合はどうなりますか。 あるいは、手作業でリンクテーブルの作成はできますか。
goulok

2022/11/29 09:37

たびたびご回答ありがとうございます。 ODBCへの接続は成功しており、手作業でリンクテーブルの作成も可能です。
hatena19

2022/11/29 16:53

リンクテーブルが作成できるなら、そのリンクテーブルからテーブル作成クエリを作成してそれを実行するというのではだめでしょうか。
goulok

2022/12/01 00:58

たびたび恐れ入ります。 これまではリンクテーブル、テーブル作成クエリを事前に準備し、実行するようコードを設定したのですが この工程がやや手間取るため、自動化を考えておりました。 経緯の説明が足らず、申し訳ありません。
hatena19

2022/12/01 01:15

DoCmd.TransferDatabase acImport の部分を DoCmd.TransferDatabase acLink に変更した場合、リンクテーブルは作成できますか。もし、できるなら、その後、追加クエリを実行するコードを追加すれば、自動化できると思いますが。
goulok

2022/12/01 02:53

「リンクテーブルの作成」→「追加クエリの実行」のご教示ありがとうございます。 ただDoCmd.TransferDatabase acLinkに変更したところ「カレント レコードがありません」というエラーが表示されました。手動で作成したリンクテーブルには、データが存在しています。
goulok

2022/12/07 23:27

上記エラーについてはまだ解消しておらず、もう少し調べてみます。 その際、後の機会にあらためて質問に挙げることにいたします。 今回はご教示いただきありがとうございました。
guest

0

unkoをぶりぶりしましょう

投稿2022/11/29 04:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問