マクロを使わないと使えないエクセルの作成方法

このQ&Aのポイント
  • エクセルのシートをマクロで制御している場合、一部のシートを非表示にする方法がありますが、マクロを無効にするとそのシートが表示されなくなります。
  • エクセル2003までは効果的でしたが、エクセル2010以上では機能しません。
  • エクセル2010以上でマクロを使わずに特定のシートを非表示にする方法があれば教えてください。
回答を見る
  • ベストアンサー

マクロを有効にしないと使えないエクセルの作成

これまでは、何も無いシート1枚だけを表示し、他のシートをxlSheetVerryhiddenにして、Workbook_Openで 他のシートをxlSheetVisibleにしておりました。ただ、見せたくないシートもけっこうあるのでシートの区別が面倒でした。 ところが、そんな面倒なことをしなくとも、[マクロを無効にする]で開くと使えないxlsファイルの作り方がありました。 ↓ http://www2.aqua-r.tepm.jp/~kmado/ke_m9.htm エクセル2003でテストしたところうまく行き、これを使わせていただこうかと思いました。 ところが、エクセル2010でやってみると、まったく働いてくれません。 このようなやりかたをエクセル2010以上で使う方法があれば教えてください。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは(^^) おそらく、 .xlsmブックとして作成・保存したブックは、アドインブックとして上書きが出来ない、 といことを問題にしているのだと思います。 [名前を付けて保存]で .xlam または .xls または .xla として作成・保存したブックであれば、 アドインブックとして上書きが出来ますから、 ファイルフォーマットをやり直すだけでそのまま、 ご要望通りになるかと思いますが如何でしょう? もっとも、 マクロを無効にしてブックを開く人が居ることを想定に入れるなら、  必然的にExcelのデザインモードの扱いを理解している人も想定するということで  マクロによってシートが表示された後、のブックを  デザインモードにしてから上書き保存する ということも想定される訳で、 完全とはいえないけれど、 .xlam(アドイン)で保存するのがベターなようです(.xls | .xla ではなく)。 .xlsmブックで実現する方法はないと思います。 "マクロ有効ブック"という概念が生まれてからは、ある意味必然の流れとして、 ファイルフォーマットの変更に制限が掛るのも避けようがないことかと。  (誤解する人がいるといけないので、、、   ここで挙げた拡張子はすべてファイルフォーマットを指す為の略記です   拡張子だけを書き換えたとしてもファイルフォーマットは換りません) 蛇足ですが、 著作権に関連して、無断の転載・投稿を禁じられているソースについては こちらが付ける回答も限定的にならざるを得ません。 可能なら著作(権)者サイドに現行バージョンへの互換を相談するのがベター、 だったかも、、、と、一応、添えておきますね。 今回は専ら運用上の相談、一般的なバージョン互換の問題として 理解しましたし、その範囲でしかお応えしていませんので。 因みに、ですけれど、 > ...そんな面倒なこと... と仰る方法ですと、 マクロを無効にしてブックを開いてしまった人に対する告知(周知) が徹底できるでしょうし、親切な感じはしますよね。 以上、何か不足がありましたら、補足欄にでも書いてみて下さい。 それではまた。

emaxemax
質問者

お礼

cj_moverさん、ありがとうございます。 書き方が悪く、すみませんでした。 エクセル2010形式(xlsm)で保存したファイルでは有効にならなかったということです。 アドインブックというのはまったく存じませんが、xlsmでは参考URLにある方法は使えないということですね、残念です。 ただ、面倒でもxlSheetVerryhiddenでの方法のほうが、使う側には親切というご指摘はそのとおりですね。 こっちの方法の簡易化を考えてみることにします。 また質問させていただくことになるかと思いますが、よろしくお願いいたします。

その他の回答 (1)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

#1、cjです。 十分にテストしたつもりが不十分でした。 あらためて手順を踏んで試してみた処、 .xlam(アドイン)では、BeforeSave イベントよりも前に 拡張子とファイルフォーマットの相違を指摘するダイアログが表示され うまくいかないケースを確認しました。 逆に、うまくいくケースがどのような手順で作成出来るのか 再現する方法が見つからなくなってしまいました。 すみません。暫定ですが、#1についての訂正として .xls または .xla 形式で作成・保存したブックならば、有効、 ということにしてくださいませ。 失礼しました。

emaxemax
質問者

お礼

わざわざありがとうございます。

関連するQ&A

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • シート単体の時のみマクロを有効に。

    メニュー画面となる「menu.xls」ファイルと、コードごとの管理の為の「コード.xls」ファイルがあります。 「menu.xls」はシート「メニュー」・「リスト」・「フォーマット」の構成で、この「フォーマット」シートにコードの名前をつけて保存したものが、「コード.xls」となっています。 「フォーマット」シートにはいくつかのVBAを施してあるんですが、これを 「menu.xls」として開くときには実行させず(無効化)、「コード.xls」として開くときには実行(有効化)させたいのです。 現在、「コード.xls」としてシート「フォーマット」を開いた時はマクロがWorkbook_Openで動作してくれて構わないのですが、「menu.xls」として開いた時もシート「フォーマット」のWorkbook_Openが動作してしまい、エラーが出てきてしまいます。 「フォーマット」シートに実行判定を付ければいいのでしょうか? どうしたらいいか全くわかりませんので、ご教授頂きたくお願い申し上げます。

  • AccessからExcel内のマクロ無効について

    いつもお世話になっております 以下の内容についてご存知の方、ご教授お願い致します win2000 office2000 マクロを含むExcelファイル内のデータをマクロを無効にし アクセスから取り込むという処理を行いたいのですが、何故か マクロが無効になりません。WinXP、Office2000の環境ですと マクロを実行せず走るのですがwin2000だとダメです win2000だとマクロを無効には出来ないのでしょうか? Dim objMyxl As Object Dim wbk As Excel.Application Dim vrtA As Variant Dim intCnt As Integer On Error GoTo err Set objMyxl = CreateObject("Excel.Application") objMyxl.EnableEvents = False objMyxl.Workbooks.Open Filename:="C:\test\Makuro.xls"  ←マクロが走る vrtA = objMyxl.worksheets(1).Range("A1").CurrentRegion.Value objMyxl.Workbooks.Close objMyxl.Quit objMyxl.EnableEvents = True ちなみに、Excelのマクロ側はこの様な感じでテストしてます Private Sub Workbook_Open() MsgBox "open" End Sub

  • エクセルのマクロでシートのコピー

    いつもお世話になっております。 エクセル2000で次のことをマクロで行いたいのです。 いくつかWorkbookが開いている状態で、シートのコピーを行うのですが、シート名やブック名はその都度違います。 具体的には、Workbook"A" に "a"、"b"、"c" の3つのシート、Workbook"B" に "f"、"g"、"h"の3つのシートがあり、 Workbook"A" の Sheet("a") を Workbook"B" の Sheet("h") の前にコピーしたいのです。 Sheets(1).Copy before:=Workbooks("B.xls").Sheets(3) ところがWorkbookの名前がその都度変わるので困っています。 ブック間の移動は ActiveWindow.ActivateNext などで行っていますがシートのコピーがどうしても分からないので お願いします。  

  • マクロでファイルオープン

    エクセルのマクロでtest.xlsファイルをオープンする際に元々test.xlsファイルの属性が読み取り専用になっているものを、読み取り専用チェックをはずした状態でオープンすることは可能でしょうか? Workbooks.Open Filename:="test.xls" ReadOnlyRecommended:=False とかやってもなかなか上手くいきません。

  • VBA マクロ付きExcelファイルを無効で開く

    タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

  • エクセルのマクロで作成した関数を他のエクセルのファイルから参照できるのですか?

    エクセルVBAに関して質問です。 a.xlsというファイルに複数のシートがあり すべてのシートにあるデータと「計算」ボタンがあります。 「計算」ボタンを押下すると、マクロが実行され 計算結果が同じシートに表示されます。 データの内容はシートごとに違いますが、 「計算」ボタンで呼び出したいマクロはすべて同じです。 この「計算」ボタンを押すと実行されるマクロを b.xlsに記述したいのですが、 (他のエクセルのファイルにも使いまわしたいので) そのようなことは可能なのでしょうか。 またどのようにマクロを記述すればこのマクロを 呼び出すことができるのでしょうか。 分かりにくい文章で申し訳ございませんが ご教授くださるとうれしいです。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • エクセルマクロでファイルを開かず行をしらべたい

    こんにちは! エクセルマクロでファイルを開かず一番下の行を調べたいのですが、どうしたらよいでしょうか? 色々試行錯誤して、下記を組んでみましたが、上手くできませんでした。 test1のエクセルに下記のマクロを入れてあります。 C直下のtestフォルダの中のtest2.xlsのsheet1のファイルを読み込みたいです。 Dim line As Long Dim names As String names = "C:\test\[test2.xls]sheet1" line = ExecuteExcel4Macro("'" & names & "'!R1C1").End(xlUp).Row 「ファイルを開かず一番下の行を調べる」ことができれば、上記のマクロを動くようにするでも、別のマクロを提示するでも構いませんので、アドバイスのほどよろしくお願いいたします。

  • エクセルと同じファイル名でcsvを作成するマクロ

    エクセルからCSVファイルをYYMMDD付でマクロを使って 作ろうとしていますが拡張子の「.xls」がどうしても残ってしまいます。 例えば、「test.xls」が「test.xls070326.csv」のように。 これを「test070326.csv」とするにはどうしたらよいでしょう。 今のコードはつぎのようにしています。 Sub test1() Dim flname As Variant Dim wb As Workbook flname = ActiveWorkbook.Name + CStr(Format(Date, "yymmdd")) ActiveSheet.Copy ActiveSheet.SaveAs Filename:=flname, _ FileFormat:=xlCSV ActiveWindow.Close savechanges:=False ActiveWorkbook.Close End Sub これでもCSVとしては使えるのですが、気持ちがすっきりしません。 どなたか正解をお願いします。

専門家に質問してみよう