>>410
>Workbooks.Open.Filename:=Application.GetOpenFilename
>ってできないことが意味がわ「か」らない

Workbooks.Open Filename:=Application.GetOpenFilename

なら動くんだが、それではダメ?(open と filename の間は半角スペース)

何故かと言えば言語の仕様として
引数はピリオドで繋ぐものではないからとしか言いようがない
(workbooks はオブジェクト、open はメソッド、filename:=~ はその引数)

>i = Application.GetOpenFilename
>i.worksheet「s」()ってできない意味がわからない

変数i が workbook型だとして、Application.GetOpenFilename の戻り値はworkbook型ではない。
戻り値はvariant型なんだけど、キャンセル時に false になるだけで、ファイルが選択されていれば文字列が返される
複数ファイルが選択されてても文字列が配列で帰るだけ
それに、i がworkbook型変数なので set を付けないとダメ
i が variant型変数 なら文字列か false が帰るだけでヤッパリ workbook としての挙動はしない

i.worksheet「s」() っていうのも、worksheetオブジェクトは
既に開いているブックのシートしか指定出来ないから、i がブックとしてオープンしてなきゃ当然ダメ

>i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
>i.worksheets()
>これならできる意味がわからない

set i = Workbooks.Open(filename:= ApplicationGetOpenFilename)
じゃないと動かないよ
理由は前述のとおり