「エクセルファイルを作成・操作・保存する」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
***エクセルファイルを作成・操作・保存するクラス
- ソース
Option Explicit
' EXS_ExcelFileObject
' エクセルでの新規ファイル作成・ファイルオープン・ファイル開閉・保存を行う
' Accessで使用する場合「Microsoft Excel Object Library」への参照設定を追加する
Private TemplateFileInfo As CMN_FileInfo
Private TargetFileInfo As CMN_FileInfo
Private fileobj As Workbook
Private Sub class_initialize()
' 1.属性の初期化
Set TemplateFileInfo = New CMN_FileInfo
Set TargetFileInfo = New CMN_FileInfo
End Sub
' SetTemplateFileInfo
' テンプレートファイルの情報を取得する
' 引数:あり
' iFileInfo :CMN_FileInfo :ファイル情報
' 戻り値:なし
Public Function SetTemplateFileInfo(ByVal iFileInfo As CMN_FileInfo)
Set TemplateFileInfo = iFileInfo
End Function
' SetTargetFileInfo
' 操作対象ファイルの情報を取得する
' 引数:あり
' iFileInfo :CMN_FileInfo :ファイル情報
' 戻り値:なし
Public Function SetTargetFileInfo(ByVal iFileInfo As CMN_FileInfo)
Set TargetFileInfo = iFileInfo
End Function
' OpenFile
' エクセルファイルを開く
' 引数:なし
' 戻り値:なし
Public Function CreateNewFile()
If TemplateFileInfo.GetFileName <> "" Then
Set fileobj = Excel.Application.Workbooks.Add(TemplateFileInfo.GetFilePath & TemplateFileInfo.GetFileName)
Else
Set fileobj = Excel.Application.Workbooks.Add
End If
End Function
' SaveNewFile
' 新規ファイルとしてエクセルファイルを保存する
' 保存形式は、エクセルのバージョンと、保存ファイル名の拡張子から自動決定する
' 引数:なし
' 戻り値:なし
Public Function SaveNewFile()
Dim appVersion As Long
' 1.エクセルのバージョン取得
appVersion = CLng(Excel.Application.Version)
' 2.バージョン別・拡張子別に保存方法を選択
If appVersion < 12 Then
'a.バージョンは2003以前
If Right(TargetFileInfo.GetFileName, 4) = ".xls" Then
'(1).拡張子が「.xls」
' FileFormatの設定値=43(XlFileFormat.xlExcel9795)
fileobj.SaveAs filename:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=43
End If
Else
'a.バージョンは2007以降
If Right(TargetFileInfo.GetFileName, 4) = ".xls" Then
'(1).拡張子が「.xls」
' FileFormatの設定値=56(XlFileFormat.xlExcel8)
fileobj.SaveAs filename:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=56
ElseIf Right(TargetFileInfo.GetFileName, 5) = ".xlsx" Then
'(2).拡張子が「.xlsx」
' FileFormatの設定値=51(XlFileFormat.xlOpenXMLWorkbook)
fileobj.SaveAs filename:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=51
End If
End If
End Function
' OpenFile
' エクセルファイルを開く
' 引数:なし
' 戻り値:なし
Public Function OpenFile()
Set fileobj = Nothing
Set fileobj = Excel.Application.Workbooks.Open(TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName)
End Function
' SaveNewFile
' 開いているエクセルファイルを上書き保存する
' 引数:なし
' 戻り値:なし
Public Function SaveFile()
' 1.ファイルが存在する場合、ファイルを上書き保存
If Not fileobj Is Nothing Then
fileobj.Save
End If
End Function
' CloseFile
' 開いているエクセルファイルを閉じる
' 引数:なし
' 戻り値:なし
Public Function CloseFile()
' 1.ファイルが存在する場合、ファイルを閉じる(保存しない)
If Not fileobj Is Nothing Then
fileobj.Close SaveChanges:=False
End If
Set fileobj = Nothing
End Function
[[トップ]]
***エクセルファイルを作成・操作・保存するクラス
- ソース
Option Explicit
' EXS_ExcelFileObject
' エクセルでの新規ファイル作成・ファイルオープン・ファイル開閉・保存を行う
' Accessで使用する場合「Microsoft Excel Object Library」への参照設定を追加する
Private TemplateFileInfo As CMN_FileInfo
Private TargetFileInfo As CMN_FileInfo
Private fileObj As Workbook
Private Sub class_initialize()
' 1.属性の初期化
Set TemplateFileInfo = New CMN_FileInfo
Set TargetFileInfo = New CMN_FileInfo
End Sub
' SetTemplateFileInfo
' テンプレートファイルの情報を取得する
' 引数:あり
' iFileInfo :CMN_FileInfo :ファイル情報
' 戻り値:なし
Public Function SetTemplateFileInfo(ByVal iFileInfo As CMN_FileInfo)
Set TemplateFileInfo = iFileInfo
End Function
' SetTargetFileInfo
' 操作対象ファイルの情報を取得する
' 引数:あり
' iFileInfo :CMN_FileInfo :ファイル情報
' 戻り値:なし
Public Function SetTargetFileInfo(ByVal iFileInfo As CMN_FileInfo)
Set TargetFileInfo = iFileInfo
End Function
' OpenFile
' エクセルファイルを開く
' 引数:なし
' 戻り値:なし
Public Function CreateNewFile()
If TemplateFileInfo.GetFileName <> "" Then
Set fileObj = Excel.Application.Workbooks.Add(TemplateFileInfo.GetFilePath & TemplateFileInfo.GetFileName)
Else
Set fileObj = Excel.Application.Workbooks.Add
End If
End Function
' SaveNewFile
' 新規ファイルとしてエクセルファイルを保存する
' 保存形式は、エクセルのバージョンと、保存ファイル名の拡張子から自動決定する
' 引数:なし
' 戻り値:なし
Public Function SaveNewFile()
Dim appVersion As Long
' 1.エクセルのバージョン取得
appVersion = CLng(Excel.Application.Version)
' 2.バージョン別・拡張子別に保存方法を選択
If appVersion < 12 Then
'a.バージョンは2003以前
If Right(TargetFileInfo.GetFileName, 4) = ".xls" Then
'(1).拡張子が「.xls」
' FileFormatの設定値=43(XlFileFormat.xlExcel9795)
fileObj.SaveAs FileName:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=43
End If
Else
'a.バージョンは2007以降
If Right(TargetFileInfo.GetFileName, 4) = ".xls" Then
'(1).拡張子が「.xls」
' FileFormatの設定値=56(XlFileFormat.xlExcel8)
fileObj.SaveAs FileName:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=56
ElseIf Right(TargetFileInfo.GetFileName, 5) = ".xlsx" Then
'(2).拡張子が「.xlsx」
' FileFormatの設定値=51(XlFileFormat.xlOpenXMLWorkbook)
fileObj.SaveAs FileName:=TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName, FileFormat:=51
End If
End If
End Function
' OpenFile
' エクセルファイルを開く
' 引数:なし
' 戻り値:なし
Public Function OpenFile()
Dim bookObj As Workbook
Dim isOpenFlg As Boolean
' 1.フラグを初期化
isOpenFlg = False
' 2.指定名のブックが開かれている場合フラグをTRUEにする
For Each bookObj In Excel.Application.Workbooks
If bookObj.Name = TargetFileInfo.GetFileName Then
isOpenFlg = True
Exit For
End If
Next bookObj
' 3.フラグがFALSEの場合ファイルを開く
Set fileObj = Nothing
If isOpenFlg = False Then
Set fileObj = Excel.Application.Workbooks.Open(TargetFileInfo.GetFilePath & TargetFileInfo.GetFileName)
Else
' 4.既に開かれている場合、指定ファイルのオブジェクトを取得する
Set fileObj = Excel.Application.Workbooks(TargetFileInfo.GetFileName)
End If
End Function
' SaveFile
' 開いているエクセルファイルを上書き保存する
' 引数:なし
' 戻り値:なし
Public Function SaveFile()
' 1.ファイルが存在する場合、ファイルを上書き保存
If Not fileObj Is Nothing Then
fileObj.Save
End If
End Function
' CloseFile
' 開いているエクセルファイルを閉じる
' 引数:なし
' 戻り値:なし
Public Function CloseFile()
' 1.ファイルが存在する場合、ファイルを閉じる(保存しない)
If Not fileObj Is Nothing Then
fileObj.Close SaveChanges:=False
End If
Set fileObj = Nothing
End Function
[[トップ]]