インプットボックスからファイルを開くようにしました。しかし、すでに開いているか確認する項目がうまく作動しません。どのように記述するか教えて頂けませんでしょうか。
Sub Macro1()
Dim wb As Workbook
Dim psw As Boolean
Dim fil As String
fil = InputBox("ファイル名入力")
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 Path & "C:¥" & fil
End If
End Sub
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
この回答への補足
xls88様
いつも有難うございます。
Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。
すみません何が原因かわからないのですが・・・。
No.2ベストアンサー
- 回答日時:
横からすみません。
>Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。
先ほどの質問の補足に
>しかし、教えて頂いた方法でうまくファイルを開く事ができません。バックスラッシュの表示もうまくいかず¥になってしまいます
とありましたので
このサイトでは ¥マークが /(バックスラッシュ)で表示されます。
ThisWorkbook.Path & "¥" & fil & ".xls"
が正しいです。
今は 全角で ¥ を出していますが 正しくは半角です。
それと
ThisWorkbook.Path ですので
開きたいファイルが、同じフォルダにあることが前提です。
No.3
- 回答日時:
>Workbooks.Open ThisWorkbook.Path & "\" & fil & ".xls" 'ここを修正するとエラーになってしまいます。
「エラーになる」というだけではなくエラー内容も教えてください。
解決の重要な手掛かりになります。
Workbooks.Open Path & "C:¥" & fil
修正しない場合はエラーにならないのですか?
ここでは、半角の¥がバックスラッシュになりますが気にしなくても大丈夫です。
MsgBox ThisWorkbook.Path
と
開こうとしているファイルのパスは同じですか?
MsgBox fil
filには文字列が間違いなく入っていますか?
拡張子は、.xls で間違いないですか?
No.4
- 回答日時:
加えて補足して置きます。
せっかく2重に開くのエラー処理されていますが
InputBox で間違ったファイル名を入力したときのエラー処理が必要と思います。
セルにファイル名を入れておくのであれば
予め入力規則などで ミスの防止策ができますが?
もしVBA上で 入力するのであれば
Application.Dialogs(xlDialogOpen).Show
で開くのダイアログ を表示させたり
OpenFile = Application.GetOpenFilename("Excelブック,*.xls")
で選択したほうが良いですよ。
詳しくは
http://officetanaka.net/excel/vba/tips/tips109.htm
を参考にしてください。
それと新規のファイルで ThisWorkBook.Pathを使うと空白でしかありません。
一度、開きたいファイルのあるフォルダに保存してから実行してください。
この回答への補足
hallo-2007様
いろいろ有難うございます。
今から、調べながらやっていきたいと思います。
少し、時間がかかりそうです。今から仕事なので今日はあきらめます。
本当に有難うございます。
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
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 は通りますか
shinkami様
>Exit if を何かと置き換える必要があります
この辺が今の私にはよく分からないので、勉強して修正します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでファイルが開かれているか...
-
gccを行ってもexeファイルが生...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
Access2013にてドラッグ&ドロ...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Adobeのプレミアプロの書き出し...
-
Returnに対するGoSubがありません
-
PowerShellを使って関連付けら...
-
自身のファイルのコピーを作成...
-
エクセルマクロでエラーの原因...
-
エクセル「これ以上新しいフォ...
-
freadでデータがない場合の読込...
-
cube PDFについて
-
ACCESS VBAでのインポート
-
DialogBoxのリソース読み込み
-
Request.BinaryReadでのエラー
-
VBから参照できないCのDLLを使...
-
エラー:インクルードファイル ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
FTPの送信結果を検知したい
-
NAS上のファイルの使用中が解除...
-
VBA ExecuteExcel4Macro 型が一...
-
access テキストボックスの値取得
-
EXCELのVBAでWORDが開いてある...
-
すでにファイルが開かれている...
-
EXCELVBAでONEDRIVE上への保管...
-
Excelファイルのマクロによる排...
-
OUTLOOK VBA 指定フォルダ内の...
-
RAR圧縮ファイル(分割)の順番が...
-
エクセルマクロでエラーの原因...
おすすめ情報