• ベストアンサー

VBAで仕様書は書きますか?

VBAで仕様書(設計の仕様書?)を書く人はいらっしゃいますでしょうか?それともVBAくらいでは書かないと言う人は多いのでしょうか? サンプルがあるかググって見ましたがほとんどありません。 勉強がてらもし私がいなくなっても何がやりたかったのかわかるように書いてみています。 いなくなったあとド素人コーディングと陰口を叩かれるために書くわけではありませんが…(笑) ワードにまず 1・作ったものの目的 2・物を作ったパソコンのスペックと動作確認したOS 3・各シートで出来る処理を箇条書き(プログラムではありません) 4・プログラムの内容 処理として重要!という部分を抜粋して載せる 例えばプログラムを書きそこに説明として"For Each~Nextステートメントでシート名を検出し無ければシート名を作成する"などコメントを箇条書きしてみましたがどんなものでしょうか? もし皆さんがこのような記述の仕様書をみたらどんな感想を持ちますでしょうか?参考にしたいので意見をお聞かせください。お願いいたします。 また、Visual Basic 6.0 仕様書作成サポートというソフトがあるらしいですがVBAで利用できるようになりますでしょうか?

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

  • ベストアンサー
  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.5

>サンプルがあるかググって見ましたがほとんどありません。 無いでしょうね。 そもそも、仕様書は「VBAだから書かない」「C/C++だから書く」という性格のものではないからです。 言語はあくまでもそれを実現するための道具であって、 仕様書自体は、書く必要があれば書きますし、必要が無ければ書きません。 そして、どのような言語であっても仕様書の体裁は基本的に変わりません。 (少なくとも私は変えてはいけないと思っています。理由は後述。) 最近はPGとSEの分業化も進んでいますので (SEが最新の言語についていけない・・・という説も(笑)) 言語に依存しない仕様書を書くのが普通ですし、 仕様書として優れていると思います。 ユーザーに対して「このような機能のものを作ります」と言う意味で書く仕様書は お金をもらう為にも、そして仕様を明確にする為にも必要です。 家を建てたときに施工主が「部屋の数が1つ少ない」といってゴネても 事前に渡した図面通りであれば、突っぱねることが出来る・・・というわけです。 >このような記述の仕様書をみたらどんな感想を持ちますでしょうか 仕様書は基本的に「プログラムがわからない人が読むもの」・・・ という意識が足りないように思います。 >1・作ったものの目的 目的というよりは、「何をしてくれるものか」と言うことを 概要として最初に書いておくのがいいと思います。 小説でいうならあらすじのようなものです。 >2・物を作ったパソコンのスペックと動作確認したOS これはあまり重要ではないと思います。 OSはともかく、VBAであるならExcel等のバージョンのほうが重要でしょうし。 >3・各シートで出来る処理を箇条書き(プログラムではありません) これはいいと思います。 基本的に仕様書は箇条書きです。 >4・プログラムの内容 処理として重要!という部分を抜粋して載せる 不要です。 わざわざ処理を日本語で噛み砕いて書くのは、 プログラムが分からない人でも何をやっているのかを理解してもらうためです。 プログラムが分かるのであればソースコードを読めば事足りますし 第一、載せたコードを修正した場合はこちらも書き換えないといけませんよね。

その他の回答 (4)

回答No.4

ANo.3です。 すみません、ちょっと追記しておきます。 本来は、仕様書はプログラム作成「前」に書くものですし、プログラム自体を 仕様書に盛り込んで、それに説明を加えるといった書き方は、普通はしないですかね。 別にダメって訳では ないと思いますが、後になって改修の必要が出た場合、 仕様書の修正も面倒な事になりそうですし… 基本設計書として処理の流れを書く場合は、基本的には段落番号等を付けながら インデントも行いつつ、処理の内容(意味)を、そこそこ簡潔に書いてしまえばいいと思います。 例えば、 1.初期処理   1-1.○○○ファイルオープン      1-1-1.○○○からファイル名を取得      1-1-2.オープン処理          エラーの場合はメッセージ「○○○」を出力して処理終了 2.メイン処理   2-1.以下の処理をデータ数分ループ      2-1-1.取得したデータの○○○を○○○に追加      2-1-2. .....   2-2.データ書き込み      2-2-1. ..... 3.終了処理   3-1.○○○ファイルクローズ   3-2.オブジェクト解放      3-2-1.○○○解放      ...   3-3.アプリ終了 …かなり曖昧な書き方ですが、こういう流れとか。 もちろんVBAですので、イベント別に書いたりする必要は出てきますが… あと、もちろん、後で他人が見ても やりたい事が十分分かるよう、省略し過ぎないように する事も大事です(汗)。

回答No.3

一口にVBAとは言っても、いろいろですので… それなりにデカいプログラムも当然書けますし、やろうと思えば クラス等を定義したExcelファイルを共有して、それを参照設定して使い回すとか 多少難儀な事も出来ます。 そうなって来ると、ドキュメントが残っていないと、後で困ることになるかもしれません。 開発業務での話でしたら、仕様書、設計書の作成・納入が契約上定められているかが もちろん大きな要因になりますが、そうでなくても書く余裕があれば、 書いておいた方が無難では あるでしょうね。 (時間が経ったら、作った自分でさえ内容を忘れたりしますし…) 私が過去に携わったVBAを使ったシステムでは、基本設計書の作成は義務付けられ、 詳細設計書は必要ないと判断されれば作らない、って程度のものでしたが、Excel VBAアプリの設計書は作りましたよ。 ちなみに基本設計書だと、処理の流れも多少 概要的な書き方をしますので (参照するデータ等は、きっちり定義しますが)、それを元にプログラムを 作成する場合、多少の脳力が必要となります。 komarimonoさんが書かれてるのは、こっちが近いかな? 要は、処理の流れや使用するデータがはっきり分かれば、それでいいかと思います。 もうちょっと細かい事を言うと、画面定義や画面入出力項目の一覧、エラーメッセージ一覧とかも 表などで付加したりする場合もありますが、フォーマルなものでなければ、そこまでは 必要無い気もします。 (きっちり書こうとすると、表を書く場合が多いので、Excelの方が楽かも) 詳細設計書は(書いた事ありませんが)、ほとんどプログラムを文章にしただけって 感じの詳細な内容らしいので、その文章をプログラムに翻訳すればプログラムが 出来てしまう、ぐらいのもののようです。 その辺の定義は、企業等によって色々あるかとは思いますが、ネットで検索してみれば 色々出てくるかもしれませんね。 (サンプルは なかなか無いでしょうけど、どういう事を書くかという定義的な部分は、あるような気も)

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.2

私は趣味でプログラムを作っているので、ソースをひと様に見せることは、めったにありません。 しかし、仕様、処理や変数の一覧、コメント、修正情報などは「将来の自分のために」なるべく書きます。その際、一瞥して自明のものは省略しますが。

  • k_sidina
  • ベストアンサー率52% (9/17)
回答No.1

仕様書が必要であると思われるなら仕様書を書くと思います。 趣味で作成されたプログラムの仕様書は当然ながら必須ではありませんが、仕事で作ったもので、納品物としてプロ仕が必要なのであれば作るでしょう。 仕様書を自動で作成するソフトですが、 質問者さまは VBA とかいておられますが、Access でも Excel でもその他オフィス製品でも VBA が動くと思いますが、どの VBA でしょう? うちの会社でもだいぶ前に、仕様書作成ソフトを購入しました。 その際、使用したのは A Hot Document だったと思います。 プロ仕は必須ではありませんが、適切なコメントは、最終的に自分を助けてくれる存在になりますので、入れるのはよいことだと思います。

関連するQ&A

  • エクセルvbaでインターネットの履歴を書き出したい

    http://oshiete1.goo.ne.jp/qa5082258.html でも質問したものですが、 エクセルvbaでインターネットの履歴をシートに書き出すことは可能でしょうか? For Each...Next ステートメントとかで 取得できそうな気もしないでもないような、、、 何かわかる方よろしくお願い致します。

  • エクセルVBAで繰り返し条件について

    詳しい方どなたか教えてください。 VBAを書いているのですが、繰り返し条件で上手くいかず困っています。 For Each ~ Next を使って繰り返し処理を行っています。 あるブックに指定した名前のシートがあれば、そのシート内の内容を全てクリアして、 コピー元のシートの内容をコピーして値で貼り付けるようにしたいと思っています。 (ここまでは何となく上手くいってそうです) ただし、該当するシートがない場合は、 該当するシート名のシートを追加し、コピー元のシートの内容を値で貼り付けるようにしたいのですが、上手くいきません。 「ただし~」以降の内容をどのように書いたら良いか分からず困っております。 繰り返しの条件を満たさない場合(?)の処理の仕方を教えて頂けませんでしょうか。 宜しくお願い致します。

  • ExcelのVBA

    ExcelのVBAにてFor~Nextのプログラム処理中に スペース等の指定したボタンを押したらプログラムの処理を終了させる事はできるのですか? どうすれば良いのかわからないので教えてください。

  • VBA

    VBEの標準モジュール(例Module1)にVBAのプログラムを書き、 実行した時、ワークシート(例Worksheets(”sheet1”)のウインドウを自動的に開くには(前面に持ってくるには)どのようにコーディングすれば良いのでしょうか。今は実行後確認するため、プロジェクトのSheet1で右クリックして「オブジェクトの表示」でSheet1を出したり、タスクバーをクリックしていますが。まずSheet1を前面に出して処理をしたい。Activate,Select、Showなど試しても効果がありません。

  • (vba)フォルダの中の全てのファイル名を取得したい

    エクセル2003を使用しています。 「C:\Documents」にはいっている全てのファイル名をDebug.Printで取得したいのですが For Each...Next ステートメントとDirと "*.*"を使うのはなんとなくわかるのですが どうすればいいのかがさっぱりわかりません。 ご教授いただけないでしょうか? よろしくお願いします。

  • VBAでエクセルをシート名を気にせず読み込むには?

    ACCESS2000のVBAでエクセルを読んでいるプログラムを作成しています。 今までは、その受け取っているエクセルのシート名が固定だったのですが、次回からシート名が可変になります。そこで相談なのですが、シート名が可変でも読み込む方法はありますか。ちなみにシートは1つです。(インポート以外でお願いします。) 現在のコーディング例 一部抜粋 Dim wb As Workbook 'ワークブック Dim ws As Worksheet 'シート 'マスタのExcelファイルを開く Set wb = Workbooks.Open("test") Set ws = wb.Worksheets("SHEET1") <=ここが可変になります。 i = 0 Do Until IsEmpty(ws.Cells(StartRow + i, StoreNoCol)) nohindate = ws.Cells(StartRow + i, 2) '日 i = i + 1 Loop 宜しくお願いします。

  • ワークシートに対して処理をするVBAについて

    初めまして、ワークシートに対して処理をするVBAの記述に関して質問させてください。 複数のシートがあり、そのうち3シート目以降から最後のシートまで特定の処理をしたいと考えています。(最後のシートまでの数はそのときによって変動します。) しかし、 For Each sh In Array("A", "B", "C") のようにシート名を指定すると選択したシートに同時に処理をしてしまいます。選択したシートに同時に処理をするのではなく、1シート目を処理したら次のシート…という方法にしたいのですが、この場合どのように記述すればよいのでしょうか…?(T_T) ちなみに、 For Each sh In Worksheets という記述だと、全てのシートが処理の対象になってしまうのでだめなんです…。3つ目以降のシートに処理をしたいのです…!どなたかご教示いただけると嬉しいです!よろしくお願い致します!m(_ _)m

  • VBA 同じ処理のボタンを複数のシートに配置

    VBA初心者です。 VBAで進むボタン1つを作成し、このボタンに下記の処理をさせます。 sheets("シート名").range("b1")=range("b1")+1 今の所、こちらはうまく処理されます。 しかし、違うシートにこの進むボタン2つ目を作成し、同じ処理をさせた場合、2つ目進むボタンだけうまく処理されません。 ※1つ目の進むボタンはうまく処理されます。 1つ目、2つ目の進むボタンを処理させるにはどうしたらいいでしょうか。 ちなみにそれぞれ別のシートに15個ほど進むボタンを作成したいです。 よろしくお願いいたします。

  • Excel VBAでセルの色塗りについて

    VBAの初心者です。 Excel2003であるセル範囲のセルが色Aに塗られています。 今、このセル範囲でセルの値により5つの条件でセルの色を塗り分け て、条件に合致しないものは元の色のままにしたのですが、For Each とCASEステートメントを使ったVBAプログラムを教えて下さい。

  • VBA シート名を先月の名前にしたい

    VBA シート名を先月の名前にしたい お世話になります。 excelのシート名を、当年先月の名前(2013年4月なら”2013年3月”)にしたいのです。 当月ならうまくいくのですが、VBAでいいコーディングがあればご教示ください。 宜しくお願いします。

専門家に質問してみよう