以下は、Word2003で「用紙の向きを90度回転する」マクロです。
(Wordのメニューのファイル→ページ設定→余白タブ→印刷の向き「縦/横」)
一回実行すると90度回転、もう一回実行すると元に戻るようになってます、
これをツールバーボタンに割り付け、紙を横にしたらツールバーボタンが凹み、
紙を縦に戻したらツールバーボタンの凹みが元に戻るようにしてます。
一見これでよさそうですが、ボタンを押して紙を横にしてボタンを凹まし、
Wordを再起動すると、紙が横でないのにボタンを凹んだ状態で新規文書が
起動してしまいます。
改善はどう記述すれば良いでしょうか。
印刷の向きが「横」に設定されている間はボタンが凹んでいて欲しいのですが。
'用紙の向きを90度回転する
Sub Orientation()
Dim myButton As Office.CommandBarButton
Set myButton = Application.CommandBars.ActionControl
With myButton
If .State = msoButtonUp Then
With ActiveDocument.PageSetup
.Orientation = wdOrientLandscape
End With
.State = msoButtonDown
Else
With ActiveDocument.PageSetup
.Orientation = wdOrientPortrait
End With
.State = msoButtonUp
End If
End With
Set myButton = Nothing
End Sub
No.6ベストアンサー
- 回答日時:
> マクロが見つからないか、またはマクロに対する
> セキュリティ レベルが高く設定されているため
> マクロが無効にされています。
この件に付きましては、#3で既に説明されていますが、
http://www.patent-boy.com/products/faq/faq.cgi?m …
「オプション」の設定が読まれるように設定されていないものだと思います。
ユーザーテンプレート:
>場所:C:\Documents and Settings\(ユーザー名)\Application Data\Microsoft\Templates
それと、
ツール--マクロ--セキュリティ--信頼できる発行元[タブ]
レ 組み込み済みのアドインとテンプレートをすべて信頼する(A)
ここにチェック
マイクロソフト側の説明(上記と重複します)
起動または Word 2002 を終了すると「このプロジェクト内のマクロは無効」のエラー メッセージ
http://support.microsoft.com/kb/302632/ja
OSは、XPでも、Vista でも通りますし、これに関しては、管理者権限自体は関係なかったはずです。もしも、これでも出来ないような状態というのは、こちらでは分かりませんが、Office 2000などバージョンが低い場合を除いては考えられません。
Wendy02さん、毎度御礼が遅くなって大変失礼しております。
ご教示の点は一から何度も点検しているのですが
どうしても不具合が取れません。。。。
既に材料は揃えていただきましたので
腰をすえてじっくり適用し、成功できるようにしたいと思います。
親身になって様々なご回答、本当にありがとうございました。
今後ともよろしくお願い致します。
No.5
- 回答日時:
こんにちは。
>ところが、紙を横にしたままWordを閉じると、再度Wordを起動した際に
>紙は縦、ボタンは凹んだ状態になっています。
>紙は縦、ボタンは凹んでいない状態になって欲しいところなのですが・・・
Normal.dot のThisDocument に#4で書かれたコードが書かれていれば、そのような問題は発生しないはずです。おそらく、ThisDocument 側のすべてのマクロが生きていません。
'=======#4のThisDocument 用マクロ=========
'コメント部分は、特に残す必要はありません。
'-------------------------------------------
'ThisDocumentのみ (同名のものがあれば、上書き)
'-------------------------------------------
Private Sub Document_Close()
・
・
・
----------------------------------------
試しに、この中のひとつに、以下のように書き加えれば働いているか分かります。★
Private Sub Document_Open() 'ファイルを開くと反応します。
Set myApp = Application
Call wdOrientationChecker
MsgBox "起動しました。" '★←これを書き込んでみれば、起動しているか分かります。
End Sub
'-------------------------------------------
★不要になりましたら、削除してください。
Wendy02さん、毎度丁寧なご回答大変ありがとうございます。
御礼と動作確認報告が遅れ勝ちで申し訳なく思っております。
VBEで、左ペインのプロジェクトツリーで、
Normal→Microsoft Word Objects→ThisDocument
に、#4のコードを貼り付けてみました。
実行した結果(ツールバーのOrientationボタン押下)は、相変わらず
マクロが見つからないか、またはマクロに対する
セキュリティ レベルが高く設定されているため
マクロが無効にされています。
です、、、。
#5でお示しいただいた、
> Private Sub Document_Open() 'ファイルを開くと反応します。
(以下略)
…これを加えて保存しようとすると、
コンパイル エラー:
名前が適切ではありません: Document_Open
となります。・・・何かまたまた初歩的なミスをしておりますでしょうか??
No.4
- 回答日時:
こんにちは。
今回のWord VBAは、一般的なマクロの基準からは、1ランクか2ランク上のものですから、インターネットで調べても、資料が出てこないと思います。SearchbuttonRev()の結果を見せていただいて、本来、ボタンのマクロを再登録していただく必要があったようです。早めに気がついていれば、それを直すマクロを提供していましたが、元のボタンの登録場所に、マクロを上書きしてしまうのが早いと思います。
これを参考に設定をしました。
'-------------------------------------------
References
>Menu: MyToolbar
>ButtonName: Orientation
>登録マクロ: NewMacros.Orientation
>場所:C:\Documents and Settings\(ユーザー名)\Application Data\Microsoft\Templates\Normal.dot
'-------------------------------------------
VBE Normal.dot の中に、以下のものを貼付けし直してください。
なお、上記の情報から、Module1ではなく、NewMacrosになっているようですから、そちらを生かし、Module1の同様のものは削除してしまって構いません。
'コメント部分は、特に残す必要はありません。
'-------------------------------------------
'ThisDocumentのみ (同名のものがあれば、上書き)
'-------------------------------------------
Private WithEvents myApp As Application '←最上部
Private Sub Document_Close()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_New()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_Open()
Set myApp = Application
Call wdOrientationChecker
End Sub
Private Sub myApp_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)
Call wdOrientationChecker
End Sub
'-------------------------------------------
''NewMacrosのみ--上書き(Module1 にあった同名のマクロは残さず削除してください。)
'-------------------------------------------
Sub Orientation()
Dim MyButton As Office.CommandBarButton
Set MyButton = Application.CommandBars.ActionControl
With MyButton
If .State = msoButtonUp Then
With ActiveDocument.PageSetup
.Orientation = wdOrientLandscape
End With
.State = msoButtonDown
Else
With ActiveDocument.PageSetup
.Orientation = wdOrientPortrait
End With
.State = msoButtonUp
End If
End With
Set MyButton = Nothing
End Sub
Sub wdOrientationChecker(Optional flg As Boolean = True)
'文書の向きをチェックするマクロ
Dim MyButton As CommandBarButton
Set MyButton = Application.CommandBars("MyToolbar").Controls("Orientation")
If flg Then
If ActiveDocument.PageSetup.Orientation = wdOrientLandscape Then
MyButton.State = msoButtonDown
Else
MyButton.State = msoButtonUp
End If
Else
MyButton.State = msoButtonUp
End If
End Sub
'-------------------------------------------
Wendy02さん、完全におんぶに抱っこになってしまいまして心苦しい限りです。
本当にありがとうございます。
おかげさまで、無事既存環境で回転はさせられるようにはなりました。
ところが、紙を横にしたままWordを閉じると、再度Wordを起動した際に
紙は縦、ボタンは凹んだ状態になっています。
紙は縦、ボタンは凹んでいない状態になって欲しいところなのですが・・・
元質問と同じ状態に陥っているようです。
せっかくここまで突き詰めていただいたので、念のためご報告させていただきます。
No.3
- 回答日時:
こんにちは。
情報取得マクロを修正しました。今回は、特に修正する必要はありません。ただ、単に確認のためだけです。
私自身も、これで取ってみて、気がつかない部分がありました。私のNormal.Dot は、以下の「ユーザーテンプレート」にあります。一旦、設定すれば、変更なければ、いじる必要はありません。大変だと思いますが、全体のマクロがこういう面倒な設定になる可能性があると思ったほうがよさそうです。
'-------------------------------------------
Sub SearchbuttonRev()
'ボタンを探すプログラム(修正版)
Dim MyButton
Dim a, b, c, d, e, v
Set MyButton = Application.CommandBars
On Error Resume Next
For Each c In MyButton
For Each v In c.Controls
If Err.Number = 0 Then
'設定マクロ名:大文字・小文字の区別あり
a = v.OnAction Like "*Orient*"
Err.Clear
If a = True Then
b = v.Parent.Name
c = v.Caption
d = v.OnAction
e = v.Parent.Context
MsgBox "Menu: " & b & vbCrLf & "ButtonName: " & c & vbCrLf & _
"登録マクロ: " & d & vbLf & "場所:" & e, , "情報メニュー"
'Debug.Print "Menu: " & b; "ButtonName: " & c & "登録マクロ: " & d & vbLf & "場所:" & e
Exit Sub
End If
End If
Next
Next
End Sub
'-------------------------------------------
>「マクロが見つからないか、またはマクロに対するセキュリティ レベルが高く設定されているためマクロが無効にされています。」
この件は、私は経験がありませんので、以下をみていだだけますか?
http://www.patent-boy.com/products/faq/faq.cgi?m …
この内容自体は、私の考えているスタイルと違いますので、オプションの内容を確認してください。
だいたいは以下のようになると思います。[:]の右が空白なのは、私は空にしています。
なお、修正したマクロで情報を確認してください。
'-------------------------------------------
Document and Setting... の部分が隠れていますが、
例えば、以下のような場所になります。
-------------------------------------------
文書: 任意
クリップアート:
ユーザーテンプレート:
C:\Documents and Settings\[User ID]\Application Data\Microsoft\Templates
ワークグループテンプレート:
自動バックアップ:任意
ツール:
C:\Program Files\Microsoft Office\OFFICE11
スタートアップ:
C:\Documents and Settings\[User ID]\Application Data\Microsoft\Word\STARTUP\
-------------------------------------------
=========================================
なお、これが通りましたら、今のスタイルには、Windows.Activate(ドキュメントを切り替えた時にチェックするモード)がありませんので、コードを加えなくてはなりません。
'ThisWorkbook モジュール
'-------------------------------------------
Private WithEvents myApp As Application '一行目
>Private Sub Document_Open()
> Call wdOrientationChecker
>End Sub
↓
Private Sub Document_Open()
Set myApp = Application '←書き加えます
Call wdOrientationChecker
End Sub
'-------------------------------------------
'新たなイベント・ドリブン型マクロ(ThisDocument の最後尾に加える)
Private Sub myApp_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)
Call wdOrientationChecker
End Sub
この回答への補足
Wendy02さん、たびたびのご教示感謝にたえません。
また、とっくに試してはいたのですが、下記に示すトラブルで解決策がないか
いろいろ試しておりました、結果的に報告や御礼が遅くなりましたことをお許しください。
No3でご教示いただいたマクロなど、整理すると文末のようになるかと思います。
これを、Normal.dotのNewMacrosに貼り付けると、
>Private WithEvents myApp As Application '一行目
ここが赤字になります。
Project(文書1)のThisDocumentに貼り付ければ赤字になりませんが・・・。
Normal.dotでも、ThisDocumentでも、いずれにせよツールバーボタン
(=「Orientation」をキャプションとするボタン)を押下すると
相変わらず「マクロが見つからないか、またはマクロに対するセキュリティ レベルが高く設定されているためマクロが無効にされています。」となります。。。。
Wendy02さんが#3でご教示くださったサイトもみてみたのですが・・・
そうそう、#3のスクリプト実行結果は以下の通りです。
Menu: MyToolbar
ButtonName: Orientation
登録マクロ: NewMacros.Orientation
場所:C:\Documents and Settings\(ユーザー名)\Application Data\Microsoft\Templates\Normal.dot
'-------------------------------------------
'Normal.dotの標準モジュールか、ThisDocument どちらでも良い
Private WithEvents myApp As Application '一行目
Sub wdOrientationChecker(Optional flg As Boolean = True)
'文書の向きをチェックするマクロ
Dim MyButton As CommandBarButton
Set MyButton = Application.CommandBars("MyToolbar").Controls("Orientation")' 'ここはキャプションにあわせて変更済みです。
If flg Then
If ActiveDocument.PageSetup.Orientation = wdOrientLandscape Then
MyButton.State = msoButtonDown
Else
MyButton.State = msoButtonUp
End If
Else
MyButton.State = msoButtonUp
End If
End Sub
'Normal.doct のThisDocument
Private Sub Document_Close()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_New()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_Open()
Set myApp = Application '←書き加えます
Call wdOrientationChecker
End Sub
No.2
- 回答日時:
こんばんは。
>Word2003のツール→ユーザー設定→コマンドタブ→「分類」の「マクロ」に
>wdOrientationCheckerが出てきません、、、
ドキュメント側から呼び出して使うものではありませんから、出てきません。
>早速当方のVBEで、Normal.dotの標準モジュールのNewMacros(ここに他の細かいマクロも入れてあります)に加える形で組み込んでみたんですが、
Normal.doct のNewMacros でも構いませんが、ともかく、ボタンがどう張付ているか分かればよいのですが。
大事なことは、ここだけです。
>「表示のCaption に名称を合わせる」ということの意味がわからないのですが、
>そちらを設定していないのが原因でしょうか。
図をみてください。私のところでは、Orientation と出ています。これが、キャプション(Caption)です。
以下のプログラムで、検索してみてください。
Menu ---> Menu Bar
ButtonName(Caption)--> Orientation
メッセージボックスに出てきたものは、イミディエイトウィンドウにも出ていますので、それを、#1のマクロの以下の行を書き換えてください。
Set MyButton = Application.CommandBars("Menu Bar").Controls("Orientation") '要変更
'-------------------------------------------
'どこでもよいので、試してみてください。
Sub Searchbutton()
'ボタンを探すプログラム
Dim MyButton
Dim a, b, c, v
Set MyButton = Application.CommandBars
On Error Resume Next
For Each c In MyButton
For Each v In c.Controls
If Err.Number = 0 Then
'設定マクロ名:大文字・小文字の区別あり
a = v.OnAction Like "*Orient*"
Err.Clear
If a = True Then
b = v.Parent.Name
c = v.Caption
MsgBox "Menu: " & b & vbCrLf & "ButtonName: " & c
Debug.Print "Menu: " & b ; "ButtonName: " & c
Exit Sub
End If
End If
Next
Next
End Sub
'-------------------------------------------
不要になったら削除して良いです。
Wendy02さん、たびたびのご教示大変ありがとうございます。
初歩的な質問に丁寧にご教示いただき感謝に耐えません。
Searchbutton()を実行してみましたら、
Menu ---> My Toolbar
ButtonName(Caption)--> 用紙を90度回転
と出てきましたので、以下のように設定しました。
Set MyButton = Application.CommandBars("My Toolbar").Controls("用紙を90度回転") '要変更
既存のボタンを押下してみましたら、
「マクロが見つからないか、またはマクロに対するセキュリティ レベルが高く設定されているためマクロが無効にされています。」
というメッセージが出て、用紙が90度回転されません。
些細な設定ミスかもしれませんが・・・
No.1
- 回答日時:
こんばんは。
ここでは、ボタン名を、Orientation にしていますが、
Set MyButton = Application.CommandBars("Menu Bar").Controls("Orientation") '要変更
表示のCaption に名称を合わせてください。また、Menu Bar ではなく、別の場所に入れている場合は、正しい場所に設定してください。ただ、正しい場所が見つからない場合は、検索用のマクロを別途作らなくてはなりません。
'-------------------------------------------
'Normal.dotの標準モジュールか、ThisDocument どちらでも良い
Sub wdOrientationChecker(Optional flg As Boolean = True)
'文書の向きをチェックするマクロ
Dim MyButton As CommandBarButton
Set MyButton = Application.CommandBars("Menu Bar").Controls("Orientation") '要変更
If flg Then
If ActiveDocument.PageSetup.Orientation = wdOrientLandscape Then
MyButton.State = msoButtonDown
Else
MyButton.State = msoButtonUp
End If
Else
MyButton.State = msoButtonUp
End If
End Sub
'-------------------------------------------
'Normal.doct のThisDocument
Private Sub Document_Close()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_New()
Call wdOrientationChecker(False)
End Sub
Private Sub Document_Open()
Call wdOrientationChecker
End Sub
Wendy02さん、早速のご回答ありがとうございます、
早速当方のVBEで、Normal.dotの標準モジュールのNewMacros(ここに他の細かいマクロも
入れてあります)に加える形で組み込んでみたんですが、
Word2003のツール→ユーザー設定→コマンドタブ→「分類」の「マクロ」に
wdOrientationCheckerが出てきません、、、
うう、初歩的な質問ですみませんが、なぜでしょう?
ツールバーにボタンがのっけられません。。。
それと、
> ここでは、ボタン名を、Orientation にしていますが、
> Set MyButton = Application.CommandBars("Menu Bar").Controls("Orientation") '要変更
> 表示のCaption に名称を合わせてください。
「表示のCaption に名称を合わせる」ということの意味がわからないのですが、
そちらを設定していないのが原因でしょうか。
#すみません、元質問のマクロも詳しい人に聞いたり
ネットの記事を参考にしたりで何とか作ったもので
マクロの考え方があまりよくわかっていなくてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルで、「いいね」のよう...
-
エクセルの、記録を終了したマ...
-
複数のマクロボタンをまとめて...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
エクセルの表を複数枚印刷した...
-
Excelのマクロ名の並び順の法則...
-
エクセルマクロで、別のブック...
-
エクセルで明日の日付を表示す...
-
Excelマクロで、稼働中のマクロ...
-
バッチファイルファイル→VBS→エ...
-
Excel:マクロを消す方法教えて...
-
EXCELのマクロが他のパソコンで...
-
マクロをマクロを使ってコピー...
-
Excelマクロをバックグラウンド...
-
「×1000」と「÷1000」のマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルの、記録を終了したマ...
-
複数のマクロボタンをまとめて...
-
エクセル マクロ名にブック名...
-
エクセルで、「いいね」のよう...
-
エクセルの表を複数枚印刷した...
-
Excelマクロで、稼働中のマクロ...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルマクロで、別のブック...
-
マクロをマクロを使ってコピー...
-
エクセルで明日の日付を表示す...
-
Excelのマクロ名の並び順の法則...
-
(Excel VBA)シートコピー時マ...
-
Excelマクロをバックグラウンド...
-
Ctrl+Zが使えない
-
別シートのマクロボタンをマク...
-
LDPlayerのマクロの編集方法を...
おすすめ情報