フォルダ内に複数のブック150ほどがあります。
フォルダ内に複数のブック150ほどがあります。 そのすべてのブックの特定シート(sheets(1)など)の、1セルだけでなく複数セル(F36:N100など)範囲を書き換えたいのですが、特定1つのセルの書き換えの事例はあったのですが、複数セル範囲での書き換えが必要です。いちいちセル番地一つ一つの変更内容をVBAに書くのが大変なので、範囲での書き換えができないものでしょうか。予め書き換え元データがあるエクセルブックを開いて、書き換えたいデータ元セル範囲をコピーしておいて、マクロを動かし対象のファイル内の所定セル範囲に貼り付けることも試しましたが、LOOPのたびにコピーモードが解除されてしまいうまくいきませんでした。できれば、マクロ実行中に「書き換えたい範囲(コピー元)をダイヤログで開いてセル範囲を指定する」ことができればと思っています。うまい方法はありませんでしょうか。 Sub フォルダ内ブックデータ一括書き換え() Dim FolderName As String Dim index As Integer Dim fileName As String FolderName = Application.GetOpenFilename If FolderName = "False" Then Exit Sub End If index = InStrRev(FolderName, "\") FolderName = Left(FolderName, index) fileName = Dir(FolderName & "*xls*") Do While fileName <> "" Workbooks.Open FolderName & fileName 【開いたブックに対して、コピー元のエクセル表から得た セル範囲のデータを貼り付けたい】 【フォルダ内のすべてのブックに同じデータを貼り付け書き換えたい】 sheets(1).Cells(2, 2).PasteSpecial (xlPasteValues) Workbooks(Workbooks.Count).Save Workbooks(Workbooks.Count).Close fileName = Dir() ' Loop End Sub
Visual Basic | Visual Basic・74閲覧・100
ベストアンサー
要は、複数のブックの複数のシートの複数のセル範囲に対して まとめて書き込みを自動(作業途中で中断することなく)で行いたいということですかね? 例えば、マクロを実行するブックに、全ての書き込み情報を記載してそれをもとに書き込みすればいいんじゃないですかね? 作るのが多少大変ですが、最初の作っておいて、2回目は追加や修正くらいですむなら、マクロ実行して放っておけるので楽かなと思います。 例 マクロ実行ブック(ブック基) 書込み対象のブック(ブック先)←複数あり 事前に書込対象(ブック先)のa.ブック名、b.シート名、c.セルアドレスがわかってるとする。 手順1 ブック基のシート1の A列にa.ブック先のブック名 B列にb.ブック先のシート名 C列にc.ブック先のセル情報 D列に、ブック基のシート名 E列に、ブック基のアドレス を記載する B列E列アドレスはA1:E5みたいな範囲で記載してもよいし、 2列に分けて、A1 E5 とわけてもよい。 手順2 ブック基の 別シートに書込みたいデータを入力する。 このシート名を上記のブック基のD列とE列にリンクさせる。 手順3 あとは、シート1の書込み情報分、手順2を繰り返す。 これで手順1~2で書込み基の情報と書込み先の情報がそろったら 手順4 手順1のシート1の行数分の書込みデータがあるので、ループ処理で繰り返す。 シート1の書込み情報行が100行あれば、それを配列で取り込んでループで回す。 だいたい↓みたいな感じ dim arryInputData as variant arryInputData = Rage("A1:E100") for i = 1 to 100 for j = 1 to 5 select case j case 1 bookName = arryInputData(i,j) ~ case 5 writeAddress = arryInputData(i,j) next i,jで取得したarryInputDataを基にファイルを開いていて書込みすればOkかなと next 100行とか5列と決め打ちしてますが、End(xlup)とか使って変数処理したほうが、データが増えた場合も楽だと思います。
1人がナイス!しています