0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

忘却録 Excelでブックを開かずに高速で値を取得する

Posted at

Excel4Macroを使用してブックを開かずに中身を取得します。
開いて確認する場合より最大で1桁程度早くデータを取得できますが、複数のセルを確認する場合は素直に開いてください。

以下のモジュールをどこかしらに置いてください。

Public Function GetInBookValue(filePath$, sheetName$, r1C1Str$)

    Dim reverseName$: reverseName = StrReverse(filePath)
    Dim fileNameLenth&: fileNameLenth = InStr(reverseName, "\") - 1
    Dim folderPath$: folderPath = Left(filePath, Len(filePath) - fileNameLenth)
    Dim fileName$: fileName = StrReverse(Left(reverseName, fileNameLenth))
    
    Dim arg$: arg = "'" & folderPath & "[" & fileName & "]" & sheetName & "'!" & r1C1Str
    
    On Error Resume Next
            '関数失敗時はemptyが返されます。
            GetInBookValue = ExecuteExcel4Macro(arg)
    On Error GoTo 0

End Function

使用例

Sub sample()
    debug.print GetInBookValue("C:\hoge.xlsx", "Sheet1", "R1C1")
End Sub

セルの指定はR1C1方式でないと対応していません(たぶん)

当方は工場でのデータ管理をしているのですが、特定フォーマットで所定の場所に保管されているファイルを条件分岐で処理する場合などにまあまあ便利に使えてます。

そういう場合過去に書いたこういう所定のフォルダ以下のファイル(サブフォルダ有/無)リストを返す関数を作っておくと便利です。
https://qiita.com/es2/items/eeb3a02891ff50b6dabc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?