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

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

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

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

Q&A

解決済

1回答

1629閲覧

WorkbookQuery.Delete (True)が環境によってエラーとなる原因について

VBAP0001

総合スコア3

VBA

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

0グッド

0クリップ

投稿2024/01/09 09:54

実現したいこと

該当ソースファンクション内の「qry.Delete (True)」処理が環境によってエラーとなる原因または回避策が知りたい。

発生している問題・分からないこと

同じ環境(OFFICEはMICROSOFT365,同じ参照設定)の異なるPCでクエリの削除を実行すると1台は処理できるが、もう1台では以下のエラーが発生する。
イメージ説明

エラーメッセージ

error

1EXCEL VBAで作成したファンクションを実行すると、環境によって「qry.Delete (True)」の部分で以下のエラーが発生する。 2エラー番号:445 3説明:オブジェクトはこの動作をサポートしていません。

該当のソースコード

Function DeleteQueryTable(ByVal queryname As String) As Boolean Dim wb As Workbook Dim qry As WorkbookQuery Dim tempquery As String 'ワークシートに接続 Set wb = ThisWorkbook '削除の実行 For Each qry In wb.Queries 'クエリ名を取得する tempquery = qry.name '判定する If tempquery = queryname Then 'クエリを削除する qry.Delete (True) DeleteQueryTable = True Exit Function End If Next End Function

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

teratailやGoogleで検索しましたが、情報が全くありませんでした。また、ソースコードを色々と変更しましたが、同じでした。
環境も一通り調べましたが、差異は発見できませんでした。

補足

特になし

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

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

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

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

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

xail2222

2024/01/09 15:11

エラーが再現できない・・・どんなクエリをどんなタイミングで削除しているんですか?
VBAP0001

2024/01/09 15:57

ご質問ありがとうございます。 クエリはPDFファイルをエクセルシートに展開するものをVBAで追加したもので、 展開後にクエリを削除する処理でエラーになります。 エラーになる環境でもクエリを手作業で削除することはできます。 エラーになる環境とエラーにならない環境で実行しているVBAは同じもので、 相違点はPC環境のみなので、何らかの環境が影響しているものと思料しています。
xail2222

2024/01/09 22:04 編集

よくありそうな調査として ステップ実行とか、qry.Delete (True)の行にブレイクポイントを設定して、少し待ってから再開しても同じエラーで止まるのですか?
VBAP0001

2024/01/10 09:27

調査方法のご教示ありがとうございます。 こちらで調べたところ、正常に動作しないPCでは、qry.Delete (True)は動作しませんが、qry.Deleteは動作することが判りました。何らかの理由でクエリのメソッドが相違しているようです。 qry.Deleteではなく、qry.Delete (True)を使った理由は、クエリだけでなく接続も削除したかったためですが、qry.Deleteだと何故か接続が残ってしまうケースがあるようなので、回避策としてqry.Deleteを使用して、別途接続だけを削除する方法を検討することにしました。 色々とご教示ありがとうございます。また、根本的な原因は不明ですが問題が発生しているPCは環境を変更するのが難しいので、根本原因は追究せずに回避策で対応することとしました。
guest

回答1

0

自己解決

qry.Delete (True)は動作しませんが、qry.Deleteは動作することが判ったので、回避策としてqry.Deleteとクエリの接続を削除する方法で対応する方針です。根本原因は不明です。

投稿2024/01/10 09:29

VBAP0001

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問