Object | Description |
---|---|
Application | Excelアプリケーション自体を表すオブジェクト |
FormatConditions | ひとつのセル範囲の条件付き書式(FormatCondition)のコレクション |
Range | セル、行、列、ひとつ以上のセル範囲を含む選択範囲又は3-D範囲を表すオブジェクト |
Worksheet | ワークシートを表すオブジェクト |
Worksheets | 指定したブックまたは作業中のブックにあるすべてのWorksheetオブジェクトのコレクション |
VBAでExcelのブック(ファイル)を開くには、Workbooks.Openメソッドを使用する。
Workbooks.Open "book.xlsx"
VBAでExcelのブックを閉じるには、Workbooks.Closeメソッドを使用する。
Workbooks("book.xlsx").Close
VBAでExcelのブック名を取得するには、ActiveWorkbook.Name又はThisWorkbook.Nameを参照する。
ActiveWorkbook.Name
ThisWorkbook.Name
ブック(ファイル)を開いたときに、Auto_Openという名前のSubプロシージャが存在すれば自動的に実行される。プロシージャ名は大文字でも小文字でもよい。
Sub Auto_Open()
' ブック(ファイル)を開いたときに自動的に実行する処理
End Sub
VBAのWorksheetsコレクションは、Microsoft Excelブック(ファイル)に含まれるすべてのワークシートを表す。
Worksheets
ワークシート名を指定することで、特定のワークシートのオブジェクトを指定できる。
Worksheets("Sheet1")
すべてのワークシート名を取得する例を次に示す。
Dim ws As Worksheet
Dim i As Integer
i = 0
For Each ws In Worksheets
i = i + 1
Cells(i, 1) = ws.Name
Next
アクティブなワークシートのWorksheet
オブジェクトを取得するには、Applicationオブジェクト、Windowオブジェクト又はWorksheetオブジェクトのActiveSheet
プロパティを参照する。
Dim sheet1 As Worksheet
Set sheet1 = ActiveSheet
VBAからMicrosoft Excel ワークシートのセルを操作する場合、ワークシートを明示的に指定しなければ、現在アクティブなワークシートのセルが対象となります。
アクティブなワークシートを切り替えるには、次に示すいずれかの方法で行います。
Worksheets.Activateメソッドの構文を次に示します。
Worksheets("シート名").Activate
Worksheets.Activateメソッドを使用してワークシートをアクティブにするVBAソースコードの例を次に示します。
Worksheets("Sheet1").Activate
セルにデータを入力するには、次に示すいずれかの方法を使用します。
Sheet1
の列3の値が "原油"
の行だけを Sheet2
にコピーするVBAの例を次に示します。
Dim i As Integer
Dim o As Integer
Dim j As Integer
Worksheets("Sheet1").Activate
o = 1
' Sheet1の100行が対象
For i = 1 To 100
If Cells(i, 3).Value = "原油" Then
' 10列分コピーする
For j = 1 To 10
Worksheets("Sheet2").Cells(o, j).Value = Cells(i, j)
Next j
o = o + 1
End
Next i
セルのデータを削除するには、次に示すいずれかの方法を使用します。
セルの数式がエラーになった場合、セルに「#NAME?」や「#DIV/0!」と表示される。VBAでこの数式エラーかどうかを判定するにはIsError関数を使う。
If IsError(ActiveCell.Value) Then
' 数式エラーの場合に実行する処理
End If
「開発」タブの「挿入」をクリックすると、メニューが表示されるので、「フォームコントロール」のボタンのアイコンをクリックする。
Excelのシート上で始点をクリックして、終点までドラッグする。マウスのクリックボタンを離すと、「マクロの登録」ダイアログが表示されるので、ボタンをクリックした際に実行するマクロを「マクロ名」から選択して「OK」ボタンをクリックする。
ボタンのラベルを変更するには、ボタンにマウスポインタを当てて右クリックメニューを開き、「テキストの編集」をクリックすると、ラベルが編集できるようになる。
ActiveSheet.Hyperlinks.Add Anchor, Address, SubAddress, TextToDisplay
設定対象範囲(オブジェクト、選択範囲など)
同一ブックの場合は、""を指定する。他のブックの場合は、ファイル名を指定する。
リンク先のURL(ブック内の"シート名!セル名"など)。
表示するラベル文字列
Sheets("Sheet1").Cells.Clear
Const TYPE_ROW = 1
Const NAME_ROW = 2
Const DATA_ROW = 3
Const DATA_ROW_MAX = 100
Const WORKSHEET_SQL = "SQL"
Sub createSql()
Dim row As Integer
Dim column As Integer
Dim maxColumn As Integer
Dim sql As String
Dim columnType(100) As String
' シートのセルをクリア
Worksheets(WORKSHEET_SQL).Cells.Clear
' 2行目(列名)から列の数を数える
For maxColumn = 1 To 100
If Cells(NAME_ROW, maxColumn).Value = "" Then
Exit For
End If
' 列の型
columnType(maxColumn) = Cells(TYPE_ROW, maxColumn).Value
Next
maxColumn = maxColumn - 1
For row = DATA_ROW To DATA_ROW_MAX
' 空行が見つかったら処理終了
If Cells(row, 1).Value = "" Then
Exit For
End If
' SQL文初期化
sql = "INSERT INTO " + ActiveSheet.Name + " VALUES("
For column = 1 To maxColumn
' 2列名以降であればカンマで区切る
If column > 1 Then
sql = sql + ", "
End If
' CHAR, VARCHAR2, DATEであれば引用符で括る
Select Case columnType(column)
Case "CHAR", "VARCHAR2", "DATE"
sql = sql + "'" + Cells(row, column).Value + "'"
Case Else
sql = sql + Cells(row, column).Value
End Select
Next
Worksheets(WORKSHEET_SQL).Cells(row, 1) = sql + ");"
Next
End Sub
Excel VBAからPowerPointを操作するには、参照設定を行う必要がある。
Dim filepath As String
Dim pptapp As Object
Dim pptfile As Object
filepath = Application.GetOpenFilename("PowerPoint プレゼンテーション,*pptx?;.ppt")
If filepath <> "False" Then
Set pptapp = CreateObject("PowerPoint.Application")
Set pptfile = pptapp.presentaions.Open(Filename:=filepath)
Else
MsgBox "キャンセルされました。マクロを終了します。"
Exit Sub
End If
Method | Description |
---|---|
AutoFilter | オートフィルタを使ってリストにフィルタをかける。 |
Clear | オブジェクト全体をクリアする。 |
ClearFormats | オブジェクトの書式設定を削除する。 |
ActiveSheet.ChartObjects(1).Chart.Export ThisWorkbook.Path & "\example.png"