TestUser2021
@TestUser2021

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBA GetOpenFileNameAへ設定する構造体サイズについて

解決したいこと

Access VBAにて、32bit⇒64bit移行作業を行っております。

GetOpenFileNameAを用いてファイルを読み込む処理において、
lStructSize (構造体サイズ)に設定する情報がよくわかりません。

色々なサイトの情報から、実装の方法はわかったのですが、
なぜ64bit版でLenBを使用し、32bit版でLen関数を使用するのかがわかりません。
理解したうえで実装したいので、
もしご存じの方がいらっしゃいましたら、教えていただけると嬉しいです。

該当するソースコード

#If VBA7 Then
    openFile.nMaxFile = LenB(openFile.lpstrFile) - 1
    openFile.lStructSize = LenB(openFile)
#Else
    openFile.nMaxFile = Len(openFile.lpstrFile) - 1
    openFile.lStructSize = Len(openFile)
#End If

自分で試したこと

色々なサイトを調べてみたが、実装の方法しか情報がなく、
なぜそのような実装をするのかがわからなかった

0

1Answer

32bitの頃は偶然Len関数で型のサイズを決定できていたが、
64bitでは頻繁に失敗する。そのためLenBを使う必要が出てきた。

3Like

Comments

  1. @TestUser2021

    Questioner

    回答、ありがとうございました❗️

Your answer might help someone💌