• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:インプットボックスからファイルを開くようにしました。しかし、すでに開い)

インプットボックスからファイルを開く方法についての質問

このQ&Aのポイント
  • インプットボックスからファイルを開く際、すでに開いているか確認する項目が正常に作動しないため、どのように記述したらよいか教えてください。
  • ファイルを開く際に、インプットボックスを使用した方法で問題が発生しています。すでに開かれているか確認する部分のコードがうまく動作していないようです。修正方法を教えてください。
  • ファイルを開く際に、インプットボックスを使用していますが、既に開かれているか確認するコードが正常に動作しません。どのように修正すればよいでしょうか。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

横からすみません。 >Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。 先ほどの質問の補足に >しかし、教えて頂いた方法でうまくファイルを開く事ができません。バックスラッシュの表示もうまくいかず¥になってしまいます とありましたので このサイトでは ¥マークが /(バックスラッシュ)で表示されます。 ThisWorkbook.Path & "¥" & fil & ".xls" が正しいです。 今は 全角で ¥ を出していますが 正しくは半角です。 それと ThisWorkbook.Path ですので 開きたいファイルが、同じフォルダにあることが前提です。

その他の回答 (5)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.6

For Each wb In Workbooks ’すでに開いているか確認。二重に開くのを防止 If wb.Name = "fil.xls" Then ’ここの部分がうまく作動してくれません。 psw = True Exit For End If Next wb これではForループの出口は全て[Next wb]ですね Exit if を何かと置き換える必要があります Exit sub は通りますか

konekos
質問者

お礼

shinkami様  >Exit if を何かと置き換える必要があります この辺が今の私にはよく分からないので、勉強して修正します。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

私が回答を書いている間に、既に同じ指摘が出てしまいましたが、 ただ、以下のように、InputBox を使うのは、あまり関心しません。 ConboBox やListBox に設定していないのでしたら、 Application.GetOpenFilename を使ったほうがよいです。 パスを直すなら、宣言部分の直下の「パス」というコメントの所で修正してください。 '// Sub Test1()  Dim pSp As String 'パスセパレータ  Dim fil As Variant  Dim myPath As String  myPath = ThisWorkbook.Path 'パス    Const sEXT As String = ".xls"  pSp = Application.PathSeparator  fil = Application.InputBox("ファイル名入力", "ファイル名入力", Type:=2)  If VarType(fil) = vbBoolean Or fil = "" Then Exit Sub  If InStr(fil, pSp) > 0 Then fil = Mid(fil, InStr(fil, pSp) + 1)  If InStr(fil, sEXT) = 0 Then fil = fil & sEXT  On Error GoTo ErrHandler  Workbooks(fil).Activate  '..マクロ実行    Exit Sub ErrHandler:  If Err.Number <> 9 Then MsgBox Err.Description: Exit Sub  If Dir(ThisWorkbook.Path & pSp & fil) <> "" Then   Workbooks.Open myPath & pSp & fil   Resume  Else   MsgBox "ファイルが見つかりません!", vbExclamation   Exit Sub  End If End Sub

konekos
質問者

お礼

Wendy02様 有難うございます。いろいろ教えて頂き有難うございます。 少し検討していきます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

加えて補足して置きます。 せっかく2重に開くのエラー処理されていますが InputBox で間違ったファイル名を入力したときのエラー処理が必要と思います。 セルにファイル名を入れておくのであれば 予め入力規則などで ミスの防止策ができますが? もしVBA上で 入力するのであれば Application.Dialogs(xlDialogOpen).Show で開くのダイアログ を表示させたり OpenFile = Application.GetOpenFilename("Excelブック,*.xls") で選択したほうが良いですよ。 詳しくは http://officetanaka.net/excel/vba/tips/tips109.htm を参考にしてください。 それと新規のファイルで ThisWorkBook.Pathを使うと空白でしかありません。 一度、開きたいファイルのあるフォルダに保存してから実行してください。

konekos
質問者

お礼

hallo-2007様 有難うございます。なんとか解決できそうです。

konekos
質問者

補足

hallo-2007様 いろいろ有難うございます。 今から、調べながらやっていきたいと思います。 少し、時間がかかりそうです。今から仕事なので今日はあきらめます。 本当に有難うございます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。 「エラーになる」というだけではなくエラー内容も教えてください。 解決の重要な手掛かりになります。 Workbooks.Open Path & "C:¥" & fil 修正しない場合はエラーにならないのですか? ここでは、半角の¥がバックスラッシュになりますが気にしなくても大丈夫です。 MsgBox ThisWorkbook.Path と 開こうとしているファイルのパスは同じですか? MsgBox fil filには文字列が間違いなく入っていますか? 拡張子は、.xls で間違いないですか?

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

""で囲んでいるので fil.xlsという文字列(ファイル名)になっています。 For Each wb In Workbooks If wb.Name = fil & ".xls" Then psw = True Exit For End If Next wb If psw = False Then Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここも直してみました End If

konekos
質問者

補足

xls88様 いつも有難うございます。 Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。 すみません何が原因かわからないのですが・・・。

関連するQ&A