• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 複数のBOOKの連続操作)

VBA 複数のBOOKの連続操作

jcctairaの回答

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

tokyo2199さん こんにちは。 「更新して閉じる」とSub「a1」が同じとして回答します。 原因はBOOK2で自分のブックを閉じてしまうので、End Subまでを実行できず、BOOK1に制御が 戻らない(マクロが終了)ことです。 対策としては「BOOK2~4」はブックをCloseせず「Book1」でCloseするようにすれば良いです。 例) 「Book1」  Workbooks.Open Filename:="D:\TestBook\test.xlsm"  WBN = ActiveWorkbook.Name  Application.Run "'" & WBN & "'!Module3.更新して閉じる"  Workbooks(WBN).Close 「Book2」  If ThisWorkbook.Saved = False Then ThisWorkbook.Save  End Sub   確認してみてください。

tokyo2199
質問者

補足

ありがとうございます。 確認してみましたところ、 Application.Run "'" & WBN & "'!Module3.更新して閉じる" を実行すると、次のブックへの処理が実行されないようです。 この記述を省くと、BOOK1からブック2を開き閉じる。→ブック3を開き閉じる。と処理を続行できました。 変更点はご指摘のように 「Book1」  Workbooks.Open Filename:="D:\TestBook\test.xlsm"  WBN = ActiveWorkbook.Name  Application.DisplayAlerts = False  Application.Run "'" & WBN & "'!Module3.更新して閉じる"  Workbooks(WBN).Close 「Book2」  If ThisWorkbook.Saved = False Then ThisWorkbook.Save  End Sub のようにしています。 お手数おかけしますが、宜しくお願いいたします。

関連するQ&A

  • VBA 確認メッセージを非表示で保存

    VBA初心者です。 素人質問ですが、どうぞよろしくお願いいたします。 BOOK1のSheet1にwebクエリが設定されています。 Sheet1にはコマンドボタンが二つあり、 CommandButtun1にはクエリを更新するマクロ。 CommandButtun2にはクエリを更新してブックを閉じるマクロがあります。 コマンドボタン2をクリックすると、Webクエリを更新して、 ブックをメッセージなしで上書き保存したいのですが、 下記のマクロではうまく動作しません。 クエリ更新のあとの、ブック保存、クローズするマクロが動作しない状況です。 CommandButtun1のWSH.Popupが原因のようですが、 何か回避方法がありましたら、ご教授いただけませんか? CommandButtun1には下記のマクロ Private Sub CommandButton1_Click() '独自のエラーメッセージを表示する(On Errorステートメント) On Error GoTo Err_Msg 'webクエリ更新 Range("H6").Select Selection.QueryTable.Refresh BackgroundQuery:=False 中略 Exit Sub 'エラーメッセージの指定 Err_Msg: Dim WSH As Object Set WSH = CreateObject("Wscript.Shell") WSH.Popup "完了しました。", 3, "自動的に閉じます", vbYesNo + vbInformation Set WSH = Nothing End End Sub ------------------------------------------------------------------------- CommandButtun2には下記のマクロ Private Sub CommandButton2_Click() CommandButton1.Value = True If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If ActiveWorkbook.Close End Sub

  • マクロ 別のブックを指定。

    エクセルマクロで特定の文字を含んだファイルを指定したいのですが、 ファイル名がその都度、book1,book2,book3,のように変わります。 Range("a1").Select Windows("Book10").Activate Range("a10").Select End Sub このような記述だと、book10にしか指定できず、bookを含むファイルを指定したいのですが どのようにしたらよろしいのでしょうか。 開いているbookを含むファイルは1ファイルのみです。                宜しくお願いいたします。

  • エクセルVBAで別ブックの条件検索

    VBA初心者です。エクセルは2007です。 『データのあるブック(Book1,Book2,Book3)』と、『検索条件シート+出力先シートをもつブック』の4つのブックがあります。 検索条件シートで、L22でブック、P22でシートを指定してN22に入力した数に対応するデータをVlookupで出力先シートのセルに抽出されるようにしたいのですが、※の部分で「エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」とでて実行できません。 データのあるブックは同じ形式でシートには表があります。 数 a b c d 1 A B C D 2 ○ × △ ■ 3 Z Y X W     ・     ・ 検索条件がL22=3,P22=2,N22=2だとすると、Book3の2枚目のシートを検索し、 出力先シートのD1=○,J6=×,L23=△,J69=■となるようにしたいです。 本やインターネットで調べましたがわかりませんでした。 解決方法を教えていただきたいです。お願いします。 Sub 検索() Dim a, b, c, d As Range Dim 番号, ブック, シート As Integer With Workbooks("検索.xlsm").Sheets("検索条件") 数 = .Range("N22").Value ブック = .Range("L22").Value シート = .Range("P22").Value End With Dim wb As Workbook Dim sh As Worksheet Dim set範囲 As Variant With Workbooks("検索条件.xlsm").Sheets("出力先") Set a = .Range("D1") Set b = .Range("J6") Set c = .Range("L23") Set d = .Range("J69") End With Select Case ブック Case 1 Set wb = Workbooks("Book1.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case 2 Set wb = Workbooks("Book2.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case 3 Set wb = Workbooks("Book3.xlsm") wb.Activate Select Case シート Case 1 Set sh = Worksheets(1) Case 2 Set sh = Worksheets(2) Case Else MsgBox "・・・・・", vbExclamation, "nothing" End Select Case Else MsgBox "nothing", vbExclamation, "nothing" End Select ※Set set範囲 = wb.sh.Range("A4:E42")  ←エラー438 a = Application.WorksheetFunction.VLookup(数, set範囲, 2, False) b = Application.WorksheetFunction.VLookup(数, set範囲, 3, False) c = Application.WorksheetFunction.VLookup(数, set範囲, 4, False) d = Application.WorksheetFunction.VLookup(数, set範囲, 5, False) End Sub

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • テキストボックスの値を他のブックのセルで表示したい

    EXCELsolo365 Windows10です (1)A.xism を開くとユーザーフォームが開く (2)そのユーザーフォームにテキストボックス設置 (3)テキストボックスに2020/04/20と入力 (4)セル”A1”にも2020/04/20が表示される これを、他ブックB.xlsmのセル ”U2”に直接リンクして 表示したいです。よろしくお願いします。 マクロの記録でやると、「worksheetクラスのPasteメソッドが 失敗しました。」のエラーが出てしまします。 Sub test() Workbooks.Open Filename:=ThisWorkbook.Path & "A.xlsm" Windows("A.xlsm").Activate Range("A1").Select Selection.Copy Windows("B.xlsm").Activate Sheets("CC").Select Range("D1").Select ActiveSheet.Paste Link:=True End Sub

  • このVBAの処理を速くしたいのですが…

    お世話になります data.xlsmとBook1-Book25.xlsxの 合計26ファイルを開いた状態で 以下のマクロを実行しています 私が使っているマシンでは 10分くらいかかるのですが この時間を短くすることは 出来ますでしょうか? Sub copy() Application.ScreenUpdating = False Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1:D1048576").copy Workbooks("data.xlsm").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues Range("G1:K1048576").Clear Range("A1:E1048576").copy Range("G1:K1048576").PasteSpecial Paste:=xlPasteValues Range("I2").ClearContents Range("I1048576").End(xlUp).ClearContents Range("A2:D1048576").Clear Range("O1:Q1").copy Range("S1048576").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues あとは上記をBook2,Book3と変えてBook25まで同じ式を記入 End Sub

  • VBAでVBAを削除?

    作業中のブックから一枚のシートを以下のSub 別ファイル保存()プロシージャで別のブックとして保存します。それはうまくいったのですが、この元になるシートには Private Sub Worksheet_SelectionChange(ByVal Target As Range) '途中略 End Sub と Private Sub Worksheet_Deactivate() '途中略 End Sub の二つのVBAが記述してあり、これまで一緒に別のブックに入ってしまいます。 これを防ぐにはどのようにすればよいのでしょうか? Sub 別ファイル保存() mypath = ThisWorkbook.Path fn = Sheets("Declarations").Range("H15").Value & Format(Date, "yymmdd") ffn = mypath & "\" & fn & ".xls" Sheets("Declarations").Copy ActiveWorkbook.SaveAs Filename:=ffn ActiveWorkbook.Close End Sub

  • VBA作製ができません。どなたか教えてください。

    前回同じタイトルで質問させていただいた物を自分なりに本で調べて 作ってみました。しかし壁にぶつかりました。 Cells(Rows.Count, 7).End(xlUp).Offset(rowoffset:=1).Select この式は7列目の一番下の空欄のセルを選択できる式のようですが、 指定した範囲のなかで7列目の一番下のセルを選択したいのですがどうすればいいでしょうか? つまり列だけじゃなく行も選択したいです。 教えてください。 こんな式を作りました。  もし式を簡単に効率よくできる方法があればアドバイス下さい。 If Range("G4").Value = SpecialCells Then Range("H4").Select Else Range("G4").Select Range("G4").Copy Windows("Book1.xlsx").Activate Range("G18:G26") = Selection.Areas.Count Cells(Rows.Count, 7).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("D4").Select Range("D4").Copy Windows("Book1.xlsx").Activate Cells(Rows.Count, 4).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("E4").Select Range("E4").Copy Windows("Book1.xlsx").Activate Cells(Rows.Count, 5).End(xlUp).Offset(rowoffset:=1).Select ActiveSheet.Paste Application.CutCopyMode = False Windows("Book2.xlsm").Activate Range("H4").Select End If

  • VBA(エクセル)で教えて下さい。開いていないBOOKの貼り付け

    VBA(エクセル)で教えて下さい。開いていないBOOKのシートを開いているBOOKのシートに貼り付けで、開いているBOOKから開いていないBOOK名を指定したいのですが、 現在開いているエクセルです。 SHEETS(Type)のRANGE(A1)に閉じているBOOK名を入力します。 SHEETS(In)に閉じているBOOKのSHEETSを貼り付けたいのですが、 Ex = Sheets("Type").Range("A1")  が無いと閉じているEx.xlsを貼り付けます。 このExと言うBOOK以外も多々コピーしたいのですが、どのように書けば良いか分からず、 是非、教えて下さい。 Sub a1() Dim wsSrc As Worksheet, WS As Worksheet Dim PasteR As Range Dim x As Long Sheets("In").Select Cells.Select Selection.Delete Shift:=xlUp Range("A1").Select 'If Worksheets(1).Name = "STEP1" Then ' Worksheets(1).Activate ' Cells.ClearContents ' Else 'Worksheets.Add(Before:=Worksheets(1)).Name = "一覧" 'End If   Ex = Sheets("Type").Range("A1")   Set wsSrc = ActiveSheet Workbooks.Open "C:\WINDOWS\デスクトップ\test\Ex.xls" For Each WS In Worksheets x = WS.Range("A1").CurrentRegion.Rows.Count If WS.Index = 1 Then Set PasteR = wsSrc.Range("A1") Else Set PasteR = wsSrc.Range("A65536").End(xlUp).Offset(1) End If WS.Range(WS.Cells(1, 1), WS.Cells(x, 44)).Copy PasteR Set PasteR = Nothing Next ActiveWorkbook.Close False Set wsSrc = Nothing End Sub

  • VBA ファイルオープン

    EXCEL2007使用。 いつもお世話になっております。 素人ですが、宜しくお願いいたします。 Sheet上にファイルパスがあり、 それを変数にマクロでBOOKをオープンしたいのですが、、 下記のマクロでは実行時エラー'1004 「D:\TestBook\test.xlsmが見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください」 と表示されます。 Sheet2に下記   A  B      C   1         ファイルパス 2        -------------------- 3        D:\TestBook\test.xlsm 4        D:\TestBook\test2.xlsm 5        D:\TestBook\test3.xlsm ----------------------------------------------- Private Sub CommandButton8_Click() Dim MDate As String Dim i As Integer, Cnt As Integer '項目件数をカウント Cnt = Worksheets("sheet2").Cells(500, "C").End(xlUp).Row - 2 For i = 1 To Cnt DtName = Worksheets("sheet2").Cells(i + 2, "C") MDate = DtName Workbooks.Open Filename:=MDate AWBN = ActiveWorkbook.Name Application.DisplayAlerts = False 'メッセージを非表示にする Workbooks(AWBN).Close Application.DisplayAlerts = True Next i End Sub ------------------------------------------------------------------------- マクロ記録からコピーしたファイルパスなら正常に開けるのにですが・・・    マクロ記録のパス D:\TestBook\test.xlsm ○ sheet2のセルCにある D:\TestBook\test.xlsm × パス名に間違いはないと思います。また保存場所も間違いありません。 何かアドバイスいただける方、宜しくお願いいたします。