No.7
- 回答日時:
こんばんは。
前回、返事を書いた一人です。
やはり分かっていただけていなかったようです。
Application.Run でも Call でも、その呼出の登録の中身自体の問題です。
登録が変わっていないから、エラーは続きます。
画像をみると、フォームコントロール・ボタンのようです。
その中の、OnAction プロパティは、コピーしたり名称を変えても、そのままでは内部は変更しないわけですから、当然、前のままの登録した名称を呼ぼうとして、見つからない場合は、エラーになるわけです。
私の場合は、QATの中身なので、それを書き換えられると思ったら、できなかったのです。そこで、今は、アドイン型に変えようとしています。ところが、このご質問者さんの場合は、フォームコントロールボタンにしてしまって、それにあまりにも手を加えすぎた感じがします。
解決方法は2つあることは書きましたが、もう片方のほうは、今、私がしようとしている方法で、ボタンを、Command.Control のボタンにすることで、アドイン形式に変えてしまうことですが、取っ掛かりが面倒です。
注意:
もう一つが、ボタンのOnAction を書き換える方法です。
しかし、Application.Run は、今の段階では意味がないので、元のオリジナルに戻してください。必ず、内部のマクロを呼び出すようにしてください。
フォームコントロールボタンのみに作用します。
ActiveX コントロールのボタンは、極力使うのは控えたほうが良いです。
Excel自体で自動的に変わる場合もありますが、これは、復旧できないほど、書き換わってしまった場合に有効です。(ただし、シートモジュールのマクロは想定していません)
'//標準モジュール
Sub Auto_Open()
'ボタンリンク自動修正マクロ
Call CheckButtonPrc
End Sub
Sub CheckButtonPrc()
Dim wd1 As String, wd2 As String
Dim bln As Boolean
Dim btn As Object, i As Long
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
For i = 1 To sh.Buttons.Count
Set btn = sh.Buttons(i) '最初に見つけたフォームコントロール・ボタン
bln = True
Exit For
Next i
If bln Then
Exit For
End If
Next sh
wd1 = btn.OnAction
wd2 = ActiveWorkbook.Name
If InStr(1, wd1, wd2 & "'!") = 0 Then
MsgBox "OnActio : " & wd1 & vbCrLf & _
"ThisWorkbook名: " & wd2
MsgBox "呼出が掛かっています。", vbExclamation
If MsgBox("修正しますか?", vbOKCancel) = vbCancel Then Exit Sub
Call ReplaceOnActions
End If
End Sub
Private Sub ReplaceOnActions()
Dim sh As Worksheet
Dim shp As Object
Dim buf As String
Dim wd1 As String, wd2 As String
Dim i As Long
For Each sh In Worksheets
For Each shp In sh.Shapes
If shp.Type = msoFormControl Then
buf = shp.OnAction
i = InStr(1, buf, "'!")
wd1 = Mid(buf, 2, i - 2)
wd2 = ActiveWorkbook.FullName
shp.OnAction = Replace(buf, wd1, wd2) '修正
End If
Next shp
Next sh
End Sub
'//
添付の画像は、どれが出ても、基本的には無視して構いません。
Excel側で、自動で直っている場合は、メーセージなど何も出てきません。
真ん中の「申し訳ございません」のメッセージの「OK」ボタンをクリックするとマクロが修正するはずです。
見てくださりありがとうございました!
画像まで用意してくださってとっても分かりやすかったです
WindFaller様の教えは今後もっと詳しくかつ精密に作製していく上で力になる方法で必ず理解し活用させていこうと思います!
本当にありがとうございました!
No.5
- 回答日時:
>Application.Run "'見積.予算書.日報 原本 -最終形.xlsm'!日報集計"
見積.予算書.日報 原本 -最終形.xlsm
これが今やっているBookなら
その部分を変更して
Application.Run "'" & ThisWorkbook.Name & "'!日報集計"
としてみます?
既出の『Call ~』に書き換えるのも良いかもですけど。
No.4
- 回答日時:
「Application.Run "'見積.予算書.日報 原本 -最終形.xlsm'!日報集計"」自体何をやっているか?よく判らないのですが、もしかしたら「日報集計」というマクロを呼び出しているならば「Call 日報集計」だけで済むのですが…
違う意味が有るならば、説明していただけますか?
私はこのブックを引継ぎで作成しているので詳しくは分からなくて説明が分からなくて申し訳ないありません。。
ブック名は見積.予算書.日報 原本 -最終形.xlsmで、マクロを実行するときはフォームコントロールから実行ボタンを作ってマクロを実行しようと思ってボタンを作っています(絶対ではないのでボタンを作らないほうがよいのなら消してもかまいません)
この資料で分かりますでしょうか?足りない部分がありましたら是非おっしゃってください!
No.3
- 回答日時:
No.2のお礼に対して。
多分GooUserラックさんの方から回答がつくと思いますよ。
私はあくまで1つのBookだけで操作をする場合を想定していましたので。
ってApplication.Runで呼び出しているBookは自分自身なのかな?
このブックを引継ぎで作成しているので詳しくは分からなくて説明が分からなくて申し訳ありません。。
ブック名は見積.予算書.日報 原本 -最終形.xlsmで、マクロを実行するときはフォームコントロールから実行ボタンを作ってマクロを実行しようと思ってボタンを作っています(絶対ではないのでボタンを作らないほうがよいのなら消してもかまいません)
この資料で分かりますでしょうか?足りない部分がありましたら是非おっしゃってください!
困っていますよろしくお願いいたします・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 12:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/01/27 13:15
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) 【VBA】複数ブックから特定のシートを抽出して一つのブックに集約するマクロについて 3 2022/09/04 15:05
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでツールバーに「縮小...
-
複数のデータ系列の線の太さを...
-
ピボットグラフの書式の固定に...
-
ファイル名を今日の日付、時刻...
-
エクセルワークシート上に印刷...
-
最初の1回のみにボタンクリッ...
-
cellsで特定の離れた範囲を選択...
-
VBA[Private Sub]のコードをシ...
-
エクセル vba クリック~離し...
-
【ExcelVBA】クエリの更新とピ...
-
Pictures.Insertメソッド⇒Shape...
-
エクセルシートをまとめて印刷...
-
VBAでシートの保護をかける際に...
-
VBAで棒グラフの色を変えたい
-
ExcelのVBAでWordの書式を変更...
-
エクセルのマクロでSelection.S...
-
マクロを使いダイレクトメール...
-
どのドキュメントは暗号化され...
-
Powerpointでランダムな数字の...
-
ユーザフォームをどの画面から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
ファイル名を今日の日付、時刻...
-
cellsで特定の離れた範囲を選択...
-
エクセルシートをまとめて印刷...
-
VBA[Private Sub]のコードをシ...
-
ピボットグラフの書式の固定に...
-
最初の1回のみにボタンクリッ...
-
Powerpointでランダムな数字の...
-
VBAを使ってエクセルシート...
-
別ブックからユーザーフォーム...
-
Pictures.Insertメソッド⇒Shape...
-
【ExcelVBA】クエリの更新とピ...
-
どのドキュメントは暗号化され...
-
エクセルのマクロでSelection.S...
-
エクセル2007 テキストボ...
-
エクセルワークシート上に印刷...
-
wordのマクロで縮小して貼り付...
-
htmlまたはJavascriptからファ...
-
ExcelのVBAでWordの書式を変更...
おすすめ情報
説明不足ですみません!!このブックには下記のマクロ名があります。
その中でブック名が入っているマクロは「新1」から「新4」の4つでした。
「新4」のマクロの内容です。
たぶん「新4」は「新1」から「新3」までを合体させて追加してるのではないかなと
「新4」の続きです
原本をコピーペーストし、新たな現場名の書類として作ったものをマクロ実行すると下記のようなエラーになります
現場は同時に何個もあるので直接原本を使いながら出来上がったら名前をつけて保存というのは出来ません。コピペして何個も作っておいてマクロのブックのところだけ新たな現場名に書き換えてというのも記入するのはパソコンをまったく知らない現場人ですので難しいと思います。