• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS2003のVBAで改修依頼管理ツールを作成しています。)

ACCESS2003のVBAで改修依頼管理ツールを作成しています

このQ&Aのポイント
  • ACCESS2003のVBAを使用して改修依頼管理ツールを作成中です。
  • EXCEL出力時にエラーが発生し、オブジェクト変数またはWithブロック変数が設定されていませんと表示されます。
  • 問題の原因がわからず困っています。同じ処理を続けるとエラーが出るため、EXCELアプリケーションの参照が曖昧になっているのかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

大きく4箇所の修正 ↓(1) >.Workbooks.Add を Set xlBook = .Workbooks.Add へ ↓(2) >ActiveWorkbook.Sheets("Sheet1").Name = "改修依頼一覧" 'エラー発生箇所 を Set xlSheet = xlBook.Sheets("Sheet1") xlSheet.Name = "改修依頼一覧" へ ↓(3) >rs.Open QName, cn, adOpenKeyset, adLockReadOnly >ActiveWorkbook.Sheets("改修依頼一覧").Range("A2").CopyFromRecordset rs を rs.CursorLocation = adUseClient rs.Open QName, cn xlSheet.Range("A2").CopyFromRecordset rs へ ↓(4) >Worksheets("改修依頼一覧").Cells(1, 1).Select を xlSheet.Cells(1, 1).Select へ

anman0201
質問者

お礼

ご回答ありがとうございます。 上記の修正で無事動くプログラムになりました。 またなにかあればお願いします。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

訂正です。 後半の「さらには」以下は忘れてください。 .Workbooks.Add を見ていながらすっかり見落としていました。 新規Bookを開いているのでシート名の変更は できますね。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

オブジェクトが設定されていない。 >ActiveWorkbook.Sheets("Sheet1").Name = "改修依頼一覧"   を xlApp.ActiveWorkbook.Sheets("Sheet1").Name = "改修依頼一覧" に変更・・・だけど、 ActiveWorkbook.Sheets("Sheet1").Name = "改修依頼一覧"   を With xlApp .Workbooks.Add .Visible = True End With の .Workbooks.Add の下に同じように設定すればいいのでは。 さらには、Sheet1→改修依頼一覧 の変換が行われた後、逆の 改修依頼一覧→Sheet1の変換がされていないと、二度目にこの プロシージャの中に入ったときはSheet1は存在しない、 ということで、該当するところでエラーが生じる。 つまるところ、最初からExcelのSheet1を"改修依頼一覧" にしておき、 .Workbooks.Add .ActiveWorkbook.Sheets("Sheet1").Name = "改修依頼一覧" を除くか、 または、このプロシージャを抜けるときに改修依頼一覧→Sheet1 の変換をしてプロシージャを抜けるかのどちらかである。 新規Book作成からはいっているのではないので、最初から シート名を設定しておき、除くようにしておいたほうが コードがすっきりしていいのでは、思いますが。 と、このような感じですが。いかがでしょうか。

anman0201
質問者

お礼

ご回答ありがとうございます。 大変参考になりました。 やはり参照が曖昧になっていたのですね。

関連するQ&A