こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

◆ GetOpenFilename()で複数ファイル選択ができない、I

◆ GetOpenFilename()で複数ファイル選択ができない、IsArray()でNG。。。 
 複数選択のやり方をOKWaveで見つけ便利に活用させて頂いていたのですが、
 今年になって、機能しなくなり困っています。手が出ない状況です。
 ご教示、よろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
概要:Debugでみると、IsArray()の結果がfalse(GetOpenFilename不成功) 

使用環境:
 Microsoft EXCEL 2002 (10.6856.6853)SP3
 Microsoft Visual Basic 6.0
 Microsoft Windows XP Professional version 2002 Service Pack 3

不具合の発生箇所:
取込元ファイル = Application.GetOpenFilename(FileFilter:="Excelブック(*.xls),E*.xls", _
Title:="取込元の4ファイルを選択。Ctrlキーを押しながら複数選択。", MultiSelect:=True)

If IsArray(取込元ファイル) Then ' 読む込み成功の確認、IsArray関数

<問題のマクロ>
Sub メイン()
' -------------------------------------------------------------------
' -  取込元のファイルを選択してオープン 
' -------------------------------------------------------------------
Dim 取込元ファイル, Work1, Work3 As Variant
Dim i As Integer

取込元ファイル = Application.GetOpenFilename(FileFilter:="Excelブック(*.xls),E*.xls", _
Title:="取込元の4ファイルを選択。Ctrlキーを押しながら複数選択。", MultiSelect:=True)

If IsArray(取込元ファイル) Then ' 読む込み成功の確認、IsArray関数

For i = 1 To UBound(取込元ファイル) '配列の上限UBound(データの件数 4件)
Workbooks.Open 取込元ファイル(i)   'ファイルオープン
Work1 = Dir(取込元ファイル(i))
WORK3 = WORK3 & Work1 & vbCrLf 'MSG表示用(取込んだファイル名一覧)
  MsgBox "選択したファイルは " & vbCrLf & WORK3 & " ", vbInformation
Next i
Else
MsgBox "取込元ファイルのオープンを" & vbCrLf & "中止しました", vbExclamation
End If
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

投稿日時 - 2010-03-06 07:55:05

QNo.5728746

困ってます

質問者が選んだベストアンサー

OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", MultiSelect:=True)
とします

くわしくは下記URLにて

参考URL:http://officetanaka.net/excel/vba/file/file02.htm

投稿日時 - 2010-03-06 08:29:55

補足

感謝!! 安心できました。重ねて、御礼申し上げます。
 ご回答の意味を取り違えていましたので、追加記載します。

【背景】
 『FilterをE*.xlsと記述するのは誤りで、*.xlsに要修正』とのご指摘であったことに、
 下記(1)(2)の思い込みがあり、気がつきませんでした。
  (1) E*.xlsでも普段は問題なく機能していた。
  (2) VBAのヘルプの記述にワイルドカード使用可と記載されていたので、
     E*.xls指定で、Eで始まるファイル(Exxxx.xls)を限定表示できると認識。

【現状と今後】
 *.xlsとして使用することで解決したようですので、
 E*.xlsで不具合が1度再発しましたが、
 これ以上の追跡はやめることとします。  THANK YOU.
 
ーーーーーーーー< VBAのヘルプの記述 >ーーーーーーーーーーーーーー 

> FileFilter <

 省略可能です。
 バリアント型 (Variant) の値を使用します。
 ファイルの候補を指定する文字列 (ファイル フィルタ文字列) を指定します。
 ファイル フィルタ文字列とワイルドカードのペアを、必要な数だけ指定します。
 ファイル フィルタ文字列とワイルドカードはカンマ (,) で区切り、各ペアもカンマで区切って指定します。
 各ペアは、[ファイルの種類] ボックスのリストに表示されます。

 例えば、テキストとアドインの 2 つのファイル フィルタの指定は次のようになります。
  "テキスト ファイル (*.txt),*.txt,アドイン ファイル (*.xla),*.xla"
 1 つのファイル フィルタ文字列に複数のワイルドカードを対応させるには、次のように 各ワイルドカードをセミコロン (;) で区切ります。
  "Visual Basic ファイル (*.bas;*.txt),*.bas;*.txt"
 この引数を省略すると、"すべてのファイル (*.*),*.*" を指定したことになります。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

投稿日時 - 2010-03-11 14:18:05

お礼

ヒントを頂き、ありがとうございました。お陰様で不具合が解決(解消)しました。

OpenFileName = Application.GetOpenFilename("Excelブック(*.xls),E*.xls", _
, , , True)
  と記述をパラメータ直接型にしてみたところ、OKとなりました。

  元のマクロ(MultiSelect:=True)を使用しても、なぜか、再現しなくなりました。
  シンプルな方の指定(,,,,True)で、様子を見ることにします。 

投稿日時 - 2010-03-11 00:51:37

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問