![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こちらでお世話になった者です。その節はありがとうございました。
http://okwave.jp/qa3972230.html
他のブックが開いているとエラーになるので、フォームのブックが開いていたら、
マクロの最初に閉じてしまいたいと思います。
dbase.xls
formフォルダ
001.xls
002.xls
003.xls
のようなフォルダ構造になっていて、001~003.xlsは入力フォームです。
dbase.xlsを開いて、マクロを貼り付けたボタンをクリックすると、すべてのフォームの
データがdbase.xlsに取り込まれます。
↓のような感じで、最初にメッセージが表示されるようにしたのですが、
自分以外の、formフォルダにあるブックが開いていたらそれをすべて閉じる
方法を教えていただけますか。
Sub data_torikomi()
MsgBox ("開いている他のエクセルブックをすべて閉じてください")
Dim Fn As String
Dim myPath As String
Dim dbBkSh As Worksheet
Dim i As Long
Set dbBkSh = Workbooks("dbase.xls").Worksheets("一覧表")
myPath = ThisWorkbook.Path & "\"
Fn = Dir(myPath & "form\*.xls")
i = 1
……
No.2ベストアンサー
- 回答日時:
こんばんは。
ちょっと考えてみました。
Sub data_torikomi()
Dim wb As Workbook
Dim Fn As String
Dim myPath As String
Dim dbBkSh As Worksheet
Dim i As Long
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name And _
InStr(1, wb.FullName, "form\", 1) > 0 Then 'formを検索
wb.Close False '閉じる
End If
Next wb
myPath = ThisWorkbook.Path & "\"
Set dbBkSh = Workbooks("dbase.xls").Worksheets("一覧表")
Fn = Dir(myPath & "form\*.xls")
i = 1
'・
'・
'・
End Sub
なんとなく、良く分からないのは、ThisWorkbook の存在は、とういう立場にあるのだろうかって思います。このままだと、アドインスタイルです。ただ、アドインは、Workbooks には掛からないです。
ところで、おまけですが、開いている他のExcelブックをすべて閉じるのは、このようにします。メッセージは、しばらく開いていますが、自動的に閉じます。つまり、このブックだけにしますが、PEROSNAL.XLS は、残します。
'開いているブックを、本体だけ残して閉じてしまうマクロ
Dim ret As Integer
ret = CreateObject("WScript.Shell").Popup("開いている他のエクセルブックをすべて閉じます", 3, "CloseMessage", 1)
If ret = 2 Then Exit Sub
For Each wb In Workbooks
If (Not StrConv(wb.Name, vbUpperCase) Like "PERSONAL.XLS") _
And (wb.Name <> ThisWorkbook.Name) _
And (wb.Name Like "Book#") Then
wb.Close False
End If
Next wb
いろいろと教えていただきまして、ありがとうございます。
上に書いていただいたコードできれいに目的を達成することができました。
私自身アドインがなんなのかよくわからないのですが、ThisWorkbookは、dbase.xlsです。
上書き保存したいファイルは、dbase.xlsのルートの中にあるformフォルダにあります。
ですからWorkbooksに掛からなくても問題ないということでしょうか。
どうもありがとうございましたm(_ _)m。
No.3
- 回答日時:
こんばんは。
>私自身アドインがなんなのかよくわからないのですが、ThisWorkbookは、dbase.xlsです。
まあ、アドインにすることはないですけれども、dbase.xls と違うブックから操作するのかと思いました。
そうすると、
Set dbBkSh = Workbooks("dbase.xls").Worksheets("一覧表")
どちらでも同じことですが、ここの部分は、
Set dbBkSh = ThisWorkbook.Worksheets("一覧表")
で済みますね。
ご回答ありがとうございます!
そうすると、ファイル名が変わってもこのマクロを動かすことができるようになり、大変便利になりました!
ありがとうございました。
No.1
- 回答日時:
こんなところでどうでしょう。
参考URLのコードを参考にさせていただきました。
フォルダー名は目的のものに変更してください。
また、マクロは dbase.xls 内に記述してください。
Sub test()
Dim WBK As Workbook
Dim strOwnBook As String
strOwnBook = ThisWorkbook.Name
For Each WBK In Workbooks
If WBK.Name <> strOwnBook Then
If WBK.Path = "C:\Documents and Settings\?????\My Documents" Then
Call WBK.Close(savechanges:=False)
End If
End If
Next WBK
End Sub
参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
コメントありがとうございます。
参考になりました。
今回の場合、フォームを配布してデータベースを回収するという使い方になりますので、あまりパスにこだわらない方が使い勝手が良さそうに感じました。
どうもありがとうございましたm(_ _)m
またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
【ExcelVBA】指定の書式で、マ...
-
すでに開いているブックのマク...
-
フォルダ内の全ブックのシート...
-
VB2010でExcelの行をコピーして...
-
エクセルVBA Workbook変数に変...
-
ExcelVBAで今開いているユーザ...
-
excelマクロ、任意セルの値で名...
-
excelでハイパーリンク 別ブッ...
-
別ブックからのデータ取り込み
-
VBA、Excelのworkbook.open に...
-
Excel マクロでファイル名を変...
-
Excelの一括印刷で通し番号をつ...
-
EXCELマクロでxlsとxlsxを開く方法
-
同じ名前で拡張子が違うファイル
-
フォルダ内の全てのBookに同じ...
-
VBA セル入力された日付データ...
-
EXCEL VBAアドイン:シートの右...
-
【Excel VBA】ブックを複数開い...
-
複数のデータ系列の線の太さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
【Excel VBA】ブックを複数開い...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全ブックのシート...
-
EXCELマクロでxlsとxlsxを開く方法
-
他のBookのユーザー定義関数を使う
-
VBA、Excelのworkbook.open に...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
personal.xlsの削除方法
-
[Excel VBA] フォルダ内の複数...
-
excelマクロ、任意セルの値で名...
-
excelでハイパーリンク 別ブッ...
-
VBA セル入力された日付データ...
-
Excel マクロでファイル名を変...
-
EXCEL VBA起動時の処理
-
エクセルVBAでブックを開くと処...
おすすめ情報