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

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

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

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

Q&A

解決済

1回答

1107閲覧

AccessVBAで作ったExcelファイルのセル結合時の確認メッセージを非表示にしたい。

ataru2222

総合スコア272

Access

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

0グッド

0クリップ

投稿2023/01/11 10:50

実現したいこと

AccessVBAからExcelファイルのセル結合時の確認メッセージを非表示にしたい。

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

現在AccessVBAからExcelを操作してセル結合をしようとしているのですが、左上のセルを参照しますがよろしいですか?的なメッセージが出てきます。

該当のソースコード

AccessVBA

1’①セル結合では意味無し? そのままメッセージが表示される 2 DoCmd.SetWarnings False 3    .Range(.cells(1,1),.cells(4,1)).Merge 4 DoCmd.SetWarnings True 5 6’②コンパイルエラー(多分ExcelVBAのコード) 7Application.DisplayAlerts = False 8 .Range(.cells(1,1),.cells(4,1)).Merge 9Application.DisplayAlerts = False

試したこと

検索するも
①はAccessクエリを操作するときに使う?(DELETE文等)
②はExcelVBA上で書いたら多分動く(しかしAccessVBAでやる必要あり)
今回のようなAccessVBAからExcelを操作するときにどうしたらセル結合のメッセージをなくせるでしょうか?

詳しい方いらっしゃいましたら、ご教授ください。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

odataiki

2023/01/11 14:53

1)補足情報に質問者さんの環境(OS,OAccess、Excelそれぞれのバージョン)を追記出来ますか? 2)ソースコードは端折らず出来るだけそのまま掲載できますか? (公開できない情報などは伏せ字にしても構いません) (私が自作で書いたコードではセル結合時に何もメッセージは表示されませんでしたので) (環境ではなく省略されている部分に原因があるかもしれないと考えました)
ataru2222

2023/01/11 15:09

回答して頂き、ありがとうございます。 ちなみに①のコードでいけましたか? ②のコードでいけましたか? 書いておりませんでしたが、結合する2つ以上のセルに値が入っている状態でも出ませんでしたか? よろしくお願いいたします。
sazi

2023/01/12 04:30

withがありませんが? コードは省略せずに全て投稿して下さい。
guest

回答1

0

ベストアンサー

vba

1Sub Test() 2 3 Dim xlsApp As Object 4 Dim xlsWorkbook As Object 5 Dim xlsWorksheet As Object 6 7 Set xlsApp = CreateObject("Excel.Application") 8 xlsApp.Visible = True 9 10 Set xlsWorkbook = xlsApp.Workbooks.Add 11 Set xlsWorksheet = xlsWorkbook.Worksheets(1) 12 13 With xlsWorksheet 14 'A1セルの値を設定 15 .Cells(1, 1).Value = 1 16 'A1セルとの結合時に警告メッセージを出させるため敢えてB1セルの値を設定 17 .Cells(1, 2).Value = 2 18 'Excelアプリケーションの警告メッセージを無効にする 19 xlsApp.DisplayAlerts = False 20 'A1セルからB1セルまでの範囲を結合 21 .Range(.Cells(1, 1), .Cells(1, 2)).Merge 22 'Excelアプリケーションの警告メッセージを有効にする 23 xlsApp.DisplayAlerts = True 24 .Range(.Cells(1, 1), .Cells(1, 2)).Select 25 End With 26 27 Set xlsWorksheet = Nothing 28 Set xlsWorkbook = Nothing 29 Set xlsApp = Nothing 30 31End Sub

基本的には以上のような流れでよいでしょう。

DoCmd.SetWarnings False

これはAccessが出すシステムメッセージを抑制する命令であって、Excelには影響しません。

Application.DisplayAlerts = False

このステートメントをAccessデータベースのモジュールに記述されているのであれば、
ここでの Application とは実行中の Access.Application オブジェクトであって、
( Access 側から操作されている)Excel.Application オブジェクトではありません。

Access.Application オブジェクトに DisplayAlerts というメンバーはありませんので、
そもそもこのコードを実行することは出来ません。

投稿2023/01/12 02:32

sk.exe

総合スコア744

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

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

ataru2222

2023/01/12 12:15

sk.exe様 回答していただきありがとうございます。 やはりできなかったのですね。 詳しく解説していただいたこと、本当に勉強になりました。 1、forで1行目以外の値を削除 2、値が変わったら(最終行の一つ手前で)セル結合 で実装しました。 ありがとうございました。
sk.exe

2023/01/13 01:58

> やはりできなかったのですね。 いえ、「Access.Applicationオブジェクトの」ではなく「Excel.Applicationオブジェクトの」DisplayAlertsプロパティの値を False に設定してから任意のExcel.RangeオブジェクトのMergeメソッドを実行すればよい、と申し上げています。 私が例示したサンプルコードとコメントを再度読み直してください。
ataru2222

2023/01/14 15:53

sk.exe様 Set xlsApp = CreateObject("Excel.Application") xlsApp.DisplayAlerts = False とすればExcel側の機能を呼び出せるということなんですね。勉強になりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問