現状で使っているファイルをそのままにして、書いてある情報を別ブックやシートに転記して処理するVBAでは、使用者に使う元データファイルの指定をしてもらうと良いです。
その時に使うそのまま使えるVBAを紹介します。
読み出しファイル指定ルーチン
読み出すファイルを指定するルーチンは次の通りです。
Private Function 読み込みファイルの指定(mybook As Workbook, ファイルの種類 As String,ファイル名の行 As Integer)
Dim FileName As String
MsgBox ファイルの種類 & “を指定してください”
FileName = Application.GetOpenFilename(“Microsoft Excelブック,*.*”)
If FileName <> “False” Then
Workbooks.Open FileName
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
mybook.Sheets(“work”).Range(“A” & ファイル名の行) = ファイルの種類
mybook.Sheets(“work”).Range(“B” & ファイル名の行) = FileName
Else
MsgBox (ファイルの種類 & “のファイル指定は変わりませんでした。”)
End If
End Function
Dim FileName As String
MsgBox ファイルの種類 & “を指定してください”
FileName = Application.GetOpenFilename(“Microsoft Excelブック,*.*”)
If FileName <> “False” Then
Workbooks.Open FileName
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
mybook.Sheets(“work”).Range(“A” & ファイル名の行) = ファイルの種類
mybook.Sheets(“work”).Range(“B” & ファイル名の行) = FileName
Else
MsgBox (ファイルの種類 & “のファイル指定は変わりませんでした。”)
End If
End Function
このルーチンは、ブックを指定してもらって、実際にそのファイルを開き、問題なく開ければ、workというシート(あらかじめ作成しておきます)にそのファイルが何かを表すかの文字をA列の指定した行、ファイルの場所を含んだファイル名をB列の指定した行に書きだします。
これはルーチンなので、呼び出し口を作らなければなりません。
呼び出し口の作成
呼び出し口は次のような形になります。
Sub f01_成績一覧表を開く()
Dim mybook As Workbook
Dim a As Variant
Set mybook = ActiveWorkbook
a = 読み込みファイルの指定(mybook, “成績一覧表”, 1)
End Sub
Dim mybook As Workbook
Dim a As Variant
Set mybook = ActiveWorkbook
a = 読み込みファイルの指定(mybook, “成績一覧表”, 1)
End Sub
実際の読み込み
実際のファイルの読み込みは次のルーチンを使います。
Private Function ファイルを開く(ファイルパス As String) As WorkbookDim openfilename As String
Dim openfile As WorkbookIf Dir(ファイルパス) = “” Then
MsgBox (“ファイルがありません”)
End
End If
openfilename = ファイルパス
Workbooks.Open openfilename
Set openfile = ActiveWorkbook
Set ファイルを開く = openfile
Dim openfile As WorkbookIf Dir(ファイルパス) = “” Then
MsgBox (“ファイルがありません”)
End
End If
openfilename = ファイルパス
Workbooks.Open openfilename
Set openfile = ActiveWorkbook
Set ファイルを開く = openfile
End Function
セルB1に記載されているファイルを開くためにこのルーチンを呼び出すときは、次のように指定します。
保存しているフォルダとファイル名を分離して使う必要があるかもしれませんので、ファイル名と保存場所を取り出した文字列も取得します。
Dim Openfile As Workbook
Dim 保存場所 As String
Dim ブック名 As String
Set Openfile = ファイルを開く(Range(“B1”.Value)
Set 保存場所 = Openfile.Path
Set ファイル名 = Replace(Openfile.FullName,Openfile.Path, “”)
Dim 保存場所 As String
Dim ブック名 As String
Set Openfile = ファイルを開く(Range(“B1”.Value)
Set 保存場所 = Openfile.Path
Set ファイル名 = Replace(Openfile.FullName,Openfile.Path, “”)
コメント