マクロを使って別ブックのデータを既存ブックに追加する方法について教えてください。

このQ&Aのポイント
  • マクロで別ブックのデータを既存ブックに追加する方法について教えてください。
  • エクセルのマクロを使用して、別ブックのデータを既存ブックに追加し、保存する方法を教えてください。
  • エクセルのマクロを使って、別のブックに入力されたデータを既存ブックにコピーして追加・保存する方法を教えてください。
回答を見る
  • ベストアンサー

マクロで、別ブックのデータを、既存ブックの一欄に

マクロで以下のような操作をしたいと思っております。 どのようなコードを書けばよろしいでしょうか。ご教授ください。 【顧客データ一覧.xls】というブックのシート1に顧客データ一覧表があります。 同ブックのシート1上部にコマンドボタンを作成し、ボタン押下で以下のような操作を行いたい 1.ファイルダイアログを開いて、【顧客データひとり分.xls】というブックを選択 2.【顧客データひとり分.xls】に入力されているデータを、【顧客データ一覧.xls】の顧客データ一覧表の末尾に、コピーして追加・上書保存 顧客データひとり分はセル(3,4)に年齢が入力されている等、入力箇所は固定です。 3.顧客データひとり分.xlsは閉じて、更新された顧客データ一覧.xlsを表示させる よろしくお願いいたします。マクロは作成したことがありますが、何年もブランクがあり、かなり忘れてしまいました・・・。 と、エクセル2003以来久しぶりに操作ですので、エクセルそのものに大変戸惑っております。。。実力不足でお恥ずかしいのですが、お力をお借りできれば幸いです。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

こんな感じでしょうか Sub ボタン1_Click() On Error GoTo Er With ThisWorkbook.Sheets("シート1") '元のブックの出荷データを使うので Withで指定しておく Workbooks.Open Filename:=ThisWorkbook.Path & "\顧客データひとり分.xls" 'このファイルと同じフォルダーにある顧客データひとり分のファイルを開く Sheets("シート1").Select '準備しておいたシートに移動 GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1 'このブックの最後の行を取得 .Range("A" & GYOU & ":C" & GYOU + 4).Value = Range("A2:C6").Value '注文書のデータを入れる ActiveWorkbook.Close '顧客データひとり分のファイルを閉じる End With Kill ThisWorkbook.Path & "\顧客データひとり分.xls" '顧客データひとり分のファイルを削除 Exit Sub Er: MsgBox "ファイルが存在しないか、その他のエラーが発生しました。" End Sub コピーするセルは4A2~C6としています。

somehow123
質問者

補足

ありがとうございました。 下記のような汚いソースになってしまいました。。 ここには項目を10個しか書いていませんが、実際には70個あり、 ソースが縦に長々と続いています。 これらをスッキリさせることは可能でしょうか?? Sub ボタン1_Click() With ThisWorkbook.ActiveSheet GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' End With Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open OpenFileName Dim Shozoku As String Dim Kubun As String Dim StartYmd As String Dim MainName As String Dim NameFuri As String Dim BloodType As String Dim Add As String Dim AddFuri As String Dim Tel1 As String Dim Tel2 As String Shozoku = ActiveWorkbook.ActiveSheet.Range("B4").Value Kubun = ActiveWorkbook.ActiveSheet.Range("F4").Value StartYmd = ActiveWorkbook.ActiveSheet.Range("I4").Value MainName = ActiveWorkbook.ActiveSheet.Range("C9").Value NameFuri = ActiveWorkbook.ActiveSheet.Range("E8").Value BloodType = ActiveWorkbook.ActiveSheet.Range("I9").Value Add = ActiveWorkbook.ActiveSheet.Range("D12").Value AddFuri = ActiveWorkbook.ActiveSheet.Range("E11").Value Tel1 = ActiveWorkbook.ActiveSheet.Range("C14").Value Tel2 = ActiveWorkbook.ActiveSheet.Range("I14").Value ActiveWorkbook.Close ThisWorkbook.ActiveSheet.Cells(GYOU, 1).Value = Shozoku ThisWorkbook.ActiveSheet.Cells(GYOU, 4).Value = Kubun ThisWorkbook.ActiveSheet.Cells(GYOU, 6).Value = StartYmd ThisWorkbook.ActiveSheet.Cells(GYOU, 3).Value = MainName ThisWorkbook.ActiveSheet.Cells(GYOU, 8).Value = NameFuri ThisWorkbook.ActiveSheet.Cells(GYOU, 28).Value = BloodType ThisWorkbook.ActiveSheet.Cells(GYOU, 13).Value = Add ThisWorkbook.ActiveSheet.Cells(GYOU, 14).Value = AddFuri ThisWorkbook.ActiveSheet.Cells(GYOU, 15).Value = Tel1 ThisWorkbook.ActiveSheet.Cells(GYOU, 16).Value = Tel2 End Sub

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>これらをスッキリさせることは可能でしょうか?? こんな感じでは Dim OpenFileName As String Dim wb As Workbook, v(9), ret As Variant Dim GYOU As Long, i As Long, j As Long OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls*") Set wb = Workbooks.Open(OpenFileName) For Each ret In Array("B4", "F4", "I4", "C9", "E8", "I9", "D12", "E11", "C14", "I14")   v(i) = wb.ActiveSheet.Range(ret).Value   i = i + 1 Next wb.Close With ThisWorkbook.ActiveSheet   GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1   For Each ret In Array(1, 4, 6, 3, 8, 28, 13, 14, 15, 16)     .Cells(GYOU, ret).Value = v(j)     j = j + 1   Next End With

  • ohkinu1972
  • ベストアンサー率44% (458/1028)
回答No.1

時々参考にしているページの関連個所をピックアップしました。 これらを組み合わせればできると思います。 >1.ファイルダイアログを開いて、【顧客データひとり分.xls】というブックを選択 名前を指定してブックを開く http://officetanaka.net/excel/vba/file/file02.htm >2.【顧客データひとり分.xls】に入力されているデータを、 >【顧客データ一覧.xls】の顧客データ一覧表の末尾に、コピーして追加・上書保存 セルの操作(セル範囲の取得) http://officetanaka.net/excel/vba/file/file02.htm セルの操作(セルのコピー) http://officetanaka.net/excel/vba/cell/cell09.htm >3.顧客データひとり分.xlsは閉じて、更新された顧客データ一覧.xlsを表示させる ブックを閉じる http://officetanaka.net/excel/vba/file/file03.htm シートを開く http://officetanaka.net/excel/vba/sheet/sheet01.htm

somehow123
質問者

お礼

ありがとうございます。まだ完成してませんが、参考にさせていただきました。

関連するQ&A

  • ブックを開くマクロ

    データ管理というファイルの中にある データー(1)のファイルの中の データ表(1)というエクセルbookのあるマクロを実行すると 同じくデータ管理というファイルの中にある データー(2)のファイルの中の データ表(2)というbookを開き そのbookのsheet1のA1:B5をコピーして データ表(1)エクセルbookのsheet1のA1:B5に貼り付ける・・・ というVBAを組む事は出来ますでしょうか? 分かりにくくてすいません

  • 変数が混じる名前のブックへのシート移動 マクロ

    いつもお世話になっております。 マクロ実行用Book=A.xls マクロ1で作成したファイル=●●日報.xls(●●の部分は、A.xls内のセル番地"AB2"にある文字列で、毎回変わります) マクロ2で作成したファイル=Book1.xls (1)A.xlsにて、●●日報.xlsを作成し、保存します(●●日報.xlsは保存後、閉じています) (2)マクロ2を実行し、Book1.xlsを作成します。 (3)Book1.xlsのシート(このブックにはシートは1枚のみです)を、A.xlsのブックの末尾に移動し、●●日報.xlsを上書保存する。 この場合、マクロのコードはどう書くのが適切なのでしょうか。 マクロ初心者のため、どなたかご教示いただけましたら幸いです。

  • 同じブック内で別シートへ抽出データを自動入力させたい

    エクセルについて教えてください。 案件情報を1件ずつ1行でまとめた案件一覧表を作成しました。ある列には県名も入力してあります。その総括一覧表と同じブック内に、県別のシートを作成したいと考えています。総括一覧表に入力することで、自動的に「香川」「徳島」「愛媛」「高知」の各シートにデータが入力されるようなブックを作りたいのですが、どうすればいいのでしょう?関数についての知識がほとんどない初心者で困っています。できるだけ簡単な方法をお教えいただけるとうれしいです。どうぞよろしくお願いします。

  • 別のブックのセルの値をコピーするマクロについて

    ExcelのVBAのマクロに関する質問です。 複数のブックのセルの値をコピーするマクロについての質問なのですが、現在以下のファイルがあります。 サンプル1.xls サンプル2.xls サンプル3.xls データ.xls そして、 サンプル1のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA1~D1まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA1~D1まで、 サンプル2のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA2~D2まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA2~D2まで、 サンプル3のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA3~D3まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA3~D3まで、 上記のような形でコピーしたいのですがマクロがわかりません。 データ.xlsにボタンを作成し、そのボタンを押すとこの処理が実行されるようにしたいです。 どなかた方法を教えていただけますでしょうか。ご回答お待ちしております。 ※ファイルの名前は今回はサンプル1などとしましたが実際は違う名前も使用します。 また、ファイルの数も今回は3つにしましたが増減します。

  • マクロで他ブックを開きデータを取得する方法について

    BOOK1は集計表でシートは1枚です。BOOK2はデータ入力シートで50位のシートが含まれています。 BOOK1からマクロでBOOK2を開き、各シートにあるデータをBOOK1(集計表)の所定のセルへ表示させようと考えています。例えば「BOOK2のSheet2のセルC6のデータをBOOK1のセルF8へ、Sheet3のセルC6のデータをBOOK1のセルF12へというように順次50枚のシートに入力した各データをBOOK1の集計表に表示させる予定です。どのようなマクロ構文にしたら良いのでしょうか? ご教授よろしくお願いします。

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • <新規Bookに アクティブセル領域を 値で貼り付けるマクロ>

    <新規Bookに アクティブセル領域を 値で貼り付けるマクロ> 沢山の様々なデータが入力されている、巨大なExcelファイル(仮に「管理表.xls」)があるのですが ボタンを押すと、アクティブなセル領域(ドラッグで選んだセル領域)を 新規Bookに値で貼り付ける マクロを作成したいのにうまく動きません 下記コードだと、新規Book作成までは出来るのですが、 ペーストがされません。クリップボードにはデータが入るのですが 「管理表.xls」を全て選択された情報が入ってしまっています。 (ペーストすると 全データがペーストされる) マクロは始めたばっかりで ものすごく初心者なので恐縮なのですが ご教授ください。よろしくお願いします。 --------------------------------------- Private Sub CommandButton2_Click() Selection.CurrentRegion.Copy 'アクティブセル領域をコピー Workbooks.Add.Activate 'ブックを新規作成してアクティブに Range("A1").PasteSpecial Paste:=xlPasteValues End Sub ---------------------------------------

  • 複数のブックを扱っているとエラーが出てしまいます

    エクセルのマクロ初心者でたいへん恐縮です。質問の仕方が悪ければお詫び申し上げます。  エクセルでそれぞれ違うマクロが記録された二つのブックを開いて、シートの表から抽出などの操作をしています。例えば、(1).xlsと (2).xlsにはそれぞれ住所録のようなリストを含めて3つのシートがあります。その二つのブックを頻繁にアクティブに切り替えながら作業をしようとしているのですが、片方を使っていると別のブックを使った時に「インデックスが有効範囲にありません」というエラーが出て、アクティブブックとは違うシートを読み込んでしまっているようです。 ちなみにブックを一つだけ開いて操作している時は全くエラーはでません。二つのブックを扱っている時だけです。 「Activebook」等のコードやマクロの名前変更などいろいろ試してみましたが、私には解決できませんでした。  二つのブックを開いて、下のタスクバーでブックを切り替えて操作してもお互いが干渉せずそれぞれのブックのプログラムがエラー無く動くようにしたいのですが、 もし、何か解決法などございましたらご教授いただければ幸いです。 重ね重ね無礼な質問でしたらお詫び申し上げますので、何卒よろしくお願い申し上げます。 マクロコードなど必要な情報がございましたら再度掲載させていただきます。

  • 複数のブックのデータを一つのブックにまとめたい

    http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page1.htm ↑の 7. 指定したフォルダ内にあるExcelファイルを検索して開く の部分のマクロを利用して、集計.xlsというブックで、複数のブックを開くようにしましたが、そのブックを開いた時にそのブックのSheet2の中のデータのみコピーして、集計.xlsに貼り付けたいのですが、どのようにすればよいのか困っています。 指定したフォルダの中には、回答01.xls 回答02.xls ・・・と16個のブックがあります。順番に開いてコピーをするときに、どのようにブック名とシート名を指定すればよいのかわからず困っています。 何か参考になるものがあれば教えてください。 よろしくお願いします。

  • エクセルの複数ブックで作成した同書式データの一覧表

    エクセルの複数ブックで作成された同書式のデータを一箇所のシートに一覧表にする方法を教えてください。抽出する元データのブックは同フォルダにあります。具体的には各顧客に宛てたエクセル作成の請求書のデータで、注文日、額面、支払日、顧客名などを一覧表に作成したいのです。

専門家に質問してみよう