- ベストアンサー
Excelで見積書のテンプレートを作成する方法とデータ管理について
- 見積書を作成するためのExcelのテンプレートについて、データ管理の方法について知りたいと思っています。会社の他の人がAccessを使っていないため、Excelで作成する必要があります。
- 見積書の原案は作成しましたが、データだけを保管する場所を作ってつなげる方法がわかりません。インターネットで検索しても詳しい情報が見つかりませんでした。
- 素人でもExcelでテンプレートを作成することは可能でしょうか?また、テンプレート作成の参考になるウェブサイトはありますか?また、Excelで連番の見積No.を作成する方法を教えていただけますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロの解説サイトはあまり存じ上げませんが、Excel VBA や Excelマクロ などで検索すれば解説サイトなどが見つかるかもしれません。 仮に#1に回答したようなものをマクロで書いてみるとこんな感じでいかがでしょう? ちなみにマクロは[ツール]→[マクロ]→[Visual Basic Editor]から作成できます。 仮に、こんな条件だとします。 データのシート名をSheet1、フォーム(見積書)のシート名をSheet2とする。 Sheet1の列はそれぞれ、A:No. B:日付 C:宛名 D:数量 E:単価 としておいたとする。 Sheet2にはあらかじめ作った見積書の書式があり、B3にNO. B5に日付 B7に宛名 D9に数量 E9に単価 を表示させるとする Sheet2のA1に行数を指定するとフォームに各データが入るようにする VisualBasicEditorの画面のSheet2のコードに以下のようなマクロを追加します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim gyou Dim shtData As Worksheet Dim shtForm As Worksheet Set shtData = Worksheets("Sheet1") Set shtForm = Worksheets("Sheet2") If Target.Address = "$A$1" Then gyou = shtForm.Range("A1").Value shtForm.Range("B3").Value = shtData.Range("A" & gyou).Value shtForm.Range("B5").Value = shtData.Range("B" & gyou).Value shtForm.Range("B7").Value = shtData.Range("C" & gyou).Value shtForm.Range("D9").Value = shtData.Range("D" & gyou).Value shtForm.Range("E9").Value = shtData.Range("E" & gyou).Value End If End Sub これを応用すればどのセルからどのセルへと自由に改造することもできるように思います。 ただし上のものはあくまで仮に書いたものですので、色んなバグがあると思います…。 (数値以外を指定するとエラーとか…。)
その他の回答 (1)
- chupark
- ベストアンサー率41% (90/218)
ご質問の文を拝見して、たとえば Sheet1に用意した1行1レコードのデータを Sheet2に用意した見積書フォームの変更する部分(金額や日付などなど)の該当セルにリンクさせる というようなことを考えたとして、 「どの行(どのレコード)を見積書の枠内に表示させるか」 をマクロなどで制御するというような仕組みなら割と簡単にできそうな気がしました。 たとえば、見積No.200のデータが200行目に入っていたなら、200をどこかのセルに入力するとNo.200の見積書がSheet2上にできあがる…というようなイメージです。 どのようなフォームなのかがわからないので、ここで具体的な回答ができないのが残念ですが、マクロなどの解説なら多くのサイトでされているはずです。
補足
回答ありがとうございます。 そうです!!その通りです! 私の説明不足な文章を解析していただいてありがとうございます。 該当セルにリンクさせるやり方がわからなくて・・・。 作りたいのは見積書です。件名や日付などは1対1なのですが明細などは何行もあるため、1対多のやり方などさっぱりわからなくて困っています(^^ゞ これなら素人でもわかる!!っていうサイトご存知ですか?色々と検索したのですが見当たらなくて・・・。
お礼
お返事遅くなってすみません。 詳しく教えていただいてありがとうございます。 VBAという発想がなかったもので色々と勉強したいと思います。ありがとうございました。