- ベストアンサー
VBA 「Bookがアクティブでない時にはぬける」コード
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 割り込みさせていただきます。 #2 で指摘したように、#1 の補足の内容ですが、一般的には、以下のようにして、文字比較をさせます。 Sub test2() If StrConv(ActiveWorkbook.Name,vbUpperCase) <> "BOOK1.XLS" Then Exit Sub End If End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 私は、StrComp を使っていますが、文字列比較で、そのブックの名称が、大文字・小文字などが違うことがあるので、StrConv で、大文字比較にさせたり、いくつか方法はあります。 おそらく、最初、Workbooks("Book1.xls")の部分で、戸惑ったかもしれませんね。 ただ、通常は、あまり以下のようなコードを書かずに、Book1.xls をループで探して、Active にするという書き方にします。ちょっと考えてみてください。 Sub TestMacro1() If StrComp(ActiveWorkbook.Name, "Book1.xls", vbTextCompare) = 0 Then MsgBox "Bingo!", 64 Else MsgBox "Wrong!", 48 'Exit Sub End If End Sub
お礼
ご回答ありがとうございます。 ループ処理については、よく理解していないので勉強します。
- mitarashi
- ベストアンサー率59% (574/965)
アクティブなブック名は下記で取得できますので、これで分岐処理すればいかがですか。 Sub test() MsgBox ActiveWorkbook.Name End Sub
お礼
ご回答ありがとうございます。 アドバイスを参考に下記コードをつくりました。 問題点等をご指摘いただければ幸いです。 Sub test1() If ActiveWorkbook.Name = "Book1.xls" Then Exit Sub End If End Sub
補足
すみません。 If ActiveWorkbook.Name = "Book1.xls" Then ↓ <>ですよね。
関連するQ&A
- ブックが開いているかどうか調べたい
こんばんは。 エクセル2003vbaの質問です。 Book2.xlsから If ”Book1.xlsが開いている” Then MsgBox "Book1.xlsは開いています" End If と言う動作を行ないたいのですが どういうコードを書けばいいのでしょうか? できれば Book1.xls、Book2.xls以外のファイルも開いていても動作するようにしたいです。 ご教授よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Book間の移動
Excel VBA でBook2にシートを移動した後、元のBook1に自動で戻る VBAを教えたください。 Sub シートを移動する() Windows("Book1.xls").Activate Sheets(エリカ).Select Sheets(エリカ).Move After:=Workbooks("Book2").Sheets(1) このあとBook1に戻りたい! End Sub
- ベストアンサー
- Visual Basic
- エクセルVBAでBOOKを開く際の処理
エクセルVBAでBOOKを開く際の処理 エクセル2000です。 VBAで特定のフォルダー内のBOOKを開き、1枚目のシートSheets(1)のデータを読み込んで別BOOK(マクロを記載したBOOK)にコピペしたら保存せず閉じるコードを下記のように書きました。(かなり簡略化しましたが) これで作動するのですが、万一、そのフォルダー内のBOOKが開いていても1枚目のシートのデータを読み込み後、閉じられてしまいます。 BOOKが開いていれば、その開いていたBOOKは閉じず、先に進むようにするにはどのように直せばいいでしょうか? Sub TEST01() Dim mb As Workbook, wb As Workbook Dim myfd As String, fnme As String, ans As Byte, i As Long ans = MsgBox("集計用フォルダーには回収したアンケートファイルとこの集計用ファイルしかないですね?", vbYesNo + vbQuestion, "( ̄∇ ̄) ? ") If ans = vbNo Then MsgBox "それじゃだめです。", vbCritical, "Σ( ̄ロ ̄lll)" Exit Sub End If Set mb = ThisWorkbook myfd = mb.Path fnme = Dir(myfd & "\*.xls") Do Until fnme = Empty If fnme <> mb.Name Then Set wb = Workbooks.Open(myfd & "\" & fnme) i = i + 1 mb.Sheets(1).Cells(i, 1) = wb.Sheets(1).Range("S10") wb.Close (False) '保存せずに閉じる End If fnme = Dir Loop Set mb = Nothing Set wb = Nothing MsgBox i End Sub
- ベストアンサー
- その他MS Office製品
- Excel2007VBA ブックのアクティブ化
●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。
- ベストアンサー
- Visual Basic
- excel vba
テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2 3 4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7
- ベストアンサー
- オフィス系ソフト
- VBAで質問です
下記のVBAを作成しました。 ダイアログからtxtファイルをエクセルで開きます。 ここで作成されたシートを別のブックの「ログ」というシートに貼り付けたいのです。 宜しくお願いします。 ・txtファイルは日付が入る為、毎回違う名前になります。 ・ Private Sub CommandButton4_Click() Dim fname As String fname = Application.GetOpenFilename( _ filefilter:="Excelファイル,*.xls,すべてのファイル,*.*") If fname = "false" Then Exit Sub Workbooks.OpenText Filename:=fname
- 締切済み
- Visual Basic
- Excel VBA別ブックのシートをコピーするには
Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls) VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが 別フォルダにもあります Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。
- ベストアンサー
- Visual Basic
- VBAでファイルを開いてないときに開くコード
いつもお世話になります。 VBA(Excel2007)の初心者です。 目的のファイルが開いていない時は開き、 既に開いている時は何もしない。 という処理をしたいと思い以下のコードを 書きました。 Dim wb As Workbook Dim myfilename As String For Each wb In Workbooks If wb.Name = "予定表.xls" Then Exit For Else myfilename = "\\___\__\予定表.xls" Workbooks.Open Filename:=myfilename End If Next wb 実行したら何度もファイルを開こうとしてしまいます。 どこに問題があるのでしょうか? ちなみにこれは"予定表.xls"のセルを参照したくて ある処理の前に実行するつもりなのですが、 別のブックのセルを参照するときはやはり そのブックを開かなくてはならないのでしょうか? 何卒よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- もしも新規Excelファイルを開いてる場合は閉じる
Excel2003です・ ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。 Option Explicit Dim ws As Workbook, flag As Boolean Private Sub Workbook_Open() For Each ws In Workbooks If ws.Name = "Book1" Then flag = True Next ws If flag = True Then Workbooks("Book1.xls").Close Else End IF For Each ws In Workbooks If ws.Name = "テスト用.xls" Then flag = True Next ws If flag = True Then Workbooks("テスト用.xls").Close Else End IF End Sub このコードだとBook1を開いているのに、Trueで拾ってくれません。 ws.Name = "Book1.xls"にしても同じです。 どこかおかしい部分があるのでしょうか?
- ベストアンサー
- その他MS Office製品
- Excelマクロ(VBA)のブックとシートのコピーについて
初めまして、宜しければVBAのブックやシートのコピー(操作)についてご教授お願いいたします。 Windows XP x64 OFFICE2003 を使用しております。 D:\Book1.elxのsheet1のシートをD:\test\Book2.elxのsheet1のシートに コピーする方法が恥ずかしながら理解できておりません。 以下が行いたい事です。 Sub ボタン1_Click() 'text1ブックを開く 'Workbooks.Open "D:\micro\test1.xls" 'ブック間のシートをコピー Workbooks("test2.xls").Worksheets("シート2").Copy _ After:=Workbooks("test1.xls").Worksheets("Sheet2") End Sub VBのファイル操作とは違い、どのように行えば良いのか検索しても同じような部分サンプルのようなものしか無く、理解できておりません。 参考でも結構ですのでご教授いただけませんでしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
お礼
度々のご回答ありがとうございます。 ご提示いただいたコードでうまく反応しました。