A Day In The Life

とあるプログラマの備忘録

久々にVBA

今日は久しぶりにExcelのマクロを作成しました。



とあるExcelシートから別のシートにセルの内容をコピーするプログラムで

Private Const START_FROM As Integer = 4
Private Const START_TO As Integer = 3

Private Sub Start_Click()
  Dim copyTo As Workbook
  Dim copyFrom As Workbook

  '貼り付け先Excelファイル
  Set copyTo = ActiveWorkbook
  'コピー元Excelファイル
  Set copyFrom = Workbooks.Open(Filename:=["C:/Excelsample/test1.xls"])

  On Error GoTo ERROR
  Dim i As Long
  Dim rowCount As Long
  rowCount = 0

  For i = START_FROM To 65536
    '一定の条件のセルのみコピー
    If copyFrom.ActiveSheet.Cells(i, 5).Value = "table" Then
      Cells(rowCount + START_TO, 1).Value = _ 
        copyFrom.ActiveSheet.Cells(i, 1).Value
      Cells(rowCount + START_TO, 2).Value = _ 
        copyFrom.ActiveSheet.Cells(i, 2).Value
      Cells(rowCount + START_TO, 3).Value = _
        copyFrom.ActiveSheet.Cells(i, 3).Value
    Else
      Exit For
    End If
    rowCount = rowCount + 1
  Next i
ERROR:
  copyFrom.Close
End Sub

まぁこんな感じのマクロです。

このプロジェクトでVBの経験が役に立つとは思わなかったw