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

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

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

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

Access

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

Q&A

解決済

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

goulok
goulok

総合スコア12

VBA

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

Access

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

2回答

0グッド

0クリップ

344閲覧

投稿2022/11/29 03:15

編集2022/11/29 03:20

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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

1

ベストアンサー

エラーが出たときに、デバッグボタンをクリックしたときにどのコードが反転表示されますか。
もし、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

総合スコア32038

spoofy_dragon😄を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

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

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

0

unkoをぶりぶりしましょう

投稿2022/11/29 04:01

退会済みユーザー

退会済みユーザー

総合スコア0

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

Access

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