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

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

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

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

Q&A

解決済

3回答

3927閲覧

Excell2016 リボンの動作について 2010→2016

ww7744

総合スコア13

VBA

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

0グッド

1クリップ

投稿2018/09/20 12:52

前提・実現したいこと

Win7+Excell2010 にて 長年使っていたマクロを Win10+Excell2016に移植したのですが

以下のような事象が出て、回避方法を探せていません。ご存知の方教えていただけると助かります。

Win7+Excell2010 での状態

Macro1 を personal.XLSBに書き込んでいます 
MACRO1を リボンに登録してクリックしてプログラムを走らせています。

Win10+Excell2016 での事象

 PERSONAL.XLSBを移植、リボンを移植
Excell2010での動作と同様にクリックすると
「申し訳ございません。同じ名前のブックを同時に開くことはできません」とでます。
該当のマクロのうち Visual Basic editor で確認すると以下のところが引っ掛かっているように思います

sub Macro1()
Sheets("〇〇").Select

   ’シートに色を塗る
With ActiveWorkbook.Sheets("〇〇").Tab
.Color = 5296274
.TintAndShade = 0
End With
Range("M45").Select```
End Sub

「ActiveWorkbook.」が引っ掛かっているようです。

  Excell2016から ブックの扱いが変わっているのはうっすら知っているのですが回避方法がよくわかりません

ただ Visual Basic editor でステップで動かすと、希望する動きにはなるので、不思議だなとは思っています

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

「申し訳ございません。同じ名前のブックを同時に開くことはできません」``` ### 該当のソースコード ```VBA Sheets("〇〇").Select With ActiveWorkbook.Sheets("〇〇").Tab .Color = 5296274 .TintAndShade = 0 End With Range("M45").Select``` ### 試したこと Webの検索 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

ベストアンサー

これは私の推測です。

本当にActiveWorkbookで引っかかっていますか?

「申し訳ございません。同じ名前のブックを同時に開くことはできません」

は、本来既に開いている名称のブックを開こうとした時に発生するエラーです。

そこで気になるのがこの部分

MACRO1を リボンに登録してクリックしてプログラムを走らせています。

実際はマクロに入る前の段階で引っかかっているのではないでしょうか。
もしかしたら内部的に記憶しているMACRO1の参照先の「PERSONAL.xlsb」とエクセル起動時に自動で立ち上がる「PERSONAL.xlsb」のパスが違って別のファイルを開こうとしているとかは考えられませんか?

リボンの設定が内部的に絶対パスで記憶していて別ファイルと認識して、別途開こうとしているとか、あるかもしれません。

一度リボンを削除して改めて追加したら治ったりしませんか。
あとブレークポイントをSheets("〇〇").Selectに設定して到達しているか確認して頂けませんか。

投稿2018/09/20 23:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ww7744

2018/09/21 01:02

こんにちは いったんリボンからマクロを削除し、保存 再度挿入する で試してみました。  リボンをクリックするとうまく動作しました   前のパソコンからリボンのエクスポートをしたファイルを読み込んだので、以前のファイル位置を  記憶しているのでしょう  新しいエクセルはOFFCE365soloなので、新しくMicrosoftアカウントを取得したので  アカウント名が違っています(旧パソコンでは付属していたエクエルなのでMicrosoftアカウントは使用していません というか 導入時にはまだなかったように思います)  リボン数結構あるので、難儀な作業ですがやってみます。 一括して変換できればいいんですけど。。   最後は力業なのかもしれません  袋小路だったのでヒントありがとうございました
guest

0

なんとなく解決策が見つかったので、仮に書いておきます。
(まだ 実際の動きが確認できてないので自己責任でお願いします)

リボンの設定画面からエクスポートしたファイルを、メモ帳で開き、設定してるアカウントを
置換して再読み込みすると簡単にできるようです
ファイルの名前
Excel Customizations

投稿2018/09/24 05:18

ww7744

総合スコア13

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

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

TanakaHiroaki

2018/09/24 05:25

参考になる情報だと思います。
guest

0

ActiveWorkbookをオブジェクトに代入してみて下さい。

VBA

1set objwkbk=ActiveWorkbook 2With objwkbk.Sheets("〇〇").Tab

投稿2018/09/20 13:37

sazi

総合スコア25173

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

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

TanakaHiroaki

2018/09/20 14:15

saziさんの回答で解決できたら、すごいですね。
sazi

2018/09/20 15:31

確かに駄目かも。 可能なら、ActiveWorkbookではなくて具体的なbookを指定してみて下さい。
sazi

2018/09/20 16:08

若しくは、直前にDoEventsを入れてみるとか
ExcelVBAer

2018/09/21 00:16

エラーメッセージが正確な内容か不確かなので、 状況を正しく把握する為の1歩ですよね。 Active〇〇は恐くて使えないですから。
ww7744

2018/09/21 01:04

回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問