質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.79%

エクセル 親子関係の関連付けと帳票作成

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,839

score 19

前提・実現したいこと

エクセルで作成した工事の台帳から指定した工事に関する提出書類(帳票)を作成したい

発生している問題・エラーメッセージ

エクセルで作成した工事台帳があり、現在テーブルにしてある。

工事番号 工事件名 納期 金額 親工事番号
1 AAAA R1.11.15 368,000
2 BBBB R1.11.15 261,900 1
3 CCCC R1.11.15 260,000 1
4 DDDD R1.12.25 47,000
5 EEEE R2.1.18 368,000
6 FFFF R2.1.18 266,000 5
7 GGGG R2.3.12 300,000
8 HHHH R1.12.25 266,000 4

工事番号をクリックしたら、その番号の行の情報を拾い、別ファイルに準備してある雛型に情報を入れ込み、帳票作成を行いたい。
また、工事に対して子工事がある場合は、親工事の選択したら、子工事の行の情報も一緒に拾いたい。
工事番号1のセルをクリックしたら、工事番号2と3の行の情報も一緒に拾う。
親工事番号に番号が入力してある工事番号をクリックした場合は、そのクリックした工事の情報のみ拾う。工事番号2のセルをクリックした場合は2の行の情報のみ。

エクセルVBAを使って作りたいのですが、何からどのように作ったらよいのかわかりません。
よろしくお願いします。

該当のソースコード

Sub ?I???()
'
' ?I??? Macro
'

'
Range("A5,B5,C5,D5,E5,A9,B9,C9,D9,E9").Select
Range("E9").Activate
Selection.Copy
Sheets("?????").Select
Range("A1").Select
ActiveSheet.Paste
End Sub

試したこと

マクロの記録で指定したいセルをクリックしてみました。
記録の内容をヒントにしてみようと思いましたが、クリックしたセルがSelectになっているだけで、条件を付けたい場合、どのようにしたらいいのか悩んでいます。

ご回答いただきましたアドバイスにより、はじめのマクロAを作成しているのですが、今の自分のレベルでできたのが、ここまでです。
アドバイスいただけないでしょうか。

該当のソースコード

Sub マクロA()

' ファイルをひらく Macro
'
Workbooks.Open Filename:="U:\???q????[??\?????.xlsm"

'?t?@?C????A?N?e?B?u

Workbooks.Open "U:\???q????[??\?_????.xlsm"
Workbooks.Open "U:\???q????[??\?????.xlsm"

Workbooks("?????.xlsm").Activate

'?w?b?_?[??O???

Rows("2:" & Rows.Count).ClearContents

'?t?@?C????A?N?e?B?u

Workbooks.Open "U:\???q????[??\?_????.xlsm"
Workbooks.Open "U:\???q????[??\?????.xlsm"

Workbooks("?_????.xlsm").Activate

'?A?N?e?B?u?Z????s?S???I??

Rows(ActiveCell.Row).Select

' ?t?@?C????J?? Macro
'
Workbooks.Open Filename:="U:\???q????[??\?????.xlsm"

'?t?@?C????A?N?e?B?u

Workbooks.Open "U:\???q????[??\?_????.xlsm"
Workbooks.Open "U:\???q????[??\?????.xlsm"

Workbooks("?????.xlsm").Activate

'?w?b?_?[??O???

Rows("2:" & Rows.Count).ClearContents

'?t?@?C????A?N?e?B?u

Workbooks.Open "U:\???q????[??\?_????.xlsm"
Workbooks.Open "U:\???q????[??\?????.xlsm"

Workbooks("?_????.xlsm").Activate

'?A?N?e?B?u?Z????s?S???I??

Rows(ActiveCell.Row).Select

End Sub

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/11/26 17:54

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 3

checkベストアンサー

+1

んと、こういうものは、
人間がやりやすい方法(と思っていたり、既存の社内でのやり方)にプログラムを合わせるか、
パソコン(エクセル君)がやりやすい方法でプログラムを作るかなのですが、
エクセル君に合わせると比較的容易にアプリを開発出来ますが、
人間に合わせると開発の難易度がぐっと上がります。
多分、
ガッツリVBAと格闘できるなら1週間かからず出来ますが、
今のレベルで本業の合間に開発するなら1~3箇月かかるかもです。
下手したら完成しないってこともあります。
それくらいの覚悟がないとVBAを覚えれないと思います。
まぁ気長に取り組まれることをお勧めします。
VBAの本とかみてると、やりたいことが一瞬で終わるみたいなことが書いてありますが、
「手作業で3日かかるなー。VBAなら一瞬で終わるのに」と思っても、
そのプログラムを作るのに3日かかるなんてことはしょっちゅうですから。
2回目からは楽できると思っても、少し仕様が変わったりして結局一から作ったり^^;
まぁ、今Mkasaiさんが作りたいようなツールを、
今ぱっと仕様を聞いて30分で作れるようになるまで、僕は1年くらいかかったかなぁ。。。
それでも、普通の人よりVBAをガッツリやった方だと思いますが。。。

とりあえず、まずやりたいこと(前提条件と欲しい結果)をちゃんと他人に説明できるように
なるところから始めてください。
あ、あと、やりたいことと並行してVBAを基礎から勉強されることをお勧めします。
僕は本を何万円分も買い漁りましたが、ネットでも多数情報があるので、
そちらでも十分かと思います。

で、本題。
エクセル的な作業の流れとしては、

1)選ぶ(そしてマクロ起動)
2)作業用のシートにデータベースから選択したものに該当したデータを抽出(オートフィルター等)
3)見せるよう(印刷用?)シートにデータを差し込む

となると思います。
こういうものは、作業の中間段階をメモする作業用のシートや、
作業用の列などを使うようにすると、ぐっと考え方が楽になります。

とりあえず、雛型?のイメージを提示してみてください。
そのイメージでどうやればいいか考えてみます。

あ、ぼくはいつも、ここの掲示板に張付いているわけではないので、
3日とか1週間とか回答出来ない時もありますので、ご了承ねがいます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/30 14:22

    アドバイスありがとうございました。
    今の自分のレベルではまずやりたい事を伝える事もできておらず、実際に作成するにはちょっと難しのかなと思いました。
    もう少し単純にできるよう作り方の考えを変えて、再度ご質問させていただきます。
    ご丁寧にありがとうございました。

    キャンセル

0

このレベルしかブレークダウンできないのならば、プログラムを作成してくれる業者へ発注したほうがいいと思います。
自分で作るのならば、

  1. 番号を入力とし、その番号の行の情報を拾い、別ファイルに準備してある雛型に情報を入れ込み、帳票作成を行うマクロを作成する(→マクロAとする)
  2. 番号を入力とし、その番号を親工事番号として持つ工事番号のリストを作成するマクロを作成する(→マクロBとする)
  3. 指定された番号を親工事番号としてマクロBを起動して子工事番号の一覧を作成し、親工事番号をふくめ、マクロAを順次呼び出すマクロを作成する(→マクロCとする)
    ※必要ならば孫工事の配慮を追加する。
  4. そのボタンを押せばその工事番号を指定してマクロCを起動するようなボタンを登録するマクロを作成する(→マクロDとする)

新しい工事を受注したらデータを入力し、マクロDを呼び出す。

といったところでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/29 09:53

    ありがとうございました。
    マクロのレベルが質問に書いているレベルですので、お恥ずかしいのですが、まずは教えていただいた手順のとおりに、マクロAから作成してみたいと思います。
    また、お尋ねすることもあるかと思いますが、宜しくお願い致します。

    キャンセル

  • 2019/12/17 17:06

    ご回答いただきました内容で、マクロAを作成しているのですが、それすらまだ完成できない状態です。試した事を追記させていただきました。アドバイスいただけないでしょうか。よろしくお願いします。

    キャンセル

0

  1. 追加されたマクロAは文字化けで読めず、アドバイスのしようがありません。
  2. やるべきことは、作成したい帳票に必要な個別データ(日付等、システムから入手できるデータを除く)をこのexcel上に用意し、雛型上の必要な位置に埋めこんでいくことです。
    現状で都合が悪ければexcelシートも雛型も変更してやり易くすると少し楽になります。
    例えば個別データを挿入すべき位置に固有の記号[@@01@@等、最終的に帳票に現れない記号を使う]を入れておいて置換しやすくする。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.79%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る