• ベストアンサー

エクセル2003で作成したVBAを2007で使用したい

エクセル2003で下記のようなVBAを作成していました。 作成した物を使用者が印刷設定を変更できないように ブックを開くと同時に印刷ボタンなどを非表示にしていたのですが・・・ 2007でも使用出来るようにしたいと思ったのですが 2007ではこのままではエラーが出てしまうようです。 2007はまったく扱ったことがないのでどのようにすればよいかわかりません。 どなたかご教授いただけたらと思います。 Private Sub Workbook_Open() Application.DisplayStatusBar = False 'ステータスバー非表示 'ブックを開く時ページ設定と印刷を非表示 On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("ページ設定(&U)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷(&P)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷プレビュー(&V)").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷範囲(&T)").Enabled = False Application.CommandBars("Standard").Enabled = False End Sub

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 一応、Microsoft 側では、Office 2007 のFluent UIのカスタマイズする方法は発表されました。 『2007 Office Fluent リボンをカスタマイズする (開発者向け)(1/3、2/3、3/3)』 http://msdn.microsoft.com/ja-jp/library/aa338202.aspx 当初、COM だけだと聞いていましたが、その後、ツールも発表されましたので、なんとかなると思います。 メニューというよりも、リボンをカスタマイズすることでしょうから、それなりにツールがあると便利かもしれません。Custom UI Editor Toolが出ていますから、それで、マークアップを加筆するか変更すればよいと思います。 Custom UI Editor Tool(英語) http://openxmldeveloper.org/articles/CustomUIeditor.aspx msi をインストールしてください。(単に、zip を開かないで直接編集できる程度のものですから、マニュアルで、メモ帳あたりでも可能です) Office 2007 リボンのカスタマイズ 初心者忘備録 特定の機能を利用禁止にする http://www.ka-net.org/ribbon/ri21.html コントロール名はこのぐらいではないかと思います。 FilePrint FilePrintQuick FilePrintPreview コントロール名は、以下をダウンロードして、内容を確認してください。 2007 Office System Document: Lists of Control IDs http://www.microsoft.com/downloads/details.aspx?familyid=4329d9e9-4d11-46a5-898d-23e4f331e9ae&displaylang=en#filelist

creopatra
質問者

お礼

ありがとうございます。 やりたかった内容まで記載していただいて助かります! 教えていただいたものを参考にして 再度作成してみたいと思います。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

2007のメニューバーなど2003以前と大幅に変わったのはご存知でしょう。リボンとタブの仕組み。ファイルが無く第1レベルはオフィスボタンになっている。メニューの階層構造が変わったわけだ。 だったらこの質問のコードは変えないといけないのは常識では。 ーー もうひとつ、2007でも >Application.CommandBars("Worksheet Menu Bar").Controls のCommandBars("X")ーControls(Y)の記述が使えるかどうかだが http://officetanaka.net/excel/excel2007/028.htm http://pc.nikkeibp.co.jp/article/NPC/20060727/244547/ http://www.ka-net.org/office/of02.html

creopatra
質問者

お礼

ありがとうございます。 帰ってからコードを調べて 再度作成し直してみます。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

2007にはこれまでのようなマニューバーがないからでしょう。 マクロでバージョンを確認して分岐したらどうでしょう? 今、てもとに2007がないので試せませんが。 Private Sub Workbook_Open() With Application If Val(.Version) > 11 Then 'excel2007以上なら .DisplayFullScreen = False '全画面表示 Else 'そうでないなら今までのコマンド .DisplayStatusBar = False 'ステータスバー非表示 On Error Resume Next .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("ページ設定(&U)...").Enabled = False .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷(&P)...").Enabled = False .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷プレビュー(&V)").Enabled = False .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷範囲(&T)").Enabled = False .CommandBars("Standard").Enabled = False End If End With End Sub

creopatra
質問者

お礼

早速ありがとうございます。 帰って早速試してみたいと思います。

関連するQ&A

  • VBA2003: 自作メニューバーを操作したい

    Application.CommandBars("Worksheet Menu Bar").Controls.Add このメソッドを使って Excelのメニューバーに自作メニューを追加しました。 メニューは階層構造になっています。 Excelのシート名によって、このメニューに定義したサブメニューやコマンドを Enabled = True/False で表示制御したいのですが、その方法がわかりません。 よろしくお願いします。

  • Excel 数式バーを非表示にしたい(VBA)

    ツール-オプション-表示-数式バーのチェックを外せば 数式バーを非表示にできますが、VBAでやりたいと思います。 次の様に記述してみましたが、書式バーの「数式バー(F)」のボタンが非表示になるだけで数式バー自体は非表示になりません。 Private Sub Workbook_Open() Application.CommandBars("formatting").Controls(23).Visible = False End Sub 次の様に記述してみても今度は「数式バー(F)」のボタンが操作不可になるだけで数式バー自体は非表示になりません。 Private Sub Workbook_Open() Application.CommandBars("formatting").Controls(23).Enabled = False End Sub 他にも試すのですが、エラーになったりで答えに辿り着けず・・ どなたかヒントだけでもお願いします。

  • VBA を使用してexcel起動時に 右クリックメニューの行削除や列削除を無効にしようとするとエラーが出ることがある。

    お世話になります。 VBA を使用してexcel起動時に 右クリックメニューの行削除や列削除を無効して、下記VBAを作成しました。 しかしながら、起動時(実行時)に 「実行時エラー 5 プロシージャの呼び出し、または引数が不正です。」が出ることがあります。 でないときもあるのですが、 デバック時にとまるところは、毎回変わり(1)~(5)のどれかで止まります。 使用したい環境はexcel2007,excel2003で正常に動くようにしたいのですが、何卒よろしくお願いします。 *************ソース********************* Private Sub Workbook_Open() InsertEnabled False End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) InsertEnabled True End Sub Private Sub InsertEnabled(flg As Boolean) With Application (1) Application.CommandBars("Worksheet Menu Bar").Controls("挿入(&I)").Enabled = flg (2) Application.CommandBars("Cell").Controls("挿入(&I)...").Enabled = flg (3)Application.CommandBars("Cell").Controls("削除(&D)...").Enabled = flg (4)Application.CommandBars("Row").Controls("挿入(&I)").Enabled = flg (5)Application.CommandBars("Row").Controls("削除(&D)").Enabled = flg .CommandBars.FindControl(, 296).Enabled = flg .CommandBars.FindControl(, 293).Enabled = flg End With End Sub

  • メニューバーを非表示に 2007

    エクセル2007です。 Application.CommandBars("Worksheet Menu Bar").Enabled = False をしてもメニューバーが非表示になりません。 画像の部分を非表示にしたいです。 そもそもこれはメニューバーではないのでしょうか?

  • エクセルの数式バーが表示できなくなってしまいました

    エクセルのマクロでメニューバーを非表示にする処理をしました。 ↓これがマクロのソースです。 Application.CommandBars("Worksheet Menu Bar").Enabled =   Not .CommandBars("Worksheet Menu Bar").Enabled これを実行し、自分の思惑通りメニューバーが消えました。 しかし再び処理を実行し、メニューバーを表示させたのですが、数式バーが 表示されません。 どうすれば元に戻るでしょうか?

  • エクセル95のVBAマクロに詳しい方!

    エクセルの画面からメニューバー等のすべてのバーを標示させないようにするには下記の記述ということを教わりました。(有難う御座いました) 試したところ97、2000ではこれで完璧でした。 ところが95ではエラーになってしまうのです。ファイルはもちろん95形式で保存してあります。 どなたか、95に詳しい方、対処法をご教示ください。 Sub コマンドバー非表示() For Each myCB In Application.CommandBars myCB.Enabled = False Next myCB End Sub

  • Excel2003でブックごとにコピー&ペースト不可の制限

    過去の記事なども調べ 下記でアプリケーション単位での設定はわかりました。 しかし全ブックに影響がでるのはこまるのでこれをブック単位に設定することはできますでしょうか。 お願いします! ▽ソース Sub Auto_Open() Call DisEnableKeys1 Call DisEnableKeys2 End Sub Sub DisEnableKeys1() Dim eFlg As Boolean eFlg = False 'サブルーチンにしてトグルも可能 With Workbook .CommandBars("Worksheet Menu Bar").Controls("編集(&E)").Controls("貼り付け(&P)").Enabled = eFlg .CommandBars("Cell").FindControl(, 22).Enabled = eFlg If eFlg = False Then .OnKey "^v", "DummyMacro1" Else .OnKey "^v" End If End With End Sub Sub DisEnableKeys2() Dim eFlg As Boolean eFlg = False 'サブルーチンにしてトグルも可能 With Workbook .CommandBars("Worksheet Menu Bar").Controls("編集(&E)").Controls("コピー(&C)").Enabled = eFlg .CommandBars("Cell").FindControl(, 19).Enabled = eFlg If eFlg = False Then .OnKey "^c", "DummyMacro2" Else .OnKey "^c" End If End With End Sub Sub DummyMacro1() MsgBox "貼り付けは禁止されています。", vbInformation End Sub Sub DummyMacro2() MsgBox "コピーは禁止されています。", vbInformation End Sub

  • VBA コマンドバーを消した後に残る空白部分

    お世話になります。 ExcelVBAで、コマンドバーの類を全て消去した後に残る、 空白部分ができる原因が解りません。 この部分をダブルクリックすると、エラーになって強制終了に なってしまいます。 完全に消してしまいたいのですが、この状況になってしまう、 原因と対策を教えてください。 内容は、『システム』という名のシートにある『ロック』ボタンを 押すと、コマンドバーを全て消去して、Sheet1に切り替わるといった 流れです。 ↓モジュール側 ------------------------------------------------------------- Dim myCB As CommandBar Public Sub onCmdBarAttr() DoEvents With Application For Each myCB In Application.CommandBars myCB.Enabled = True Next myCB .CommandBars("Standard").Visible = True .CommandBars("Formatting").Visible = True .CommandBars("Visual Basic").Visible = True .CommandBars("Worksheet Menu Bar").Enabled = True .CommandBars("CELL").Enabled = True ' タスクバーに表示させる .ShowWindowsInTaskbar = True ' 数式バーを表示 .DisplayFormulaBar = True ' ステータスバーを表示 .DisplayStatusBar = True End With End Sub Public Sub offCmdBarAttr() Dim myCB As CommandBar On Error Resume Next For Each myCB In Application.CommandBars myCB.Enabled = False Next myCB On Error GoTo 0 With Application .CommandBars("Worksheet Menu Bar").Enabled = False .CommandBars("CELL").Enabled = False ' 数式バーを消去 .DisplayFormulaBar = False ' ステータスバーを消去 .DisplayStatusBar = False ' タスクバーに表示させない .ShowWindowsInTaskbar = False End With End Sub ' シートロック Public Sub protectSheet(ByVal stSheetName As String) Application.ScreenUpdating = False ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Activate .Unprotect .Protect UserInterfaceOnly:=True ' カーソルの移動範囲を設定する .ScrollArea = "$A$1" ' 左上セルを選択 .Range("H16").Select ' 保護されたセルは選択不可にする .EnableSelection = xlNoRestrictions End With Application.ScreenUpdating = True End Sub ' シートロック解除 Public Sub unprotectSheet(ByVal stSheetName As String) ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Unprotect ' スクロール範囲を解除する .ScrollArea = "" ' 保護されたセルでも選択可能にする .EnableSelection = xlUnlockedCells End With End Sub Public Sub setBookAttribute(ByVal bFlg As Boolean) With Windows(ThisWorkbook.Name) ' タブを設定 .DisplayWorkbookTabs = bFlg ' スクロールバーを設定 .DisplayHorizontalScrollBar = bFlg .DisplayVerticalScrollBar = bFlg ' グリッドを設定 .DisplayGridlines = bFlg ' 行列数表示を設定 .DisplayHeadings = bFlg End With End Sub ↓シート側 ------------------------------------------------------ Private Sub btnProtect_Click() ' アプリケーション全体の処理 Call Module1.offCmdBarAttr ' シート単位の処理 Call Module1.protectSheet("Sheet1") ' ブック単位の処理 Call setBookAttribute(False) Worksheets("Sheet1").Activate End Sub Private Sub btnUnprotect_Click() Call Module1.onCmdBarAttr Call Module1.unprotectSheet("Sheet1") Call setBookAttribute(True) End Sub 以上、よろしくお願いいたします。

  • 他のBOOKにマクロを反映させない様にするには?

    Excel VBA初心者です。 エクセルのWorkbook Openイベントでワークシートメニューバーを非表示にしています。 マクロを作成したBookを開いてから他のBookを開いた場合はワークシートメニューバーは表示されるのですが(マクロは反映されない。)、他のBookを開いた後、マクロを作成したBookを開いた場合ワークシートメニューバーが他のBookまで非表示になってしまいます。(マクロが反映される。) マクロを作成したBookをその他Bookから常に独立させて(別のインスタンス?として開く??)開く様にするにはどうしたらよろしいでしょうか? 以下がOpenイベントです。 Private Sub Workbook_Open() Application.ScreenUpdating = False '動きを見せない Application.DisplayAlerts = False '選択画面をとばす Application.IgnoreRemoteRequests = True '他のアプリケーションを無視 Application.CommandBars("Worksheet Menu Bar").Enabled = False 'メニューバー非表示 ~以下長々とあります。~ End Sub 宜しくお願い致します。 ※メニューバー非表示は、社内に配布した場合にシート内容を変更されたくないためです。

  • Excelで右クリック禁止が出来ない?

    Excel2010 を使用しています。 設定した範囲(1~10行)のセルを右クリックしたときに出るショートカットメニューを表示しない様な設定にしたく、  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Dim myRowTop As Long , myRowBottom As Long   myRowTop = 1   myRowBottom = 10   If ActiveCell.Row >= myRowTop And ActiveCell.Row <= myRowBottom Then    Application.CommandBars("Cell").Enabled = False   Else    Application.CommandBars("Cell").Enabled = True   End If  End Sub としました。 これで通常問題ないと思いますが、 A1 : F10 を「テーブルとして書式設定」し、この範囲のセルを右クリックしたとき、 ショートカットメニューが表示されてしまいます。 CommandBars([Index]) の Index が違うのかと思い、試してみましたが、直りませんでした。 どなたか詳しい方、どうか教えてください。 よろしくお願いします。

専門家に質問してみよう