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

Post on 19-Jul-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

'(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)

'(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

解答

'(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)

修正

'(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

解答

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

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

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

End Sub

??

演習課題 レッスン(3)

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

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

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

End 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)

修正

'(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

解答

'(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)

修正

'(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

解答

'(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)

'(次のページへ)

'---請求書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

??

??

演習課題 つづき

'(次のページへ)

'---請求書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

??

演習課題 つづき

'(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

解答

'(次のページへ)

'---請求書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

つづき解答

'(次のページへ)

'---請求書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

つづき解答

'(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)

'(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

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

解答

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

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

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

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

End Sub

??

??

演習課題 レッスン(8)

'(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

解答

'(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)

'(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

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

解答

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

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

End Sub

??

演習課題 レッスン(10)

解答

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

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

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

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

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

End Sub

??

演習課題 レッスン(11)

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

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

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

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

End 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)

'(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

解答

'(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)

??

??

'(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

解答

'(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)

'(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

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

解答

'(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)

'(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型変数

解答

'(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)

??

'(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

解答

'(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)

'(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

解答

'(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)

??

'(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

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

解答

'(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)

'(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

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

解答

'(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)

'(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

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

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

解答

top related