1つのエクセルファイルに 開いている1つbookの名称・数値を 自動で書き込みは、できるのですが、
複数のbookを自動で 書き込む VBAの作成方法を教えてください。
具体的には、USBメモリー内に 数値を入れたいxlsファイルがあります。”G”¥編集¥Sheet2) 1~100までのbookが開いています。(マクロが 組まれていて勝手に、bookが 開きます。)
(何個かのbookは欠けています。)
”book1” ”シート1”の(B2=男)→"編集" ”シート2”の(C10)
"book1"の(E10:O10)→"編集"の(E10:O10)(数値)に書き込み。
”編集”(A10)にbook1と入力。
繰り返して
”book2” (B2)→”編集” (C12)(1行開けたい)
”book2" (E10:O10)→(E12:O12),(A12)にbook2と入力。
普通のbookには、(B2=男)、(E10:O10)に 数値が 同じ範囲に入っています。
たまに違うbookに、(B2=女)、(E9:O9)に 数値が 入っています。
まず、連続でBook1~100までの一行開けて繰り返し書き込む方法が わかりません。
まだまだ、VBA 勉強中ですが いろんな本やネットで 調べましたが、うまくいきません。
何卒よろしくお願いします。
No.1
- 回答日時:
読解力が足らないのか?いっている事がゴチャゴチャしていて判りません。
「複数のbookを自動で書き込む」とは次のようなことですか?
① 今開いているブックの名前の一覧表を作りたい。
② 開いているブックのB2セルの値によって何かをしたい。← 特にこの何かが良く判りません
No.2
- 回答日時:
たとえばこんなことでしょうか?
A列にブック名
そのブックの B2セルが「男」ならば B ~ L列に E10:O10 のデータを書き込む
B2セルが「女」ならば B ~ L列に E9:O9 のデータを書き込む
これを開いているブック総てについて行う。
「連続でBook1~100までの一行開けて繰り返し書き込む方法」な記述も有るので1行おきに作るのでしょうか?
「”シート1”」や「”シート2”」という言葉も出てきますが、この辺も良く判りません
「→”編集”」はセルの値を「編集」に変えるという事ですか?
ところで100個近くのファイルが開いているだけで非常に邪魔だし、やたら重くなりそうですが問題ないのでしょうか?
一般的には、あるフォルダーにあるブックを1つ開いては処理し一度閉じて次を…になると思うのですが?
No.3
- 回答日時:
とりあえず判っている開いているブックの一覧表の作り方だけ
---------------------------------------------------------------------------
Sub 一覧表作成()
Dim 行 As Long
Columns("A:A").ClearContents
For 行 = 1 To Workbooks.Count
Cells(行, 1).Value = Workbooks(行).Name
Next
End Sub
---------------------------------------------------------------------------
※ A列に開いているブックの一覧を作成します。(このままだと自分の名前も載ってしまいますけどね)
No.5ベストアンサー
- 回答日時:
こんなのはいかがでしょうか?
-------------------------------------------------------------------------
Sub 一覧表作成()
Dim 行 As Long
Dim 号 As Long
行 = 1
Columns("A:L").Delete
For 号 = 1 To Workbooks.Count
If ThisWorkbook.Name <> Workbooks(号).Name Then
Cells(行, 1).Value = Workbooks(号).Name
Workbooks(号).Sheets(1).Range("E1:O1").Copy _
ActiveSheet.Range(Cells(行, 2), Cells(行, 12))
行 = 行 + 2
End If
Next
行 = 1
Do While Cells(行, 1).Value <> ""
Windows(Cells(行, 1).Value).Close
行 = 行 + 2
Loop
MsgBox ("終了しました")
End Sub
-------------------------------------------------------------------------
※ ブック名などを書き込むシートをアクティブにしてから実行して下さい。
※ 大きなお世話かもしれませんが処理後のファイルは閉じています。不要ならば下図の黄色い部分を削除して下さい。
※ 閉じるときに確認のメッセージが出るようでしたら連絡下さい。
No.7
- 回答日時:
大変申し訳ございませんでした。
テスト環境だったので行も間違っていました。本当に申し訳ございませんでした。-------------------------------------------------------------------------
Sub 一覧表作成()
Dim 行 As Long
Dim 号 As Long
行 = 1
Columns("A:L").Delete
For 号 = 1 To Workbooks.Count
If ThisWorkbook.Name <> Workbooks(号).Name Then
Cells(行, 1).Value = Workbooks(号).Name
If Workbooks(号).Sheets(1).Range("B2").Value = "男" Then
Workbooks(号).Sheets(1).Range("E10:O10").Copy _
ActiveSheet.Range(Cells(行, 2), Cells(行, 12))
Else
Workbooks(号).Sheets(1).Range("E9:O9").Copy _
ActiveSheet.Range(Cells(行, 2), Cells(行, 12))
End If
行 = 行 + 2
End If
Next
行 = 1
Do While Cells(行, 1).Value <> ""
Windows(Cells(行, 1).Value).Close
行 = 行 + 2
Loop
MsgBox ("終了しました")
End Sub
-------------------------------------------------------------------------
No.8
- 回答日時:
No.7 の補足です。
2個の同じようなループ1つにまとめないの?と疑問があるかもしれませんが、開いているブック名はエクセルが管理しているブックの通し番号を使って調べているのですが、1つでもブックを削除したとたんに振り直されたら変なことになりそうだったので、全てをシートに書き込んでからブック名で削除しています。
No.9
- 回答日時:
No.8 の修正です。
たびたびすみません。「ブックを削除したとたんに」は「ブックを閉じたとたんに」の間違いです。
「ブック名で削除しています。」は「ブック名で閉じています。」の間違いです。
本当に申し訳ございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルで保存時に全部のシートの最終行をコピーして数値で貼り付けたい 3 2023/08/14 15:49
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセル VBAでBook モジュールのプロシージァ(コード)に除外シートを設定したい 1 2023/01/11 15:53
- Excel(エクセル) EXCEL ActiveX コマンドボタンで実行する前にいったんmsgBoxで確認を求めたい 1 2022/07/06 19:41
- Excel(エクセル) エクセルでファイル保存時に複数シートのオートフィルタを全て解除したい 1 2023/05/10 13:23
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- iPad iPadでこんな誤作動あるの? 先週の土曜日、iPadで漫画を読んでいて、次のページをめくろうとした 1 2022/10/17 23:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
フォルダ内の複数ファイルから...
-
Excel(2010)のフィルターが保...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
Excelで複数ブックの同一セルに...
-
Excelでブックの共有を掛けると...
-
指定ファィルの指定シートをシ...
-
複数ファイルから特定シートの...
-
エクセルシートの一部を送りたい
-
エクセルファイルを開かずにpdf...
-
エクセル2016です。「ブッ...
-
複数のブックをひとつのブック...
-
vbaでpdfを開いて1ページ目のみ...
-
Excel起動時に特定のワークシー...
-
エクセル 複数のブックを一度...
-
ブックのピボットを別ブックに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
VBA バックグラウンドで別ブッ...
-
エクセルで50行ごとに区切った...
-
エクセルで「ディスクがいっぱ...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルシートの一部を送りたい
-
エクセル2016です。「ブッ...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
複数ファイルから特定シートの...
おすすめ情報
判りずらくてすいません。
① 今開いているブックの名前の一覧表を作りたい。
→そうです。
② 開いているブックのB2セルの値によって何かをしたい。← 特にこの何かが良く判りません
→B2セルの値によって 一覧表に 入れたい bookの値のセルの場所が 変わっています。
A列にブック名
そのブックの B2セルが「男」ならば B ~ L列に E10:O10 のデータを書き込む
B2セルが「女」ならば B ~ L列に E9:O9 のデータを書き込む
これを開いているブック総てについて行う。
答え.(そうです)
「連続でBook1~100までの一行開けて繰り返し書き込む方法」な記述も有るので1行おきに作るのでしょうか?
答え.そうです。空いた行に 後で コメントなど文を 書き込むことがあります。
「”シート1”」や「”シート2”」という言葉も出てきますが、この辺も良く判りません
答え.すいません判りずらかったですね、自分で作った一覧表のSheet1には 違う一覧表が
あるため、Sheet2(シート2)と書いてしまいました。
「→”編集”」はセルの値を「編集」に変えるという事ですか?
答え.本当に判りづらくてすいません。
Workbooks(book1).Worksheets("Sheet1").Cell(E10:O10)=
Workbooks(編集).WorkSheets("Sheet2").Cell(E10:O10)
ところで100個近くのファイルが開いているだけで非常に邪魔だし、やたら重くなりそうですが問題ないのでしょうか?
答え.この100個近くのファイルが、得意先からメールで送くられてくるデータで 開くと
ホルダー内のデータがすべて開く様になっていていつも大変な思いをしています。
ですので1つ1つ入力して 1つ1つ閉じています。これが、とても大変なのです。
データ改ざんも禁止です。
そうですね。いちいち閉じるのが、大変です。
そうです、1枚目のシートです。
今 補足を入れようと思ったのですが、すいません。数値が 入らないな?と思い投稿しようと思いmした。しかし、GooUserラックさん ここまでしていただきありがとうございます。
明日でも 全然大丈夫ですよ。無理しないでください。
全然問題ないです。GooUserさんのVBAを研究・検討し もっとより良いものを
完成させたいと思います。ありがとう、ございます。NO。9も拝見しました。