レッスン(1)...'(1)ワークシートどうしのやりとり...

43
'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。 Sub example01() '請求書番号 (請求書1のE2からデータ収集のA2へ) Worksheets("データ収集").Range("A2").Value = Worksheets("請求書1").Range("E2").Value '発行日 (請求書1のE1からデータ収集のB2へ) '会社名 (請求書1のB4からデータ収集のC2へ) '担当者名 (請求書1のB5からデータ収集のD2へ) '請求金額 (請求書1のE31からデータ収集のE2へ) End Sub ?? ?? ?? ?? ?? 演習課題 レッスン(1)

Upload: others

Post on 19-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(1)ワークシートどうしのやりとり'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub example01()

'請求書番号 (請求書1のE2からデータ収集のA2へ)Worksheets("データ収集").Range("A2").Value = Worksheets("請求書1").Range("E2").Value

'発行日 (請求書1のE1からデータ収集のB2へ)Worksheets("データ収集").Range("B2").Value = Worksheets("請求書1").Range("E1").Value

'会社名 (請求書1のB4からデータ収集のC2へ)Worksheets("データ収集").Range("C2").Value = Worksheets("請求書1").Range("B4").Value

'担当者名 (請求書1のB5からデータ収集のD2へ)Worksheets("データ収集").Range("D2").Value = Worksheets("請求書1").Range("B5").Value

'請求金額 (請求書1のE31からデータ収集のE2へ)Worksheets("データ収集").Range("E2").Value = Worksheets("請求書1").Range("E31").Value

End Sub

??

??

??

??

??

演習課題 レッスン(1)

Page 2: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(1)ワークシートどうしのやりとり'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub example01()

'請求書番号 (請求書1のE2からデータ収集のA2へ)Worksheets("データ収集").Range("A2").Value = Worksheets("請求書1").Range("E2").Value

'発行日 (請求書1のE1からデータ収集のB2へ)Worksheets("データ収集").Range("B2").Value = Worksheets("請求書1").Range("E1").Value

'会社名 (請求書1のB4からデータ収集のC2へ)Worksheets("データ収集").Range("C2").Value = Worksheets("請求書1").Range("B4").Value

'担当者名 (請求書1のB5からデータ収集のD2へ)Worksheets("データ収集").Range("D2").Value = Worksheets("請求書1").Range("B5").Value

'請求金額 (請求書1のE31からデータ収集のE2へ)Worksheets("データ収集").Range("E2").Value = Worksheets("請求書1").Range("E31").Value

End Sub

解答

Page 3: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(2)最終行に転記する'「データ収集」へデータを転記する際、必ず最終行へ転記するようにしましょう。Sub example02()

'「データ収集」の最終行を変数に取得Dim MaxRow As Integer

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するWorksheets("データ収集").Range("A2").Value = Worksheets("請求書1").Range("E2").ValueWorksheets("データ収集").Range("B2").Value = Worksheets("請求書1").Range("E1").ValueWorksheets("データ収集").Range("C2").Value = Worksheets("請求書1").Range("B4").ValueWorksheets("データ収集").Range("D2").Value = Worksheets("請求書1").Range("B5").ValueWorksheets("データ収集").Range("E2").Value = Worksheets("請求書1").Range("E31").Value

End Sub

??

演習課題 レッスン(2)

修正

Page 4: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(2)最終行に転記する'「データ収集」へデータを転記する際、必ず最終行へ転記するようにしましょう。Sub example02()

'「データ収集」の最終行を変数に取得Dim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するWorksheets("データ収集").Range("A" & MaxRow).Value = Worksheets("請求書1").Range("E2").ValueWorksheets("データ収集").Range("B" & MaxRow).Value = Worksheets("請求書1").Range("E1").ValueWorksheets("データ収集").Range("C" & MaxRow).Value = Worksheets("請求書1").Range("B4").ValueWorksheets("データ収集").Range("D" & MaxRow).Value = Worksheets("請求書1").Range("B5").ValueWorksheets("データ収集").Range("E" & MaxRow).Value = Worksheets("請求書1").Range("E31").Value

End Sub

解答

Page 5: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(3)データ収集結果を削除する'転記されたデータを削除するマクロを作っておきましょう。Sub clear03()

'最終行を変数に取得Dim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'2行目から最終行までのデータを削除する

End Sub

??

演習課題 レッスン(3)

Page 6: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(3)データ収集結果を削除する'転記されたデータを削除するマクロを作っておきましょう。Sub clear03()

'最終行を変数に取得Dim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'2行目から最終行までのデータを削除するWorksheets("データ収集").Range("2:" & MaxRow).Value = ""

End Sub

解答

Page 7: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(4)With構文を使って省略する'With構文を使って、ワークシート名を省略して入力しましょう。Sub example04()

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するWorksheets("データ収集").Range("A" & MaxRow).Value = Worksheets("請求書1").Range("E2").ValueWorksheets("データ収集").Range("B" & MaxRow).Value = Worksheets("請求書1").Range("E1").ValueWorksheets("データ収集").Range("C" & MaxRow).Value = Worksheets("請求書1").Range("B4").ValueWorksheets("データ収集").Range("D" & MaxRow).Value = Worksheets("請求書1").Range("B5").ValueWorksheets("データ収集").Range("E" & MaxRow).Value = Worksheets("請求書1").Range("E31").Value

End Sub

演習課題 レッスン(4)

修正

Page 8: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(4)With構文を使って省略する'With構文を使って、ワークシート名を省略して入力しましょう。Sub example04()

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するWith Worksheets("データ収集")

.Range("A" & MaxRow).Value = Worksheets("請求書1").Range("E2").Value

.Range("B" & MaxRow).Value = Worksheets("請求書1").Range("E1").Value

.Range("C" & MaxRow).Value = Worksheets("請求書1").Range("B4").Value

.Range("D" & MaxRow).Value = Worksheets("請求書1").Range("B5").Value

.Range("E" & MaxRow).Value = Worksheets("請求書1").Range("E31").ValueEnd With

End Sub

解答

Page 9: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(5)Worksheet変数を利用する'Worksheet変数を宣言して、ワークシートを格納して利用しましょう。Sub example05()

'Worksheet変数を宣言するDim wsTotal As WorksheetDim wsInv As Worksheet

'「データ収集」と「請求書1」を変数に格納する

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するWorksheets("データ収集").Range("A" & MaxRow).Value = Worksheets("請求書1").Range("E2").ValueWorksheets("データ収集").Range("B" & MaxRow).Value = Worksheets("請求書1").Range("E1").ValueWorksheets("データ収集").Range("C" & MaxRow).Value = Worksheets("請求書1").Range("B4").ValueWorksheets("データ収集").Range("D" & MaxRow).Value = Worksheets("請求書1").Range("B5").ValueWorksheets("データ収集").Range("E" & MaxRow).Value = Worksheets("請求書1").Range("E31").Value

End Sub

??

演習課題 レッスン(5)

修正

Page 10: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(5)Worksheet変数を利用する'Worksheet変数を宣言して、ワークシートを格納して利用しましょう。Sub example05()

'Worksheet変数を宣言するDim wsTotal As WorksheetDim wsInv As Worksheet

'「データ収集」と「請求書1」を変数に格納するSet wsTotal = Worksheets("データ収集")Set wsInv = Worksheets("請求書1")

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

End Sub

解答

Page 11: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(6)3つのシートを順番に転記 (ループなし)'請求書1、請求書2、請求書3の順にデータを転記しましょう。Sub example06()

'変数にワークシートを格納するDim wsTotal As WorksheetDim wsInv As WorksheetSet wsTotal = Worksheets("データ収集")Set wsInv = Worksheets("請求書1")

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次の処理のため、最終行を+1しておくMaxRow = MaxRow + 1??

演習課題 レッスン(6)

'(次のページへ)

Page 12: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'---請求書2の処理----------------------------------

'請求書2を変数に代入Set wsInv = Worksheets("請求書2")

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次の処理のため、最終行を+1しておくMaxRow = MaxRow + 1

??

??

演習課題 つづき

'(次のページへ)

Page 13: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'---請求書3の処理----------------------------------

'請求書3を変数に代入Set wsInv = Worksheets("請求書3")

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

End Sub

??

演習課題 つづき

Page 14: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(6)3つのシートを順番に転記 (ループなし)'請求書1、請求書2、請求書3の順にデータを転記しましょう。Sub example06()

'変数にワークシートを格納するDim wsTotal As WorksheetDim wsInv As WorksheetSet wsTotal = Worksheets("データ収集")Set wsInv = Worksheets("請求書1")

'最終行を取得しておくDim MaxRow As IntegerMaxRow = Worksheets("データ収集").Cells(Rows.Count, 1).End(xlUp).Row + 1

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次の処理のため、最終行を+1しておくMaxRow = MaxRow + 1

解答

'(次のページへ)

Page 15: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'---請求書2の処理----------------------------------

'請求書2を変数に代入Set wsInv = Worksheets("請求書2")

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次の処理のため、最終行を+1しておくMaxRow = MaxRow + 1

つづき解答

'(次のページへ)

Page 16: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'---請求書3の処理----------------------------------

'請求書3を変数に代入Set wsInv = Worksheets("請求書3")

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

End Sub

つづき解答

Page 17: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(7)3つのシートを順番に転記(ループあり)'Forループを利用し、請求書1~3の順にデータを転記しましょう。Sub example07()

'ループ変数iを宣言Dim i As Integer

'Forループ(iが1~3まで繰り返す)For i = 1 To 3

'請求書iを変数に格納するSet wsInv = Worksheets("請求書" & i)

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

Next iEnd Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

??

??

??

演習課題 レッスン(7)

Page 18: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(7)3つのシートを順番に転記(ループあり)'Forループを利用し、請求書1~3の順にデータを転記しましょう。Sub example07()

'ループ変数iを宣言Dim i As Integer

'Forループ(iが1~3まで繰り返す)For i = 1 To 3

'請求書iを変数に格納するSet wsInv = Worksheets("請求書" & i)

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

Next i

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答

Page 19: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(8)For Eachを使い、全シートを扱う'For Eachループを使い、全シートのシート名を順番に出力してみましょう。Sub example08()

'ワークシート変数を宣言Dim wsInv As Worksheet

'すべてのワークシートから1つずつ取り出し、wsInvに格納

'ワークシート名をMsgBoxで出力するMsgBox wsInv.Name

End Sub

??

??

演習課題 レッスン(8)

Page 20: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(8)For Eachを使い、全シートを扱う'For Eachループを使い、全シートのシート名を順番に出力してみましょう。Sub example08()

'ワークシート変数を宣言Dim wsInv As Worksheet

'すべてのワークシートから1つずつ取り出し、wsInvに格納For Each wsInv In Worksheets

'ワークシート名をMsgBoxで出力するMsgBox wsInv.Name

Next wsInv

End Sub

解答

Page 21: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(9)For Eachを使い、全シートを順番に転記する'For Eachループを使い、全シートから順番にデータを転記しましょう。Sub example09()

'すべてのワークシートから1つずつ取り出し、wsInvに格納

'もしワークシート名が「データ収集」と一致しなければ

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

??

??

??

演習課題 レッスン(9)

Page 22: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(9)For Eachを使い、全シートを順番に転記する'For Eachループを使い、全シートから順番にデータを転記しましょう。Sub example09()

'すべてのワークシートから1つずつ取り出し、wsInvに格納For Each wsInv In Worksheets

'もしワークシート名が「データ収集」と一致しなければIf wsInv.Name <> wsTotal.Name Then

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記するwsTotal.Range("A" & MaxRow).Value = wsInv.Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = wsInv.Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = wsInv.Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = wsInv.Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = wsInv.Range("E31").Value

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

End IfNext wsInv

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答

Page 23: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(10)Workbooks.Openでファイルを開く'特定のパスにあるExcelブックを開きましょう。Sub example10()

'特定のパスにあるExcelブックを開くWorkbooks.Open (" ")

End Sub

??

演習課題 レッスン(10)

解答

※特定のパスを自分で調べて入力してください。

Page 24: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(11)ダイアログで選んだブックを開く(単一)'ダイアログ画面で選んだExcelブックを開きましょう。Sub example11()

'パスを格納する変数を宣言Dim openPath As String

'ダイアログからブックを選び、そのパスを格納openPath =

'パスにあるブックを開くWorkbooks.Open (openPath)

End Sub

??

演習課題 レッスン(11)

Page 25: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(11)ダイアログで選んだブックを開く(単一)'ダイアログ画面で選んだExcelブックを開きましょう。Sub example11()

'パスを格納する変数を宣言Dim openPath As String

'ダイアログからブックを選び、そのパスを格納openPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'パスにあるブックを開くWorkbooks.Open (openPath)

End Sub

解答

Page 26: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(12)ダイアログからブックを開き、操作する(単一)'開いたブックのプロパティやメソッドを利用してみましょう。Sub example12()

'ダイアログからブックを選び、パスを格納するDim openPath As StringopenPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'Workbook型の変数を宣言Dim openBook As Workbook'ファイルを開き、変数に格納するSet openBook = Workbooks.Open(openPath)

'ブックの名前をMsgboxで出力(.Nameプロパティ)MsgBox openBook.Name

'ブックのパスをMsgBoxで出力(.Pathプロパティ)MsgBox openBook.Path

'ブックを閉じる(.Closeメソッド)openBook.Close

End Sub

??

??

??

??

??

演習課題 レッスン(12)

Page 27: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(12)ダイアログからブックを開き、操作する(単一)'開いたブックのプロパティやメソッドを利用してみましょう。Sub example12()

'ダイアログからブックを選び、パスを格納するDim openPath As StringopenPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'Workbook型の変数を宣言Dim openBook As Workbook'ファイルを開き、変数に格納するSet openBook = Workbooks.Open(openPath)

'ブックの名前をMsgboxで出力(.Nameプロパティ)MsgBox openBook.Name

'ブックのパスをMsgBoxで出力(.Pathプロパティ)MsgBox openBook.Path

'ブックを閉じる(.Closeメソッド)openBook.Close

End Sub

解答

Page 28: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(13)ダイアログのキャンセルに対するエラー処理'ダイアログで「キャンセル」を押した場合のエラー対策をしましょう。Sub example13()

'ダイアログからブックを選び、パスを格納するDim openPath As StringopenPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'もしパスが「False」でなければ処理を行う(Falseなら何もしない)If openPath <> "False" Then

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(openPath)

'ブックのプロパティやメソッドを利用MsgBox openBook.NameMsgBox openBook.PathopenBook.Close

End If

End Sub

演習課題 レッスン(13)

??

??

Page 29: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(13)ダイアログのキャンセルに対するエラー処理'ダイアログで「キャンセル」を押した場合のエラー対策をしましょう。Sub example13()

'ダイアログからブックを選び、パスを格納するDim openPath As StringopenPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

'もしパスが「False」でなければ処理を行う(Falseなら何もしない)If openPath <> "False" Then

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(openPath)

'ブックのプロパティやメソッドを利用MsgBox openBook.NameMsgBox openBook.PathopenBook.Close

End If

End Sub

解答

Page 30: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(14)開いたブックからデータを転記(単一)'開いたブックから請求データを転記しましょう。Sub example14()

'パスが「False」でなければ処理を行うIf openPath <> "False" Then

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(openPath)

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記する'※openBookの最初のワークシート(1)からwsTotal.Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = openBook.Worksheets(1).Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = openBook.Worksheets(1).Range("E31").Value

'openBookを閉じるopenBook.Close

End IfEnd Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

演習課題 レッスン(14)

Page 31: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(14)開いたブックからデータを転記(単一)'開いたブックから請求データを転記しましょう。Sub example14()

'パスが「False」でなければ処理を行うIf openPath <> "False" Then

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(openPath)

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記する'※openBookの最初のワークシート(1)からwsTotal.Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = openBook.Worksheets(1).Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = openBook.Worksheets(1).Range("E31").Value

'openBookを閉じるopenBook.Close

End IfEnd Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答

Page 32: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(15)複数のブックを次々に開く!'複数のブックのパスを配列に格納し、次々に開きましょう。Sub example15()

'配列のための変数を宣言 (Variant型)Dim arrayPath As Variant

'ダイアログから複数のブックを選び、配列にパスを格納するarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'配列の要素(1)(2)(3)に格納されたパスからブックを順に開くWorkbooks.Open (arrayPath(1))Workbooks.Open (arrayPath(2))Workbooks.Open (arrayPath(3))

End Sub

配列になって受け取る

(1) (2) (3) 最後…

Variant型変数

??

??

??

演習課題 レッスン(15)

Page 33: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(15)複数のブックを次々に開く!'複数のブックのパスを配列に格納し、次々に開きましょう。Sub example15()

'配列のための変数を宣言 (Variant型)Dim arrayPath As Variant

'ダイアログから複数のブックを選び、配列にパスを格納するarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'配列の要素(1)(2)(3)に格納されたパスからブックを順に開くWorkbooks.Open (arrayPath(1))Workbooks.Open (arrayPath(2))Workbooks.Open (arrayPath(3))

End Sub

配列になって受け取る

(1) (2) (3) 最後…

Variant型変数

解答

Page 34: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(16)複数のブックを最後まで全て順番に開く'配列の1番目から要素の最大数まで、順番に開きましょう。Sub example16()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'ループ変数iを宣言Dim i As Integer

'Forループ(iが1から配列の要素数まで)For i = 1 To UBound(arrayPath)

'配列の要素(i番目)のパスからブックを開くWorkbooks.Open (arrayPath(i))

Next i

End Sub

??

??

演習課題 レッスン(16)

??

Page 35: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(16)複数のブックを最後まで全て順番に開く'配列の1番目から要素の最大数まで、順番に開きましょう。Sub example16()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'ループ変数iを宣言Dim i As Integer

'Forループ(iが1から配列の要素数まで)For i = 1 To UBound(arrayPath)

'配列の要素(i番目)のパスからブックを開くWorkbooks.Open (arrayPath(i))

Next i

End Sub

解答

Page 36: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(17)複数のブックを開き、操作する'開いた複数ブックのプロパティやメソッドを利用してみましょう。Sub example17()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(arrayPath(i))

'ブックのプロパティやメソッドを利用MsgBox openBook.NameopenBook.Close

Next iEnd Sub

??

??

演習課題 レッスン(17)

Page 37: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(17)複数のブックを開き、操作する'開いた複数ブックのプロパティやメソッドを利用してみましょう。Sub example17()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(arrayPath(i))

'ブックのプロパティやメソッドを利用MsgBox openBook.NameopenBook.Close

Next i

End Sub

解答

Page 38: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(18)[複数ブック版]ダイアログのキャンセルに対するエラー処理'ダイアログで「キャンセル」を押した場合のエラー対策をしましょう。Sub example18()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'もしopenPathが配列ならば、処理をする(そうでなければ何もしない)If IsArray(arrayPath) Then

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

Next i

End If

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

演習課題 レッスン(18)

??

Page 39: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(18)[複数ブック版]ダイアログのキャンセルに対するエラー処理'ダイアログで「キャンセル」を押した場合のエラー対策をしましょう。Sub example18()

'ダイアログから複数のブックを選び、配列にパスを格納するDim arrayPath As VariantarrayPath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?", MultiSelect:=True)

'もしopenPathが配列ならば、処理をする(そうでなければ何もしない)If IsArray(arrayPath) Then

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

Next i

End If

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答

Page 40: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(19)複数のブックを順番に開き、データ収集'次々に開いたブックから請求データを転記しましょう。Sub example19()

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(arrayPath(i))

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記する'※openBookの最初のワークシート(1)からwsTotal.Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = openBook.Worksheets(1).Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = openBook.Worksheets(1).Range("E31").Value

'openBookを閉じるopenBook.Close

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

Next i

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

??

演習課題 レッスン(19)

Page 41: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(19)複数のブックを順番に開き、データ収集'次々に開いたブックから請求データを転記しましょう。Sub example19()

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(arrayPath)

'変数を用意し、ブックを開いて格納Dim openBook As WorkbookSet openBook = Workbooks.Open(arrayPath(i))

'[請求書番号,発行日,会社名,担当者名,請求金額]をそれぞれ転記する'※openBookの最初のワークシート(1)からwsTotal.Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E2").ValuewsTotal.Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("E1").ValuewsTotal.Range("C" & MaxRow).Value = openBook.Worksheets(1).Range("B4").ValuewsTotal.Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("B5").ValuewsTotal.Range("E" & MaxRow).Value = openBook.Worksheets(1).Range("E31").Value

'openBookを閉じるopenBook.Close

'次のループのため、最終行を+1しておくMaxRow = MaxRow + 1

Next i

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答

Page 42: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(20)画面のチラつきを防止する'ブックの開閉のたびに画面がチラつくことを防止しましょう。Sub example20()

'もしopenPathが配列ならばIf IsArray(arrayPath) Then

'画面の描画を停止するApplication.ScreenUpdating = False

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(openPath)

Next i

'画面の描画を再開するApplication.ScreenUpdating = True

'処理が終わったことをMsgBoxで出力MsgBox "全ブックからデータを抽出しました。"

End IfEnd Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

??

??

演習課題 レッスン(20)

Page 43: レッスン(1)...'(1)ワークシートどうしのやりとり 'ワークシート「請求書1」から、ワークシート「データ収集」にデータを転記しましょう。Sub

'(20)画面のチラつきを防止する'ブックの開閉のたびに画面がチラつくことを防止しましょう。Sub example20()

'もしopenPathが配列ならばIf IsArray(arrayPath) Then

'画面の描画を停止するApplication.ScreenUpdating = False

'Forループ(iが1から配列の要素数まで)Dim i As IntegerFor i = 1 To UBound(openPath)

Next i

'画面の描画を再開するApplication.ScreenUpdating = True

'処理が終わったことをMsgBoxで出力MsgBox "全ブックからデータを抽出しました。"

End If

End Sub

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

~~~~~~~(途中省略)~~~~~~~~~~~~~~~~

解答