- ベストアンサー
見積回答書の個別ブックへのコピペ方法
- マクロを使用して、見積回答書の個別ブックへのコピペ方法を紹介します。
- 質問者は茨城県に住んでおり、マクロの技量は少ししかありませんが、教えていただけると助かるとのことです。
- 質問者の会社では仕入れ販売を行っており、仕入先からの見積回答書を受け取ります。受注番号順に一覧で回答が届き、その回答を個別ブックにコピペしたいという要望です。月によって件数は30~100件程度変動します。質問者は、自由なフォルダーに格納された個別ブックを使用しており、特定の個別ブックに見積額をコピペするマクロの作成方法に困っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ある本に次のような記事があります。このmacro-により取り込みたいブックを指定することができ、これにより取り込んだブックが「ブック」、とりこむ側のブックが「thisworkbook」という名前で取り扱うことができます。参考にしてください。 Sub 複数のブックの内容を転記する() Dim ファイル名一覧 As Variant Dim ブック As Workbook Dim i As Integer ファイル名一覧 = Application.GetOpenFilename("Excelのファイル,*.xls" _ , MultiSelect:=True) If VarType(ファイル名一覧) = vbBoolean Then Exit Sub Application.EnableEvents = False For i = 1 To UBound(ファイル名一覧) Set ブック = Workbooks.Open(ファイル名一覧(i)) With ThisWorkbook.Worksheets(1) .Cells(i + 1, 1) = ブック.Worksheets(1).Range("B4").Value For j = 1 To 5 .Cells(i + 1, j + 1) = ブック.Worksheets(1).Cells(7, j).Value Next End With ブック.Close Next Application.EnableEvents = True End Sub
その他の回答 (2)
回答に追加いたします。参考書はソフトバンククリエイティブ社七条達弘・渡辺 健著やさしくわかるEXCELVBAプログラミング改訂版2005年です。なおサンプルのプログラムにミスがあります。dim j as integer の宣言文を追加してください。
お礼
参考書名までご教授いただき、恐縮です。ありがとうございました。
回答いたします。optimumsoup様、有益な情報をお寄せいただきありがとうございます。上記のマクロは複数のブックのデータを、Thisworkbookに取込むものでしょうか? >>はい、そうです。 マクロを少しできるのですが、その多くは動作を記録させて作成する初歩的なもので、マクロ構文を読解する 能力はあまりありません。知らない構文が多くて理解することはかなり難しいですが、流れは下記でしょうか? 1、数あるブックをファイル名一覧より一括して開く。UBound関数で取込むブックの数を設定?。 >>通常エクセルを立ち上げて、メニューバーのファイルから「開く」を押してファイルを開くのとまったく同じ感じです。手動で取り込むファイルを選ぶわけです。 2、Setブックの一番目シートのRange("B4")の値を、ThisworkbookのCells(i + 1, 1) に貼付け。>>そうです 3、For j = 1 To 5 ~ Next ・・・入れ子の繰り返しは理解不能です。>>ブックの一番目シートの7行目だい1列から第5列のセルの値を、Thisworkbookのi + 1行第2列から第6列までののセルに貼り付けをするということです 4、Setブックを閉じる>>そうです 5、ここに記載した1~4の繰り返し>>そうです 6、Application.EnableEvents = False そして True ・・・なぜ必要か理解不能です。>>本の説明では、エラーが発生したとき、上のApplication.EnableEvents = Falseで逃れることができる。しかしそのままではいけないので元に戻すという意味だったです。違っているかもしれません。私のテストランでは問題がありませんでした。 変数などがあるとややこしくて、64.5歳の頭脳にはさっぱり理解不能となります。残念ですが、参考にさせて いただくには理解力が足りません。しかし、Set ブック = Workbooks.Open(ファイル名一覧(i)) が、参考となるやもしれません。>>単純なものからはじめたらよいです。サンプルのプログラムの中に少し入れて試すなど・・・・私はあなたより10歳以上年が多いです。 Thisworkbookのデータから個別のブックのブック名を指定して、そのThisworkbookの他のデータを個別 ブックに貼付けることが希望です。>>サンプルプログラムの「=」の右と左を逆にすればそんなことができます。 もっと情報がありましたら、ご教授いただけますようお願い申し上げます。 >>参考書の名前を探しましたが、まだ見つかりませんので、勘弁してください。確認しておきます。
お礼
丁寧にご回答いただき、感謝申し上げます。お陰様にてマクロ構文の理解が進みました。自分の意図したマクロとなるよう試してみます。今後ともよろしくお願いいたします。
補足
optimumsoup様、有益な情報をお寄せいただきありがとうございます。上記のマクロは複数のブックのデータを、Thisworkbookに取込むものでしょうか? マクロを少しできるのですが、その多くは動作を記録させて作成する初歩的なもので、マクロ構文を読解する 能力はあまりありません。知らない構文が多くて理解することはかなり難しいですが、流れは下記でしょうか? 1、数あるブックをファイル名一覧より一括して開く。UBound関数で取込むブックの数を設定?。 2、Setブックの一番目シートのRange("B4")の値を、ThisworkbookのCells(i + 1, 1) に貼付け。 3、For j = 1 To 5 ~ Next ・・・入れ子の繰り返しは理解不能です。 4、Setブックを閉じる 5、ここに記載した1~4の繰り返し 6、Application.EnableEvents = False そして True ・・・なぜ必要か理解不能です。 変数などがあるとややこしくて、64.5歳の頭脳にはさっぱり理解不能となります。残念ですが、参考にさせて いただくには理解力が足りません。しかし、Set ブック = Workbooks.Open(ファイル名一覧(i)) が、参考となるやもしれません。 Thisworkbookのデータから個別のブックのブック名を指定して、そのThisworkbookの他のデータを個別 ブックに貼付けることが希望です。もっと情報がありましたら、ご教授いただけますようお願い申し上げます。