「エクセルファイルを作成・操作・保存する」の編集履歴(バックアップ)一覧に戻る

エクセルファイルを作成・操作・保存する - (2013/06/11 (火) 02:06:46) のソース

***エクセルファイルを作成・操作・保存するクラス

- ソース
 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

 
 

[[トップ]]