• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロで、別ブックのデータを、既存ブックの一欄に)

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

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

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

  • ベストアンサー
  • 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