本ページには広告が含まれています。
目次
Excelで新規ブックの作成、既存ファイルを開く処理を関数化したものです。引数を指定しなかった場合は新規ブックを開き、引数を指定した場合はそのパスのブックを開きます。
- 構文
- Excel = ExcelBoot( path )
- 引数
- path 省略可
- 開くファイルのパス名
- 戻り値
- Excel オブジェクト
プログラム
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
解説
- 2行目
- Excel オブジェクトを生成しExcelに代入します。
DIM Excel = CREATEOLEOBJ("Excel.Application")
- 3行目
- Excelを表示します。
Excel.Visible = TRUE
- 5行目
- ワークブックを追加します。
Excel.Workbooks.Add
- 7-11行目
- 親フォルダ名を取得できなければカレントディレクトリとpathを繋げて絶対パスにし、そのパスにあるファイルを開く。
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject") IFB FSO.GetParentFolderName(path) = "" THEN path = GET_CUR_DIR + "\" + path ENDIF Excel.Workbooks.Open(path)
- 13行目
- Excel オブジェクトを戻り値として返す。
RESULT = Excel
使い方
新規ブックの作成
新規ブックを作成し、生成したExcel オブジェクトをExcelに代入します。
DIM Excel = ExcelBoot()
指定したパスのブックを開く
生成したExcel オブジェクトをExcelに代入し、「D:\Documents\Book1.xlsx」を開きます。
DIM Excel = ExcelBoot("D:\Documents\Book1.xlsx")
プログラム実行例
罫線を引く
CONST xlEdgeTop = 8
CONST xlDiagonalUp = 6
CONST xlDouble = -4119
CONST xlDash = -4115
CONST xlContinuous = 1
DIM Excel = ExcelBoot()
WITH Excel
.Range("B2").Borders.LineStyle = xlContinuous
.Range("B4").Borders(xlEdgeTop).LineStyle = xlDash
.Range("B6").Borders(xlDiagonalUp).LineStyle = xlDouble
.Range("D2:F6").Borders.LineStyle = xlContinuous
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
使用関数
相対座標
DIM Excel = ExcelBoot()
WITH Excel.Range("E5")
FOR r = -3 TO 3
FOR c = -3 TO 3
DIM Range = .Offset(r, c)
Range.Value = "(" + r + ", " + c + ")"
IF r = 0 AND c = 0 THEN Range.Value = "基準セル"
NEXT
NEXT
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
結果
使用関数
2軸のグラフを作成する
CONST xlLine = 4
CONST xlColumnClustered = 51
CONST xlMarkerStyleCircle = 8
CONST xlValue = 2
CONST xlSecondary = 2
DIM Excel = ExcelBoot("東京の気温と降水量(2019年).xlsx")
DIM SheetName = "Sheet1"
DIM Charts = Excel.Charts.Add
DIM Series
Charts.ChartArea.ClearContents
Series = Charts.SeriesCollection.NewSeries
WITH Series
WITH Charts.Axes(xlValue)
.HasTitle = TRUE
.AxisTitle.Caption = "気温[℃]"
ENDWITH
.ChartType = xlLine
.MarkerStyle = xlMarkerStyleCircle
.XValues = Excel.Worksheets(SheetName).Range("B5:B16")
.Values = Excel.Worksheets(SheetName).Range("C5:C16")
.Name = Excel.Worksheets(SheetName).Range("C4")
.Format.Line.ForeColor.RGB = 255
.MarkerBackgroundColor = 255
ENDWITH
Series = Charts.SeriesCollection.NewSeries
WITH Series
.ChartType = xlLine
.MarkerStyle = xlMarkerStyleCircle
.XValues = Excel.Worksheets(SheetName).Range("B5:B16")
.Values = Excel.Worksheets(SheetName).Range("D5:D16")
.Name = Excel.Worksheets(SheetName).Range("D4")
.Format.Line.ForeColor.RGB = 16711680
.MarkerBackgroundColor = 16711680
ENDWITH
Series = Charts.SeriesCollection.NewSeries
WITH Series
TEXTBLOCK
WITH Charts.Axes(xlValue)
.HasTitle = TRUE
.AxisTitle.Caption = "降水量[mm]"
ENDWITH
ENDTEXTBLOCK
.ChartType = xlColumnClustered
.XValues = Excel.Worksheets(SheetName).Range("B5:B16")
.Values = Excel.Worksheets(SheetName).Range("E5:E16")
.Name = Excel.Worksheets(SheetName).Range("E4")
.Format.Line.ForeColor.RGB = 10341600
.AxisGroup = xlSecondary
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
使用関数
ソート
人口の多い順にソートします。
使用したファイルをダウンロードできます。
[download "/example/510/都道府県別人口.xlsx"]CONST xlDown = -4121
CONST xlSortOnValues = 0
CONST xlDescending = 2
CONST xlSortNormal = 0
CONST xlYes = 1
CONST xlGuess = 0
CONST xlTopToBottom = 1
CONST xlPinYin = 1
DIM Excel = ExcelBoot("D:\Documents\都道府県別人口.xlsx")
WITH Excel.ActiveSheet
WITH .Sort
WITH .SortFields
.Clear
.Add(Excel.Range("C2").End(xlDown), xlSortOnValues, xlDescending, xlSortNormal)
ENDWITH
.SetRange(Excel.Range("A1").CurrentRegion)
.Header = xlYes
.MatchCase = FALSE
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
ENDWITH
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
使用関数
解説
指定したシートが存在するか
Sheet1〜Sheet5のシートが存在するか調べます。
存在しなければExcel.Sheets(SheetName)でエラーを出すので、存在有無を確認できます。
DIM Excel = ExcelBoot()
FOR n = 1 TO 5
TRY
DIM SheetName ="Sheet" + n
DIM Worksheet = Excel.Sheets(SheetName)
PRINT SheetName + "は存在します"
EXCEPT
PRINT SheetName + "は存在しません"
ENDTRY
NEXT
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
結果
Sheet1は存在します
Sheet2は存在します
Sheet3は存在します
Sheet4は存在しません
Sheet5は存在しません
使用関数
人口の上位3位取得
上位3位まで赤文字にする。
使ったファイルのダウンロードは下記リンクからできます。
[download "/example/510/都道府県別人口.xlsx"]DIM Excel = ExcelBoot("都道府県別人口.xlsx")
CONST xlDown = -4121
CONST xlTop10Top = 1
WITH Excel
.Range("A:E").EntireColumn.AutoFit
FOR col = 3 TO 5
DIM Top10 = .Range(.Cells(2, col), .Cells(48, col)).FormatConditions.AddTop10
WITH Top10
.Rank = 3
.TopBottom = xlTop10Top
.Font.Color = 255
.Font.Bold = TRUE
ENDWITH
NEXT
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
結果
使用関数
九九の表を作る
DIM Excel = ExcelBoot()
WITH Excel
DIM Cells1 = .Cells(2, 2)
DIM Cells2 = .Cells(11, 11)
.Range(Cells1, Cells2).Borders.LineStyle = xlContinuous
DIM size = 25
.Cells.ColumnWidth = size * (.Range("A1").ColumnWidth / .Range("A1").Width)
.Cells.RowHeight = size
.Range("B2:B11").Interior.Color = 255 + 204 * 256 + 255 * 65536
WITH .Range("B3")
.Value = 1
.AutoFill(.Resize(9), xlLinearTrend)
ENDWITH
.Range("B2:K2").Interior.Color = 255 + 204 * 256 + 255 * 65536
WITH .Range("C2")
.Value = 1
.AutoFill(.Resize(, 9), xlLinearTrend)
ENDWITH
.Range("C3").Value = "=$B3*C$2"
.Range("C3").AutoFill(.Range("C3:K3"), xlFillDefault)
.Range("C3:K3").AutoFill(.Range("C3:K11"), xlFillDefault)
.Range("B2:K2").Borders(xlEdgeBottom).LineStyle = xlDouble
.Range("B2:B11").Borders(xlEdgeRight).LineStyle = xlDouble
.Range(Cells1, Cells2).BorderAround(xlContinuous, xlThick)
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// path : 開くファイルのパス名
// 【戻り値】
// <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a>
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
IFB path = "" THEN
Excel.Workbooks.Add
ELSE
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.GetParentFolderName(path) = "" THEN
path = GET_CUR_DIR + "\" + path
ENDIF
Excel.Workbooks.Open(path)
ENDIF
RESULT = Excel
FEND
結果
使用関数
関連記事
- XLOPEN関数 (スクリプト関数)
- XLOPEN関数は、Excelまたは OOoのCalcを起動する関数です。第一引数に読み込むファイル名(新規の場合は省略)、第二引数に起動フラグ、第三引数以降にパラメータ(パスワードや読み込み専用)を指定します。
- XLSETDATA関数 (スクリプト関数)
- Excelのセルに値を代入します。
- XLSHEET関数 (スクリプト関数)
- PageSetup オブジェクト
- Excel のシートの印刷設定を表すオブジェクトです。シートの用紙サイズ、余白、方向、印刷タイトルなど、印刷に関連する設定を管理するのに使用されます。
- Application オブジェクト
- Excel全体を表すオブジェクトです。Excel全体に対しての操作、設定変更をしたい場合に使います。
- Border オブジェクト
- 上下左右一つひとつの罫線を表します。
- Characters オブジェクト
- オブジェクトに含まれる文字列の文字を表します。
- Charts オブジェクト
- 指定されたブックまたは作業中のブックにあるすべてのグラフシートのコレクションです。
- Comment オブジェクト
- セルに関連付けられたコメントを表します。
- FullSeriesCollection オブジェクト
- グラフのデータ系列を表すコレクション。