Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24134 / 76732 ←次へ | 前へ→

【57951】Re:マクロのエラー処理
回答  りん E-MAIL  - 08/9/23(火) 8:23 -

引用なし
パスワード
   non さん、おはようございます。

>開くファイルを,ダイアログボックスから選択したいのですが,
>>  Set wb = Workbooks.Open(Filename:="C:\NFL\NFL2008.xls")
>のところを,
>  Set wb = Application.GetOpenFilename("CSVファイル(*.csv), *.csv")
>とすると,うまくいきません。

GetOpenFilenameメソッドは、
 ユーザーによって選択、または入力されたファイルの名前とパス名を返します。
 入力が取り消された場合には False が返されます。
ということなので、オブジェクト変数に直接Setはできません。

(案1)前回と同じくエラースキップ
Sub test()
  Dim wb As Workbook, Ifile As Variant
  'ファイル名取得
  Ifile = Application.GetOpenFilename("CSVファイル(*.csv), *.csv")
  If TypeName(Ifile) = "Boolean" Then
    MsgBox "キャンセルしました", vbExclamation, "ファイル選択"
  Else
   'ここでセットして分岐
   On Error Resume Next 'スキップ
   Set wb = Application.Workbooks.Open(Ifile)
   On Error GoTo 0 '通常に戻す
   '結果の分岐
   If wb Is Nothing Then
     MsgBox "キャンセルしました", vbExclamation, "同じファイルを開く"
   Else
     MsgBox wb.FullName, vbInformation, "Open"
   End If
  End If
End Sub

(案2)ファイル名を取得しているのでチェック
Sub test()
  Dim wb As Workbook, Ifile As Variant, s1 As String
  '
  Ifile = Application.GetOpenFilename("CSVファイル(*.csv), *.csv")
  If TypeName(Ifile) = "Boolean" Then
    MsgBox "キャンセルしました", vbExclamation, "ファイル選択"
  Else
   '総当たりチェック
   For Each wb In Application.Workbooks
     If wb.Name = Dir(Ifile) Then Exit For
   Next
   '分岐
   If wb Is Nothing Then
     'なかったら無条件で開く
     Set wb = Application.Workbooks.Open(Ifile): s1 = "開いた"
   Else
     'あったら分岐
     If MsgBox(Ifile & "を開きますか?", vbYesNo, "既存") = vbYes Then
      wb.Saved = True: wb.Close
      Set wb = Application.Workbooks.Open(Ifile): s1 = "開いた"
     Else
      wb.Activate: s1 = "そのまま"
     End If
   End If
   '結果を表示して終わり
   MsgBox wb.FullName, vbInformation, s1
   Set wb = Nothing
  End If
End Sub

こんな感じです。

0 hits

【57934】マクロのエラー処理 non 08/9/22(月) 0:11 質問
【57936】Re:マクロのエラー処理 りん 08/9/22(月) 7:12 回答
【57943】Re:マクロのエラー処理 non 08/9/23(火) 0:12 質問
【57951】Re:マクロのエラー処理 りん 08/9/23(火) 8:23 回答
【57963】Re:マクロのエラー処理 non 08/9/23(火) 21:59 お礼
【57941】Re:マクロのエラー処理 Yuki 08/9/22(月) 17:00 発言
【57944】Re:マクロのエラー処理 non 08/9/23(火) 0:21 質問

24134 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free