[[20080602222123]] 『エラーがでて困っています』(ぷ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エラーがでて困っています』(ぷ)
dim Fname as variant
dim x as variant
Fname=application.getopenfilename(multiselect:=yes)
    If Fname = False Then
    Exit Sub
    Else
    For Each x In Fname
        Workbooks.Open Filename:=x
    Next
    End If
End Sub

複数のファイルを開きたいのですが、
このように設定すると「型が一致しません」とのエラーがでます。

    If Fname = False Then
    Exit Sub
この部分を記述しないと上手くいくのですが、
何が原因なのか分かりません。

よろしくお願いします。


 > 何が原因なのか分かりません。

 > Fname=application.getopenfilename(multiselect:=yes) 

 > multiselect:=yes
   の yes という変数は変ですね。そこは 定数 True になおしてみたらどうですか?

    Dim Fname As Variant
    Dim x As Variant
    Fname = Application.GetOpenFilename(MultiSelect:=True)
    If Fname = False Then
        Exit Sub
    Else
     (以下省略)

       (kanabun)


kanabunさん ありがとうございます。
(MultiSelect:=True)に変更してみたのですが、
やっぱりうまくいきません。
もう少し詳しくかきますと、
何もファイルを選択せずにダイアログをキャンセルすると
If Fname = False Then でエラーにならずにダイアログを閉じることができるのですが、
逆にファイルを選択すると
「型が一致しません」と表示されてファイルを開くことができません。
If Fname = False Then の記述を削除すると開くことができるのですが。。。

よろしくお願いします。


 application.getopenfilename multiselect Exit Sub
 で全文検索してみました。

 こちらのスレで、MARBINさんが使って居られるようです。
[[20061016113628]]『多数のエクセルファイルの印刷』(kei)
 参考になさってはいかがでしょう?

 (HANA)

  > 逆にファイルを選択すると「型が一致しません」と表示されて

   なるほど、ファイルを選択すると Fname に 文字列の配列が入るから、
   文字列は False のようなBool型の値との比較はできない、ので エラーになる
   わけですね。
   こうしてみたら、どうでしょう 

    Dim Fname As Variant
    Dim x As Variant
    Fname = Application.GetOpenFilename( _
                "Excel Book,*.xls", MultiSelect:=True)
    If VarType(Fname) = vbBoolean Then
        Exit Sub
    Else
        For Each x In Fname
            Workbooks.Open Filename:=x
        Next
    End If

    (kanabun)


HANAさん、kanabunさん、ありがとうございます。

HANAさんに教えていただいたスレで無事にマクロを組むことができ

kanabunさんのおかげで何が原因だったのか理解しました。

お二人とも、丁寧に教えていただいて本当にありがとうございました。

助かりました!!!


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.