Contents
ブックを開きます。
- 構文
- Workbook = Workbooks.Open( FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad )
- 引数
- FileName( Variant )省略可
- 開くブックのファイル名。
- UpdateLinks( Variant )省略可
- リンクの更新方法を指定します。省略した場合は確認メッセージが表示されます。
- ReadOnly( Variant )省略可
- 読み取り専用で開くにはTrueを指定します
- Format( Variant )省略可
- テキストファイルを開くときの区切り文字を指定します。
- Password( Variant )省略可
- パスワード保護されたブックを開くときに必要なパスワードを指定します。パスワードが必要なブックで省略した場合、ダイアログが表示されます。
- WriteResPassword( Variant )省略可
- 書き込みパスワードが設定されたブックを開くときの書き込みパスワードを指定します。
- IgnoreReadOnlyRecommended( Variant )省略可
- [読み取り専用を推奨する]にチェックが入っていてもメッセージを非表示にするにはTrueを指定します。
- Origin( XlPlatform )省略可
- テキストファイルを開くとき、テキストファイルの形式を指定します。
- Delimiter( Variant )省略可
- 引数Formatで「6」を設定しているとき、区切り文字を指定します。
- Editable( Variant )省略可
- Notify( Variant )省略可
- Converter( Variant )省略可
- AddToMru( Variant )省略可
- 最近使用したファイルの一覧にブックを追加するにはTrueを指定します。既定値はFalseです。
- Local( Variant )省略可
- CorruptLoad( XlCorruptLoad )省略可
- 戻り値
- 開いたブックを表すWorkbook オブジェクト
Workbooks オブジェクトを返すメソッド・プロパティ
- Application.Workbooks プロパティ
- 開いているすべてのワークブックを表すWorkbooks オブジェクトを返します。
定数一覧
XlPlatform 列挙
名前 | 値 | 説明 |
---|---|---|
xlMacintosh | 1 | Macintosh |
xlWindows | 2 | Microsoft Windows |
xlMSDOS | 3 | MS-DOS |
CONST xlMacintosh = 1
CONST xlWindows = 2
CONST xlMSDOS = 3
XlCorruptLoad 列挙
名前 | 値 | 説明 |
---|---|---|
xlNormalLoad | 0 | ブックを正常に開きます。 |
xlRepairFile | 1 | ブックを修復モードで開きます。 |
xlExtractData | 2 | ブックをデータの抽出モードで開きます。 |
CONST xlNormalLoad = 0
CONST xlRepairFile = 1
CONST xlExtractData = 2
ブックを開く
指定したファイルを開く
「D:\Desktop\Book1.xlsx」を開く。
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Open("D:\Desktop\Book1.xlsx")
FileName を指定するときは絶対パスで指定します。カレントディレクトリがデスクトップで「Book1」と相対パスで指定してもなぜかドキュメントフォルダにある「Book1」が開く。
Excel.Workbooks.Open("Book1")
Excel.Workbooks.Open(GET_CUR_DIR + "\Book1")
拡張子を省略すると以下のリストで先に見つかったファイルが優先して開きます。どれも見つからなければエラーが発生します。
「Book1.xlsx」と「Book1.csv」がある場合、より上にある「Book1.xlsx」が開きます。
- xlsx
- xlsm
- xlsb
- xltx
- xls
- slk
- csv
- txt
- dif
読み取り専用で開く
Excel.Workbooks.Open(FileName:="D:\Desktop\Book1.xlsx", ReadOnly:=TRUE)
外部参照のリンクを更新しないで開く
Excel.Workbooks.Open(FileName:="D:\Desktop\Book1.xlsx", UpdateLinks:=FALSE)
パスワード保護されたブックを開く
Excel.Workbooks.Open(FileName:="D:\Desktop\Book1.xlsx", Password:="1234")
パスワードをつけて保存するにはWorkbook.SaveAs メソッドを使います。
プログラム実行例
表の最終データの下のセルを選択

CONST xlDown = -4121
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Open("C:\Users\Owner\Downloads\東京月別平均気温(2000-2019年).xlsx")
Excel.Range("B4").End(xlDown).Offset(1).Select
-
(3)
- Excel.Application.Visible(4) (5) (7) (7) (7)
予定データをExcelから読み込み追加する(Outlook)

CONST xlUp = -4162
CONST olAppointmentItem = 1
HASHTBL reminders
reminders["なし"] = -1; reminders["0分"] = 0; reminders["5分"] = 5
reminders["10分"] = 10; reminders["15分"] = 15; reminders["30分"] = 30
reminders["1時間"] = 60; reminders["2時間"] = 120; reminders["3時間"] = 180
reminders["4時間"] = 240; reminders["5時間"] = 300; reminders["6時間"] = 360
reminders["7時間"] = 420; reminders["8時間"] = 480; reminders["9時間"] = 540
reminders["10時間"] = 600; reminders["11時間"] = 660; reminders["0.5日"] = 720
reminders["18時間"] = 1080; reminders["1日"] = 1440; reminders["2日"] = 2880
reminders["3日"] = 4320; reminders["4日"] = 5760; reminders["1週"] = 10080
reminders["2週"] = 20160
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
DIM Workbook = Excel.Workbooks.Open("D:\Desktop\予定一覧.xlsx")
DIM MaxRow = Excel.Cells(Excel.Rows.Count, 1).End(xlUp).Row
DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM AppointmentItem = Outlook.CreateItem(olAppointmentItem)
FOR row = 2 TO MaxRow
PRINT row
WITH AppointmentItem
.Subject = Excel.Cells(row, 2).Value // 件名
.Location = Excel.Cells(row, 3).Value // 場所
.Start = Excel.Cells(row, 4).Value // 開始時刻
.End = Excel.Cells(row, 5).Value // 終了時刻
IF Excel.Cells(row, 6).Value = "○" THEN .AllDayEvent = TRUE // 終日
IFB reminders[Excel.Cells(row, 7).Value] <> -1 THEN
.ReminderSet = TRUE
.ReminderMinutesBeforeStart = reminders[Excel.Cells(row, 7).Value] // リマインダー
ELSE
.ReminderSet = FALSE
ENDIF
.BusyStatus = 1 // 公開方法
.Body = Excel.Cells(row, 8).Value // 本文
.Save
ENDWITH
NEXT
MSGBOX((MaxRow - 1) + "件の予定を登録しました。")
Outlook.Quit
Excel.Quit
//////////////////////////////////////////////////
// 【引数】
// serial : 時間を表すシリアル値を指定
// 【戻値】
//
//////////////////////////////////////////////////
FUNCTION Minute(serial)
RESULT = REPLACE(FORMAT(INT(serial * 1440) MOD 60, 2), " ", "0")
FEND
-
(15,21)
- Excel.Application.Visible(16) (17) (19) (22) (26)
- Outlook.AppointmentItem.Subject(27)
- Outlook.AppointmentItem.Location(28) (29) (30) (31) (33,36) (34)
- Outlook.AppointmentItem.BusyStatus(38) (39) (40) (44)
- Outlook.Application.Quit(46) (47)
コロナのグラフ
CONST xlDown = -4121
CONST xlColumnClustered = 51
CONST xlCategory = 1
CONST xlValue = 2
CONST xlLine = 4
CONST msoThemeColorText2 = 15
CONST msoThemeColorBackground1 = 14
DIM Excel = CREATEOLEOBJ("Excel.Application")
WITH Excel
.Visible = TRUE
.Workbooks.Open("D:\Downloads\covid19_data.csv")
DIM ws = .ActiveSheet
DIM ws2 = .Worksheets.Add(EMPTYPARAM, .Worksheets(.Worksheets.Count))
ws2.Name = "7日間平均"
ws.Range("1:1").Copy(ws2.Range("1:1"))
ws.Range("A:D").Copy(ws2.Range("A:D"))
ws.Range("W:AB").Copy(ws2.Range("W:AB"))
ws2.Range("E8").Value = "=INT(SUM(covid19_data!E2:E8)/7)"
ws2.Range("E8").AutoFill(ws2.Range("E8:V8"))
DIM lastRow = ws.Range("B2").End(xlDown).Row
ws2.Range("E8:V8").AutoFill(ws2.Range("E8:V" + lastRow))
DIM Chart
// 検査数
Chart = .Charts.Add
.ActiveSheet.Move(EMPTYPARAM, .Sheets(.Sheets.Count))
.ActiveSheet.Name = "検査数"
WITH Chart
.ChartType = xlColumnClustered
.SetSourceData(ws.Range("covid19_data!$E:$E"))
WITH .SeriesCollection(1)
.Name = "日検査数"
.XValues = "covid19_data!$Y2:$Y" + lastRow
WITH .Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorText2
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0.6000000238
.Transparency = 0
ENDWITH
ENDWITH
WITH .Axes(xlCategory)
.MinimumScale = dateSerial(2020, 1, 1) //43831
.MajorUnit = 4
.TickLabels.Font.Size = 14
ENDWITH
WITH .Axes(xlValue)
.HasMajorGridLines = TRUE
.HasMinorGridLines = TRUE
.MinimumScale = 0
.MajorUnit = 5000
.MinorUnit = 1000
.TickLabels.Font.Size = 14
ENDWITH
ENDWITH
// 陽性数
Chart = .Charts.Add
.ActiveSheet.Move(EMPTYPARAM, .Sheets(.Sheets.Count))
.ActiveSheet.Name = "陽性者数"
WITH Chart
.ChartType = xlColumnClustered
.SetSourceData(ws.Range("covid19_data!$G2:$G" + lastRow))
.SeriesCollection.NewSeries
.SeriesCollection(2).Values = "='7日間平均'!$G2:$G" + lastRow
// 日付
WITH .SeriesCollection(1)
.Name = "日陽性数"
.XValues = "covid19_data!$Y2:$Y" + lastRow
WITH .Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorText2
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0.6000000238
.Transparency = 0
ENDWITH
ENDWITH
// 7日間平均
WITH .SeriesCollection(2)
.Name = "7日間平均"
.ChartType = xlLine
.Format.Line.ForeColor.RGB = RGBToColor(0, 112, 192)
ENDWITH
// x軸
WITH .Axes(xlCategory)
.MinimumScale = dateSerial(2020, 1, 1) //43831
.MajorUnit = 4
.TickLabels.Font.Size = 14
ENDWITH
// y軸
WITH .Axes(xlValue)
.HasMajorGridLines = TRUE
.HasMinorGridLines = TRUE
.MinimumScale = 0
.MajorUnit = 5000
.MinorUnit = 1000
.TickLabels.Font.Size = 14
ENDWITH
ENDWITH
// 死亡数
Chart = .Charts.Add
.ActiveSheet.Move(EMPTYPARAM, .Sheets(.Sheets.Count))
.ActiveSheet.Name = "死亡数"
WITH Chart
.ChartType = xlColumnClustered
.SetSourceData(ws.Range("covid19_data!$O2:$O" + lastRow))
.SeriesCollection.NewSeries
.SeriesCollection(2).Values = "='7日間平均'!$O2:$O" + lastRow
WITH .SeriesCollection(1)
.Name = "日死亡数"
.XValues = "covid19_data!$Y2:$Y" + lastRow
WITH .Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = -0.150000006
.Transparency = 0
ENDWITH
ENDWITH
WITH .SeriesCollection(2)
.Name = "7日間平均"
.ChartType = xlLine
WITH .Format.Line
.Weight = 2.5
.Transparency = 0
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = -0.5
ENDWITH
ENDWITH
WITH .Axes(xlCategory)
.MinimumScale = dateSerial(2020, 1, 1) //43831
.MajorUnit = 4
.TickLabels.Font.Size = 14
ENDWITH
WITH .Axes(xlValue)
.HasMajorGridLines = TRUE // 軸あり
.HasMinorGridLines = TRUE // 目盛線あり
.MinimumScale = 0 // 最小値
.TickLabels.Font.Size = 14 // フォントサイズ
ENDWITH
ENDWITH
// 死亡累計
Chart = .Charts.Add
.ActiveSheet.Move(EMPTYPARAM, .Sheets(.Sheets.Count))
.ActiveSheet.Name = "死亡累計"
WITH Chart
.ChartType = xlColumnClustered
.SetSourceData(ws.Range("covid19_data!$P2:$P" + lastRow))
WITH .SeriesCollection(1)
.Name = "死亡累計"
.XValues = "covid19_data!$Y2:$Y" + lastRow
WITH .Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = -0.150000006
.Transparency = 0
ENDWITH
ENDWITH
WITH .Axes(xlCategory)
.MinimumScale = dateSerial(2020, 1, 1) //43831
.MajorUnit = 4
.TickLabels.Font.Size = 14
ENDWITH
WITH .Axes(xlValue)
.HasMajorGridLines = TRUE // 軸あり
.MinimumScale = 0 // 最小値
.TickLabels.Font.Size = 14 // フォントサイズ
ENDWITH
.ChartTitle.Delete
ENDWITH
ENDWITH
//////////////////////////////////////////////////
// 【引数】
// year : 年
// month : 月
// day : 日
// 【戻値】
// シリアル値
//////////////////////////////////////////////////
FUNCTION dateSerial(year, month, day)
month = REPLACE(FORMAT(month, 2), " ", "0")
day = REPLACE(FORMAT(day, 2), " ", "0")
d = GETTIME(0, year + "/" + month + "/" + day)
RESULT = uwscToSerial(d)
FEND
//////////////////////////////////////////////////
// 【引数】
// r : 赤成分
// g : 緑成分
// b : 青成分
// 【戻値】
// Color値
//////////////////////////////////////////////////
FUNCTION RGBToColor(r, g, b)
RESULT = r + g * 256 + b * 65536
FEND
//////////////////////////////////////////////////
// 【引数】
// uwscTime : UWSC時間
// 【戻値】
// シリアル値
//////////////////////////////////////////////////
FUNCTION uwscToSerial(uwscTime)
uwscDate = uwscTime / 86400
RESULT = 36526 + uwscDate
FEND
-
(9)
- Excel.Visible(12) (13)
- Excel.ActiveSheet(15) (16) (17) (18)
- Excel.Worksheet.Range.Value(21)
- Excel.Worksheet.Range.AutoFill(22,24) (23) (23) (29)
- Excel.Charts.Add(29,65,113)
- Excel.ActiveSheet.Move(30,66,114) (30,66,114)
- Excel.Sheets.Count(30,66,114) (31,67,115) (34,70,118)
- Excel.Chart.SetSourceData(35,71,,119) (37,72,76,88,134)
- Excel.Chart.SeriesCollection.Name(38,77,89,135)
- Excel.Chart.SeriesCollection.XValue(39,78)
- Excel.Chart.SeriesCollection.Format(40,79)
- Excel.Chart.SeriesCollection.Format.Line(41,79,136)
- Excel.Chart.SeriesCollection.Format.Line.ForeColor.ObjectThemeColor(41,80,140)
- Excel.Chart.SeriesCollection.Format.Line.ForeColor.TintAndShade(42,81,141)
- Excel.Chart.SeriesCollection.Format.Line.ForeColor.Brightness(43,82,142)
- Excel.Chart.Axes(48,95,102) (49)
- Excel.Chart.Axes.MinimumScale(49,57,96,105)
- Excel.Chart.Axes.MajorUnit(50,97)
- Excel.Chart.Axes.TickLabels.Font.Size(51,60,98,108)
- Excel.Chart.Axes.HasMajorGridLines(55,103)
- Excel.Chart.Axes.HasMinorGridLines(56,104)
- Excel.Chart.Axes.MajorUnit(58,106)
- Excel.Chart.Axes.MinorUnit(59,107)
- Excel.Chart.SeriesCollection.NewSeries(72,120)
- Excel.Chart.SeriesCollection.Values(73,121)
- Excel.Chart.SeriesCollection.ChartType(90,136)
- Excel.Chart.SeriesCollection.Format.Line.ForeColor.RGB(91) (91)
- Excel.Chart.SeriesCollection.Format.Line.Weight(138)
- Excel.Chart.SeriesCollection.Format.Line.Transparency(139)