【VBA】ブックに対する処理

Excel,VBA

VBAでブックに対する処理です。

記載内容 ①ブックのオープン
②ブックの読み取り専用オープンとクローズ
③ファイルを開かない値の参照方法

①ブックのオープン

同じフォルダにある book1.xlsx を開く処理です。

以下の仕様です。

  1. 開く前に①②のチェックをする
    ①ファイルが存在するか
    ②すでに開いていないか
  2. 開いたブックをアクティブにしない
Sub BookOpen()

    Dim filePath As String
    Dim fileName As String
    Dim fullPath As String

    filePath = ThisWorkbook.Path
    fileName = "book1.xlsx"
    fullPath = filePath & "\" & fileName

    If Dir(fullPath) <> "" Then
        For Each wb In Workbooks
            If wb.Name = fileName Then
                MsgBox ("すでに開いています")
                Exit Sub
            End If
        Next wb

        Application.ScreenUpdating = False
        Workbooks.Open (fullPath)
        ThisWorkbook.Activate
        Application.ScreenUpdating = True

    Else
        MsgBox ("ファイルが存在しません")
    End If

End Sub

②ブックの読み取り専用オープンとクローズ

同じディレクトリにあるファイル 参照先.xlsx を読み取り専用で開いてから閉じる処理です。

Sub ReadOnlyOpen()

    Dim filePath As String
    Dim fileName As String
    Dim fullPath As String
    Dim workBook As workBook

    filePath = ThisWorkbook.Path
    fileName = "参照先.xlsx"
    fullPath = filePath & "\" & fileName

    Application.ScreenUpdating = False

    Workbooks.Open (fullPath), ReadOnly:=True, UpdateLinks:=0
    Set workBook = Workbooks.Open(fullPath)

    ThisWorkbook.Activate
    workBook.Close

    Application.ScreenUpdating = True

End Sub

③ファイルを開かずに値を参照する

同じディレクトリにある ファイル 参照先.xlsx の値を参照します。
参照先の指定の仕方は ExecuteExcel4Macro("'ファイルパス[ファイル名]シート名'!セル番地") です。

Sub GetValue()

    Dim filePath As String
    Dim fileName As String
    Dim sheetName As String
    Dim targetPath As String

    filePath = ThisWorkbook.Path
    fileName = "参照先.xlsx"
    sheetName = "Sheet1"
    targetPath = "'" & filePath & "\[" & fileName & "]" & sheetName & "'!"

    MsgBox ExecuteExcel4Macro(targetPath & "R1C1")
    Cells(1, 1) = ExecuteExcel4Macro(targetPath & "R1C1")

End Sub

Excel,VBA

Posted by junichi