Option Explicit
Public Sub sample1()
'1.起点ノードの物理IFのcsvファイルをユーザーが選択して→データを配列に格納
MsgBox "起点となるノードの物理IF(csv)を選択してください"
Dim stFile As String, stData As Variant
Call fileSelection(stFile)
' Debug.Print stFile
Call getArray(stFile, stData)
' Stop '配列確認
'2.リンクするノードの物理IFのcsvファイルをユーザーが選択→データを配列に格納
MsgBox "紐づけしたいノードの物理IF(csv)を選択してください"
Dim linkFile As String, linkData As Variant
Call fileSelection(linkFile)
' Debug.Print stFile
Call getArray(linkFile, linkData)
' Stop '配列確認用
Call checkMessage(stData(2, 5), linkData(2, 5))
End Sub
'ユーザーがcsvファイル選択→ファイルを変数に格納
Function fileSelection(ByRef selectFile As String)
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Clear 'フィルターのクリア
.AllowMultiSelect = False 'ユーザーのファイル選択を1ファイルに限定
.Filters.Add Description:="csvファイル", Extensions:="*.csv" '選択ファイルの拡張子指定
If Not .Show Then End '選択されなかった場合、Sub終了
selectFile = .SelectedItems(1) '選択したファイルを変数に格納する
End With
End Function
'csvファイルからデータを配列に格納
Function getArray(ByVal selectFile As String, ByRef data As Variant)
Workbooks.Open (selectFile)
data = ActiveWorkbook.Sheets(1).Cells(1, 1).CurrentRegion
ActiveWorkbook.Close savechanges:=False
End Function
Function checkMessage(ByVal a As String, ByVal b As String)
Dim msg As String
msg = a & "起点の" & a & "-" & b & "の対応表で間違いないですか?"
Dim rc As VbMsgBoxResult
rc = MsgBox(msg, vbYesNo + vbQuestion)
If rc = vbYes Then
MsgBox "処理を続けます", vbInformation
Else
MsgBox "処理を中止します", vbCritical
End
End If
End Function