Excel4.0の「xlm」ファイルについて

このQ&Aのポイント
  • Excel4.0の「xlm」ファイルは昔はよく使われていた
  • Excel4.0のマクロはExcelのシートのセルに書き込まれる
  • Excel4.0マクロはVBEにソースコードを書き込まず、セルに命令を書く
回答を見る
  • ベストアンサー

拡張子「xlm」のファイルについて

会社のExcelファイルで、拡張子が「xlm」のファイルがありました。Excel4.0というずいぶん古いバージョンのマクロのようですが、 (1)昔はこういうExcel4.0の「xlm」ファイルって、結構使われていたのでしょうか? (2)これのマクロはExcelのシートのセルにだけ書き込まれるものなのでしょうか?というのも、VBE画面でソースコードを見ようにも、VBAモジュールが全くなく、ソースコードらしきものはExcelのシートのセルにしか書かれていないからです。Excel4.0マクロって、VBEにソースコードを書き込むんじゃなく、Excelのシートのセルに命令を全て書いて動かすものなんでしょうか?

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

  • ベストアンサー
回答No.2

こんにちは。 >(1)昔はこういうExcel4.0の「xlm」ファイルって、結構使われていたのでしょうか? それほど多くないと思います。それは、ほんの短い期間で、Ver.5に以降した時には、Visual BasicのVBAが搭載されました。Ver.4マクロ関数は、構造化がしにくいので、単発のマクロになってしまいます。 >(2)これのマクロはExcelのシートのセルにだけ書き込まれるものなのでしょうか? 今でも、使えます。VBAのような言語とは違い、関数型のマクロ言語です。 「マクロ関数」と呼ばれていて、今まで、Ver.4マクロは、駆逐するという話でしたが、Office 2007からは、なくてはならないものになってしまいました。しかし、マイクロソフト側では、その仕様を公にする様子がありません。(私は、ブランクがあるので、もしかしたら、しているかもしれません。) >Excel4.0マクロって、VBEにソースコードを書き込むんじゃなく、 VBAでも、Excel 2007以上では、このようにして、マクロ関数を使ってリボンを隠します。  Application.ExecuteExcel4Macro ("SHOW.TOOLBARS(""RIBBON"",FALSE)") また、印刷系やグラフ系には、未だ、Ver.4マクロ関数が利用されます。 >Excelのシートのセルに命令を全て書いて動かすものなんでしょうか? シートのセルに書くのは、その前のバージョンのようです。DOSで知られたLotus123やMS-Multiplanは、そのようなスタイルでしたが、ExcelのVer.4からは、シートの挿入で現れる「Ver.4 マクロ」の、マクロシートです。 書き方は、このような書き方をします。 [ユーザー定義関数名] =ARGUMENT("rng",8) =GET.CELL(48,rng) =IF($A$4,"数式","定数") =RETURN(A5) [マクロ関数のヘルプ]より GET.CELL ->48->セルに数式が含まれていれば TRUE を、定数が含まれていれば FALSE を返します これらは、ほとんど、VBAに書き換えが可能ですが、一部で、書き換えできないものが残っています。

absolute_space
質問者

お礼

ありがとうございます。やはり、かなり古いものなんですね。

その他の回答 (1)

  • sknbsknb2
  • ベストアンサー率38% (1127/2910)
回答No.1

VBAがOfficeに実装される前は、マクロシートというものが存在して、マクロを動かすときはこれを開いておく必要がありました。 そのマクロは今でも動くはずなので、シートを開いた状態で「すべてのマクロを表示」してみると、ボタンに割り付けたりすることができますよ。(多分(^_^; )

absolute_space
質問者

お礼

そのExcel4.0マクロは確かに動きますし、業務で実際に使用しています。しかしまあ、VBAに取って代わられた現在、そのマクロのメンテを今後出来る人がいるのか怪しいし、見直しが必要なんですかね。

関連するQ&A

  • 他のExcelファイルのVBAコードを検索したい

    他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。 仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。 「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。 なお環境はWindowsXPのExcel2003です。 よろしくお願いいたします。

  • Accessのマクロをテキストファイルへ出力したい

    どなたかヒントを御願いします Accessのモジュールは、下記URLにてテキストファイルへ出力できますが、 Accessのマクロは、どのようにすれば良いのでしょうか? GUIでは無く、VBScriptやExcelのVBAにて実行したい Accessのモジュールを出力するURL↓ http://www.7key.jp/program/accapi/vbe.html

  • Excel2000とExcel2002のVBAの違いについて。

     以前、このカテゴリーにて、Excel2000におけるVBAのマクロを教えてもらったのですが、そのマクロ入力済みエクセルファイルをExcel2002へ移植したら、上手くVBAが働きません。  具体的にいうと、シート1に入力したデータの履歴を、シート2にて保存していくマクロなのですが、Excel2002では履歴のシートに上書きしていくことがあります。(たまに発生する)  Excel2000ではキチンと履歴のセルが全て残ります。  どなたか、この不具合を認識しておられる方。もしくは、対策をご存知の方がいらっしゃいましたら、教えてください。  

  • VBAでのマクロ削除

    複数のExcelファイルを読み込み必要なデータのみをsheet1に寄せ集め最後にExcel形式で保存するというコードを書きました。保存したExcelファイルは、次回同じVBAのコードからWorkbooks.Open Filenameで開く必要があるため、マクロを削除してから保存しないといけないことに気付きました。 ACompo = ExcelWorkbook1.VBProject.VBComponents.Item("module1") ExcelWorkbook1.VBProject.VBComponents.Remove (ACompo) 最終的にやりたいことは、3つのフォームと2つの標準モジュールを削除したい(ワークブックモジュールにもコード書いてありますのでそれも) ということになります。 よろしくお願いします。

  • エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい

    エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。

  • エクセルのマクロがどこに格納されているのか分かりません

    Excel2003です。エクセルを開く際にマクロの有効・無効を問うセキュリティ警告が出ます。ですのでこのファイルにマクロが含まれているのは間違いないと思います。 ゴールシークを実行するごく簡単なマクロなのですが、マクロのモジュールがどこに格納されているか分かりません。おそらく基本が分かっていないのだと思いますが、ご教示くださいませ。 ツール-マクロ-VBEを立ち上げると、プロジェクトエクスプローラに表示されるのは次のとおりで、モジュールが表示されません。 funcres (FUNCRES.XLA) VBAProject (ファイル名.xls) └Microsoft Excel Objects  └Sheet1 (Sheet1)  └ThisWorkbook このファイルは2枚のシートで構成されており、計算式などが記述されているSheet1と下記3行の記述があるMacro1です。 ツール-マクロ-マクロ-編集を実行すると、Macro1シートのセルに飛びます。そのシートには1列3行の記述があり、次のとおりです。マクロの実行で飛ぶのは一番上の行です。 Record1 =GOAL.SEEK("R4C5",0,"R4C8") =RETURN() ちなみに"R4C5"に記入されているのが式、"R4C8"に記入されているのが変数、式の値の収束目標値はゼロです。 Record1が記入されているセルは名前が定義されています。名前はRecord1です。 何となくVBEのモジュールに記載されるはずのものがMacro1シートに記述されているような気がしますが、よく分かりません。参考書などを引いたのですが、分かりませんでした。等号があるので関数かと思いましたが、GOAL.SEEKやRETURNという関数はありませんでした。 要領の悪い質問で申し訳ありませんが、ご教示よろしくお願いいたします。

  • Excel 2003のVBAマクロデータをExcel 2007で見たい

    Excel 2003のVBAマクロデータをExcel 2007で見たい。 Excel 2003でVBAマクロを登録したExcelファイルがありますが、今回、Excel 2007をインストールして、該当ファイルを開いたところ、「マクロデータを削除しました。」とメッセージが出て、VBEを起動してもマクロが見えなくなりました。OSはWindowsXP SP3です。Excel 2003で登録したVBAマクロをExcel 2007で削除されないで、次の2点について、可能にするにはどうすればよいか、ご教示願います。 (1)マクロデータを残す方法。 (2)マクロ起動する方法。

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • VBA(Excel2007からExcel2003の注意事項)

    Excel2003のマクロが起動しません。 Excel2007で新しいマクロの記録(自動)を行ったExcelファイルがあります。それを別のPCのExcel2003で実行すると、エラーが発生し、プログラムが停止します。 (両方のファイルの拡張子は***.Xlsです。) VBAでExcel2003から2007にバージョンアップでは問題ないようですが、2007から2003にバージョンダウンするうえで注意事項があれば、教えて下さい。よろしくお願いします。

  • エクセル マクロ一覧

    開いているブックにあるマクロの一覧を作れないものでしょうか? モジュール、シート、ユーザーフォーム内にあるマクロすべてです。 VBAのチェックシートとして使いたいのですが エクセルバージョンは2003です

専門家に質問してみよう