エクセルファイルの特定セルに別エクセルファイルのデータを入力する方法

このQ&Aのポイント
  • エクセルファイルの特定セルに別エクセルファイルのデータを入力する方法について、お知りになりたいです。100個のエクセルファイルにそれぞれデータを入力するための集約データファイルがあります。具体的な方法をお教えいただけますか?
  • エクセルファイルの特定セルに別エクセルファイルのデータを入力する方法について教えてください。100個のエクセルファイルがありますが、集約データファイルに格納されたデータをそれぞれのファイルに入力したいと思っています。具体的な手順を教えてください。
  • 100個のエクセルファイルに別エクセルファイルのデータを入力する方法を教えてください。集約データファイルには入力したいデータが格納されていますが、どのようにしてそれを各ファイルに入力するのか知りたいです。具体的な方法を教えてください。
回答を見る
  • ベストアンサー

エクセルファイルの特定セルに別エクセルファイルのデータを入力することについて

 お詳しい方よろしくお願いします。 <状況> (1)ファイル名が「001.xlsx」から「100.xlsx」まで100個のエクセルファイルがあります。 (2)これら100個のファイルそれぞれのA1セルに入力したいデータが入力されたエクセルファイル(集約データ.xlsx)があります。 集約ファイル.xlsxの内容    A列          B列 1  001  平成21年4月から平成21年5月まで 2  002  平成21年7月から平成21年12月まで 3  003  平成21年4月から平成21年10月まで ・ ・ というように、A列にはデータ出力先エクセルファイル名 B列には、A列に入力されたエクセルファイルのA1セルに出力したいデータが格納されています。 <行いたい作業> 集約データ.xlsxのB列に格納してあるデータをA列のファイルに出力したいと考えています。 ついては、この方法をご教示いただきたいと存じます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

.xlsxということは2007以降ですね。 わたしのは2003なので2007で動くかどうか自信ありません。 また質問を勘違いしたかも知れませんが以下の前提で回答します。 1.VBAコードは集約データ.xlsx の標準モジュールに記載する。 2.集約ファイル.xlsxの内容は一枚目のシートのA1:B100の範囲にある。 3.集約ファイル.xlsxおよび「001.xlsx」から「100.xlsx」まで100個のエクセルファイルは同一フォルダー内にある。 4.転記先のA1セルは開いたときに表示されるシートにある。 Sub TEST01() Dim mb As Workbook, wb As Workbook Dim myFd As String Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このBookをmbとする。 myFd = mb.Path 'フォルダー名取得 For i = 1 To 3 '1から100まで Set wb = Workbooks.Open(myFd & "\" & mb.Sheets(1).Cells(i, "A").Value & ".xlsx") 'その名のBOOKを開きwbとする。 wb.ActiveSheet.Range("A1").Value = mb.Sheets(1).Cells(i, "B").Value '開いたシートのA1に転記 wb.Close (True) '保存の有無を聞かずに保存して閉じる Next '繰り返し Application.ScreenUpdating = True '画面更新一時停止を解除 End Sub

nippon2225
質問者

お礼

 どうもありがとうございました。  ご教示いただいたコードで無事処理できました。  作業時間が大幅に短縮できました。  これまでは、縁遠く、なじめなかったマクロですが、ご教示いただいたのきっかけに一念発起し、現在テキストで勉強しているところです。  本当にありがとうございました。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

おはようございます。昨夜回答したmerlionXXです。 さきほどExcel2007で試してみました。 No1で回答のコードで作動を確認しました。 ただ、もうおわかりとは思いますが、コードで For i = 1 To 3 '1から100まで   の部分については、わたしは実際には100個のファイルではなく001~003の3つのファイルで試したのでFor i = 1 To 3 としてますが、ほんとに100個までなら 1 To 100 としなくてはいけません。 また、このコードを書いた「集約データ.xlsx」 は、コードを保持したまま保存することができませんでした。 マクロをふくんだまま保存するには「集約データ.xlsm」 と拡張子を変更しなければなりませんでした。 この点、2007をあまり使ったことがなかったので勉強になりました。 以上蛇足でした。

nippon2225
質問者

お礼

 お忙しい中何度もご回答いただきありがとうございます。  土、日は作業ができなかったので、これから実施してみます。  (今日中に終わるかな?という感じですが)  実は、マクロ(VBAコードの作成(?))はまったくの初心者でして…  引き続きご教示いただくかもしれませんが、よろしくお願いします。

関連するQ&A

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • エクセルで特定のセルのデータをひとつにまとめたい

    エクセルでA列に数字、B列に文字が入っています。 A列 B列 1   あ 1   い 1   う 2   え 2   お 3   あ 3   い 3   う 3   え これをA列の同じデータでB列のデータを一つのセルの中にまとめたいのですが、 A列  B列 1   あいう 2   えお 3   あいうえ 良い方法はありますでしょうか。

  • 複数EXCELファイル中のデータを1つのファイルへ

    同じシート名、同じフォーマットで記載されている約400個のEXCELファイルから、『Participant List』というシート名のB列~H列、8行目~50行の範囲の記載を1つのEXCELファイルに纏めるVBAスクリプトを作成し実行したいのですが、VBAが全く分からず大変困っております。 マクロを実行した時に、入力ファイルと出力ファイルの保存ホルダーを聞いて指定出来るように出来た良いと思っています。 何方か、お分かりでしたらどうぞお力添えをお願いいたします。 <詳細> ・400個の入力EXCELファイルには、『Participant List』、『特定類型』の2つのシートが入っており、今回の入力用シートは『Participant List』になります。 ・今回抜き出したい記載は、『Participant List』シート中のB列~列、8行目~50行の範囲の記載になります。 ・『Participant List』シート中のB列の6行目と7行目のセルは結合しており、各列のタイトルは以下の通りになっています。  このタイトル名を出力ファイルの1行目へデータの各列のタイトルとして付けて、2行目以降より400個の入力ファイル中のデータを連結したいです。   B列:6,7行=『職員番号(nimsID)』     C列:6,7行=『名前(Name)』       D列:6,7行=『部門(Research Center, Division)』   E列:6,7行=『グループ(Group)』   F列:6,7行=『役職(Title)』   G列:6,7行=『開始年月(Start)』   H列:6,7行=『終了年月(End)』 ・出力ファイル名や出力のシート名は特に考えておりません。 ・入力データは以下ような記載のフォーマットになります。   B列=『職員番号(nimsID)』       例:14769     C列=『名前(Name)』         例:田中 一郎    D列=『部門(Research Center, Division)』 例:総合開発・情報部門   E列=『グループ(Group)』   例:科学リーダー   F列=『役職(Title)』     例:リーダ-   G列=『開始年月(Start)』  例:2023/5/1   H列=『終了年月(End)』   例:2023/5/31 ・入力ファイル名の例=科学登録者_23BB3001.xlsx            科学登録者_23BB3005.xlsx            科学登録者_23BB3405.xlsx ※拙い口足らずな説明となってしまいましたが、どうぞ宜しくお願い致します。

  • 【エクセル】複数ファイルからのデータ引用

    エクセルについて質問がございます。 現在、複数の人間が同じフォーマットにてデータを入力しており、 そのデータを、1つのエクセルの1つのシートに引用したいと考えております。 (例) (1)ファイルA、シート「個人名A」、セルA1「回答1」 (2)ファイルB、シート「個人名B」、セルA1「回答2」 (3)ファイルC、シート「個人名C」、セルA1「回答3」 上記3ファイルのデータを以下のファイルに引用したいと思います。 統合先ファイル:ファイルD、シート「集計」 A1セルには(1)のデータ、 A2セルには(2)のデータ A3セルには(3)のデータ この際、 ファイルDの A1セルには ='[ファイルA.xlsx]個人名A'!$A$1 で「回答1」と表示されます。 A2セルには ='[ファイルB.xlsx]個人名B'!$A$1 で「#VALUE!」と表示されます。 A3セルには ='[ファイルC.xlsx]個人名C'!$A$1 で「#VALUE!」と表示されます。 この場合、A2セルとA3セルにもそれぞれの「回答」を表示させる方法がありますでしょうか。 ご回答いただけると、大変助かります。 よろしくお願いいたします。

  • エクセルで一つのセルに別Bookのデータを貼り付け

    エクセルで別Bookにある複数の参照データを一つのセルに 貼り付けたいのですが、 例えばBook1には以下のようなデータがあります。    A列       B列 1 バナナ     カテゴリ1 2 もも       カテゴリ1 3 りんご      カテゴリ1 4 メロン      カテゴリ1 5 バナナ     カテゴリ2 6 みかん     カテゴリ2 7 もも       カテゴリ3 8 バナナ     カテゴリ3 9 いちご     カテゴリ3 10 もも      カテゴリ4 Book2にはB列にカテゴリ1・カテゴリ2・カテゴリ3というように、 項目が入力されています。 Book1を参照して、B列のカテゴリ1に当てはまるA列の値(例ではバナナ、もも、りんご、メロン)を Book2のカテゴリ1の横(A1)の一つのセル内に貼り付けたいのですが 可能でしょうか?    A列      B列 1 バナナ   もも       カテゴリ1   りんご   メロン 2 バナナ     カテゴリ2   みかん  3 もも       カテゴリ3   バナナ   いちご             つまり、Book2を上記のような形にできればと思います。 拡張子は .xlsxです。 A列の項目とB列のカテゴリ数は数1000ほどあり、 各カテゴリの数は1つのものもあれば、10数個あったりと不揃いです。 カテゴリに見合わせてコピペしていくのは大変なので 良い方法があれば、ご教授宜しくお願い致します。    

  • エクセルのデータをアクセスのテーブルに移動入力する

    エクセルのデータをアクセスのテーブルに移動入力するVBA フォルダAにおいて、a1.xlsxというファイルがあり、 そのsheet1のセル(a,1)=1 A1が1 とします その値をアクセスのデータベース(これもフォルダAにあります)  b.accdbのテーブル1の フィールド1に入力したいときの エクセルマクロのVBAを御教示いただけると助かります さらに続けて フォルダAにおいて、a2.xlsxというファイルがあり、 そのsheet1のセル(a,1)=2 A1が2 とします その値をアクセスのデータベース上記と同じ  b.accdbのテーブル1の フィールド1に追加で入力したいときの エクセルマクロのVBA 以上わかると助かります よろしくお願いします win10 office365

  • Excelのセルのデータを別のファイルのセルに転写

    Excelのファイル名(G)のセルA1のデータを、別のファイル名(H)のセルB2に転写する方法を教えてください。

  • エクセル 別のファイルにデータを流し込む方法

    エクセル 別のファイルにデータを流し込む方法 エクセルで、1つのファイルに入力してあるデータの内、 特定の行のデータを指定して、別のファイルに体裁(レイアウト)を変えて 表示させる方法を教えてください。 具体的には、例えば、元データのファイル(仮にBook1)が、 列に、A列-日付、B列-時間、C列-利用場所、D列-顧客番号、 E列-顧客氏名、F列-利用内容、G列-判定 というような項目を並べて、 1行ずつ、データが入力してあるファイルがあるとします。 この元データのファイルを利用して、別のファイル(仮にBook2)、 例えば、FAX送信用の紙のような書式のファイルに、 1枚の紙に、1人分のデータを、 流し込んで表示させるようなことをしたいと思っております。 これを、Book2の1個1個のセルに、元となるBook1のセルを参照するよう いちいち入力するのではなく、 Book1の特定の1行を指定すれば、その行に入力してあるデータが 自動的に(一発で)Book2のシートに反映されるようにしたいのですが、 良い方法がありますでしょうか。 ご存知のかたがいらっしゃいましたら、 お教えいただけると嬉しいです。 どうぞよろしくお願い申し上げます。

  • 【VBA】フォルダ内の複数Excelのセルをコピー

    お世話になります。 初級者ですが、Excel 2002のVBAについてご質問をさせて頂きます。 【概要】  あるフォルダ内にある複数のExcelファイルの、特定のセルを  1つのExcelファイルに集約します。 【詳細】  1.あるフォルダ内に複数のExcelファイルがあります。Excelファイルの数は、その日によって   ことなります。  2.選択画面から、この複数のExcelファイルを選択し、選択したExcelファイルの   それぞれの「A1セル」「B1セル」「C1セル」を、「1つのExcelファイル」に張り付けます。  3.「貼り付け」→「次の列へ移動」→「貼り付け」→「次の列へ移動」というサイクルを、   選択したExcelファイルの数だけ繰り返します。  4.集約したExcelファイルのイメージは以下のとおりです。        A列 B列 C列 D列 E列 F列 G列 H列  。。。。   1行目 A1 A1 A1 A1 A1 A1 A1 A1 。。。。   2行目 B1 B1 B1 B1 B1 B1 B1 B1 。。。。   3行目 C1 C1 C1 C1 C1 C1 C1 C1 。。。。 教えて!gooの回答で、「複数のシートを、1つのExcelファイルに集約する」ものがあったので、 それを参考にしようとしましたが、僕の実力ではできませんでした。 ご助言を頂けると非常に助かります。よろしくお願いします。

  • Excelで同一セル内に入力されているデータを他のセルに分割したい

    http://okwave.jp/qa4369634.html?ans_count_asc=20 で質問をして、何度かやりとりをさせていただいて エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。 縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。 それぞれのセル内のデータを… 例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。 かつ、B・Cセルは増えたセルにそれぞれのデータをコピーしたいと言ったら、 Sub Macro1() Dim idx, cnt As Integer Dim wkStr() As String Dim rng As Range   ActiveSheet.Copy after:=ActiveSheet   For idx = Range("A65536").End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, "A"), Chr(10)) > 0 Then       wkStr = Split(Cells(idx, "A").Value, Chr(10))       Set rng = Cells(idx, "B")       For cnt = UBound(wkStr) To 0 Step -1         Cells(idx, "A").Value = wkStr(cnt)         Cells(idx, "B").Value = rng.Value         Cells(idx, "C").Value = rng.Offset(0, 1).Value         If cnt > 0 Then           Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown         End If       Next cnt     End If   Next idx End Sub といったマクロのご回答をいただきました。 これを元に、 ・データが入っているセルをA列→B列に変更 ・A列のデータはセルが増えた分だけ増やしたい ・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい と変更したいのですが…。 すいませんが、宜しくお願い致します。

専門家に質問してみよう