各「見積書」ファイルから、会社名・金額等を抽出して「一覧」ファイルに1行に貼付て、ナンバリングしたいです。
1.「見積書.xls」の見積シートから
現在は、B6:鈴木商店(会社名)、B8:岩手物件(件名)、F30:\20,000(金額)が記入してあります。
2. 1.で選択したセル内容を「一覧」ファイルの業者シートに貼り付ける。
3.貼り付ける際、下記のように1行にまとめる。
1001,鈴木商店,岩手物件,\20,000,日付(作成日)
1002,山田商店,神奈川物件,\80,000,日付(作成日)
4.上記の動作を各見積シートにボタンを設置してボタンを押すと動作し、先頭のナンバリングを自動にし入力し業者シートに貼り付ける。
それと同時に自動でナンバリングした番号を見積シートの「G1」セルに貼り付ける。
5.上記の一連の流れが終わると最後に自動保存する。
以上 上記のようなVBAを知りたいです。もしくはもっと良い案がございましたらお知恵を下さい。よろしくお願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
N02です。
質問読み飛ばしていた部分がありました。
>「一覧」ファイルの業者シートに貼り付ける。
ですが、別途、一覧のファイルがあって、業者の数のシートがあるということでしょうか。
更に、見積書の数だけシートがあったりするとか?
ブックの構成ですが、見積書入力用シート、データ一覧シートの2つにします。
必要であれば、入力済みデータの確認用のシートを作成します。
3枚のシートがあれば十分かと思います。
ファイルを分けたり、シートを分けたりする必要はありませんし、作業が複雑になるだけです。
シートの構成には沢山の失敗の経験から得るところが多いですが、
初心者の方の失敗の事例の多くが会社ごとにシートを分けたり月ごとにブックを分けたりするところから始まっています。
十分に検討してみてください。
No.4
- 回答日時:
質問の意味の良くわからない質問だが推測して答えてみる。
「見積書.xls」の見積シートといっているのは、シート数は相当数あるのだろう。
すると見積書.xlsブックの全シートを捉えるVBAコードを知る必要があると思う。
これは関数などでは難しいと思う。
シート名を捉えるのは(シートが多くて、しつこくなったら中断はCTRL+PAUSE?BREAKキーを押す)
標準モジュールに
Sub test01()
Dim sh
For Each sh In Worksheets
MsgBox sh.Name
Next
End Sub
をやってみて納得すること。
ーー
このShで各シート(オブジェクトが捕まえられる)。
別ブックに出す、になっているが、初心者用に同一ブックの「一覧」シートにリストを出すことから勉強したら。
その場合、厳密には一覧シートは除く
Sub test01()
Dim sh
For Each sh In Worksheets
If sh.Name = "一覧" Then GoTo p01
MsgBox sh.Name
p01:
Next
End Sub
ーーー
後はMsgBox sh.Nameのところは本来の処理に置きかえる。
結局
Sub test01()
Dim sh
i = 1 '一覧での開始行
'---
For Each sh In Worksheets
If sh.Name = "一覧" Then GoTo p01 '一覧は対象外
' MsgBox sh.Name
Worksheets("一覧").Cells(i, "A") = i '連番
Worksheets("一覧").Cells(i, "B") = sh.Cells(6, "B") '会社名
Worksheets("一覧").Cells(i, "C") = sh.Cells(8, "B") '件名
Worksheets("一覧").Cells(i, "D") = sh.Cells(30, "F") '金額
Worksheets("一覧").Cells(i, "E") = Date '実行日付
i = i + 1
p01:
Next
End Sub
ーーー
結果 の一部 A-E列 B,C列の中身はでたらめだが。
・・・・
4absd332008/11/7
・・・・
ーー
何回も質問してるらしいが、この際VBAを勉強したら。
コード10数行で終わりだ。
仕事にエクセルを使うにはVBAの習得は必須と思う。
別ブックに出す方法は質問者が今後勉強のこと。
No.3
- 回答日時:
何かよくわかりませんが、要は目次というかブックの一覧を作るのが目的のように感じますが・・・
同様のフォーマットのシートが複数あって、それの一部を抽出して一覧を作成するって言うふうに読み取ったのですが、違っていたら失礼。
どうせ作るなら、
> 1.で選択したセル内容を「一覧」ファイルの業者シートに貼り付ける
的な処理ではなくて、「ブックの一覧を作る」という処理にしておいたほうがいいのでは?
各シートがどのようなタイミングで増えていくのか(あるいは、ある日セットで揃うのか)不明ですが、仮に、逐次増えていくとしても、既に一覧に載っているものはコード番号があるので識別できそうだし。
(安全のため、他にも「記載済み」を確認できる識別子をもうけておいた方が良いと思いますが。)
『一覧シートがない場合は一覧シートを作成し、既にある場合はそれに追記する、みたいな形で、ブック内の全シートを見て一覧を作る』処理にしておけば良さそうに思いますが?
それにしても、なんだか、『教えて!goo』というより『作って!goo』みたいな感じですね・・
No.2
- 回答日時:
前にも同じ質問拝見したと思います。
見積シート
B3 =TODAY()←今日の日付
B5 =MAX(一覧シート!A:A)+1←ナンバリング
B6 会社名
B8 件名
F30 金額
一覧シート
A B C D F
見積番号 会社名 物件名 金額 作成日
1001 鈴木商店 岩手物件 \20,000 08/11/07
・・・ と準備
見積シートにボタンを作成、VBエディター開いて
Sub Macro1()
GYOU = Worksheets("一覧シート").Range("A65536").End(xlUp).Row + 1
Worksheets("一覧シート").Cells(GYOU, 1).Value = Range("B5").Value
Worksheets("一覧シート").Cells(GYOU, 2).Value = Range("B6").Value
Worksheets("一覧シート").Cells(GYOU, 3).Value = Range("B8").Value
Worksheets("一覧シート").Cells(GYOU, 4).Value = Range("F30").Value
Worksheets("一覧シート").Cells(GYOU, 5).Value = Range("B3").Value
End Sub
で試してみてください。コードの意味は理解してください。
No.1
- 回答日時:
マクロの自動記録で出来る範囲の記録を取ってみる。
>2. 1.で選択したセル内容を「一覧」ファイルの業者シートに貼り付ける。
セルを選択したようには思えないのですが。
何をもって選択した事になるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでシートコピー後、シート名...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイルを開いたと...
-
エクセルの複数シートの保護を...
-
Excelで同じシートのコピーを一...
-
EXCELで1ヶ月分の連続した日付...
-
Accessのスプレッドシートエク...
-
エクセルVBA 串刺し計算の際、...
-
Excel、同じフォルダ内のExcel...
-
Excelで金銭出納帳。繰越残高を...
-
シート名ではなく、相対位置で...
-
シートが違う2枚のエクセルシー...
-
Excelのシートを、まとめて表示...
-
エクセル:ブックを開くとき、...
-
excelでシート毎の最終更新日を...
-
excelで会議室予約表の作成(マ...
-
Excelが開かない!印刷プレビュ...
-
エクセルで前シートを参照して...
-
別シートの最終行に貼り付けす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
Accessのスプレッドシートエク...
-
エクセルのシート名をリスト化...
-
複数シートの特定の位置に連番...
-
Excelのシートを、まとめて表示...
-
エクセル 計算式も入っていない...
-
スプレッドシートの関数VLOOKUP...
おすすめ情報