• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロ 別ブックをアクティブにする方法)

エクセルのマクロで別ブックをアクティブにする方法

kamicha1の回答

  • ベストアンサー
  • kamicha1
  • ベストアンサー率47% (44/92)
回答No.1

ファイルは、3つとも開いているとします。 Windows(bbWsのブック名).Activate などとします。 マクロの自動記録でできますので、ご確認されてはいかがですか?

gotetsu
質問者

お礼

おっしゃるとおり、自動記録でありました。 どうもありがとうございました。

関連するQ&A

  • マクロ:別ブックのデータの値を転記

    ExcelでVlook関数を使ってデータを検索していたのですが、マスタの件数(15,000件)と数式が多くなってしまいブックの容量が大きくなってしまって動きづらくなってしまったので、マスタと検索のブックに分け、マクロを使おうと思ってます。 簡単にいうと、 【マスタブック】   A列  B列 1  1   あ 2  2   い 【検索ブック】   A列  B列 1  2   い 2 検索ブックA列1行目に、「2」を入力してマクロを実行すると「い」が表示されるようにしたいのです。   開いておくのは検索ブックはのみです。 Sub 転記() Dim マスタ As Workbook Dim 検索 As Workbook Dim 行, 数字 As Long Dim Bname As String Bname = ActiveWorkbook.Name Workbooks.Open Filename:="C:\Documents and Settings\mi200274\デスクトップ\\マスタ.xls" Workbooks("マスタ.xls").Activate Set マスタ = Workbooks("マスタxls") Set 検索 = ThisWorkbook Set ws1 = マスタ.Worksheets("Sheet1") Set ws2 = 検索.Worksheets("Sheet1") On Error Resume Next 行 = 1 Do Until ws2.Range("A" & 行).Value = "" 数字 = ws2.Range("A" & 行).Value 対象 = ws1.Range("A:A").Find(数字, lookat:=xlWhole).Row ws2.Range("B" & 行).Value = ws1.Range("B" & 対象).Value 行 = 行 + 1 Loop ActiveWorkbook.Close Workbooks(Bname).Activate End Sub 以上のマクロを知人に教わりながら作ってみたのですが、マスタを一度開かないと検索はできないのでしょうか? 重たいデータなのでできれば開かずに検索して値を転記したいので、そのようなコマンド等ご存知の方教えてください。 ちなみにマクロは「新しいマクロの記録」から作る程度の初心者です。よろしくお願いします。

  • エクセルマクロ シート名称と他のファイル間の操作について

    シート名称に、「NY(1)」というように、()を使っています。 多分この()が原因だと思われますが、 Dim sh1 As worksheet Set sh1 = worksheets("NY(1)") と定義しても、うまく作動しません。 「実行時エラー”9” インデックスが有効範囲にありません。」 というメッセージが出てしまいます。 私の要望は、sheets("データ")上のコマンドボタンから、sheets("NY(1)")にあるプログラム(例えばコピーなど)を実行したいものです。 こういった場合、どのような定義?構文を組めば作動するでしょうか? 次に、このブック(ブック名=NY100)から(ブック名=NY200)のデータを操作する場合、(前者のブックにあるデータを、後者のブックに複写して、前者のコマンドボタンを押すことによって、後者のプログラム(例えばコピーなど)を実行させる)には、どのような定義?構文を組めば作動するでしょうか? どなたか教えてください。 ちなみに、エクセル2003、OS=XPです。

  • エクセルのマクロで

    http://oshiete1.goo.ne.jp/qa727693.htmlの質問の回答を参考に Private Sub CommandButton1_Click() Dim Meibo As Worksheet Dim Kojin As Worksheet Dim Rng As Range Dim R As Range Set Meibo = Worksheets("名簿") ' Set Kojin = Worksheets("表") ' Set Rng = Meibo.Range("A2:A51") ' For Each R In Rng Kojin.Range("L4").Value = R.Value ' Kojin.PrintOut Next R Set Meibo = Nothing Set Kojin = Nothing End Sub というマクロを組み、コマンドボタンのクリックで名簿ひとりひとりの名前を表に印刷する事が出来ました。 ただ名簿の範囲 A2:A51が常に埋まってるわけでなく、一人、二人 少ないことがあるのですが、その状態でマクロを実行すると名前が 空欄の表も印刷されてしまいます。 そこで、「範囲はA2:A51で空欄は印刷しない」というようなコマンド設定は出来ないものでしょうか? 印刷するたびに、A2:A51の範囲を変えてやるしかないんですか? まだまだマクロについては勉強不足なもので、よろしくご指導のほど 願います。

  • エクセルのマクロについて

    エクセルで写真帳を作成してるのですが、 保存容量が大きいため、下記のマクロをコピペしたのですが 画像は消えてしまい困ってます。 (1)どなたか下記のマクロ解読お願いします。 (2)それと、新しく保存すると、jpegの画像が消えてしまい  どうしたらよいかわからない。 (3)ボタンを作成してまして、これも消したい。  オブジェクト削除なのかなぁ? わがまま言ってすいません。自分には無理なんでお願いします。 Option Explicit Sub Macro1() Dim SheetCount As Integer Dim i As Integer Dim fname As String Dim Ws As Worksheet Dim OrgWorkBook As Workbook Dim NewWorkBook As Workbook SheetCount = Worksheets.Count ChDir "C:\Documents and Settings\たかじん\デスクトップ" fname = Application.GetSaveAsFilename _ (, "Microsoft Excel ブック (*.xls), *.xls") If fname = "False" Then Exit Sub Set OrgWorkBook = ActiveWorkbook Workbooks.Add (xlWBATWorksheet) Set NewWorkBook = ActiveWorkbook For i = 2 To SheetCount Sheets.Add after:=Worksheets(Worksheets.Count) Next OrgWorkBook.Activate i = 1 For Each Ws In Worksheets Ws.Cells.Copy Destination:=NewWorkBook.Sheets(i).Range("A1") i = i + 1 Next NewWorkBook.Activate ActiveWorkbook.Close True, fname ChDir Application.DefaultFilePath

  • Excel VBA 他のブックへ値を返す

    Excelで「備品」というブックと「不用品報告」というブックを作り、「備品」の方でボタンをクリックすると「不用品報告」の"一覧"というシートに順々に入力されるように組んでみました。 ※「備品」「不用品報告」は同じフォルダに入っています。 Application.ScreenUpdating = False Dim thisBook As Workbook Dim workBook1 As Workbook Dim lastrow2 As Long Set thisBook = ThisWorkbook Set workBook1 = Workbooks.Open(thisBook.Path & "\不用品報告.xlsx") lastrow2 = workBook1.Worksheets("廃棄一覧").Range("C" & Rows.Count).End(xlUp).Row + 1 workBook1.Worksheets("廃棄一覧").Range("G" & lastrow2).Value = thisBook.Worksheets("一覧").Cells(ActiveCell.Row, 15).Value workBook1.Worksheets("廃棄一覧").Range("H" & lastrow2).Value = "報告する" workBook1.Close SaveChanges:=True Application.ScreenUpdating = True MsgBox "廃棄処理が完了しました。不用品報告ファイルの一覧にデータが追加されています。", vbInformation, "廃棄処理" End If という形です。 「不用品報告」ブックにデータが飛ぶのですが、ActiveCell.Rowと設定しているにも関わらず一定の行のデータしか飛んでくれません。 ※例 5行目のデータを飛ばしたいのに(アクティブなセルは5行目のセルになっている状態)7行目のデータが入る という感じです。 違うブックにデータを飛ばすときには「ActiveCell~」は使えないのでしょうか。もしくはどこか不具合があるのでしょうか。 お詳しい方がいらっしゃいましたら、ご教授願います。

  • Excel マクロ 別ブックの情報をコピーする方法

    他のブックの情報をコピーして貼り付けるマクロを作成しています。 2種類のブックから情報をコピーして貼り付けます。 Sub MailTemp() Dim myCellall As Range Dim myCellyoso As Range Dim myCellfor As Range Set myCellall = Sheets("すべて").Range("A3") With Workbooks.Open("\") With .Worksheets("すべて") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall End With .Close False End With Set myCellyoso = ThisWorkbook.Worksheets("予測").Range("A3") Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") With Workbooks.Open("\別ブック") With .Worksheets("予測") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellyoso End With With .Worksheets("結果") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellfor End With .Close False End With End Sub 下記の箇所でエラーが発生して、先に進みません。 原因を調べていましたが、わかりません。 Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") エラーメッセージ 実行時エラー'9' インデックスが有効範囲にありません。 アドバイスを頂けますでしょうか。 よろしくお願いいたします。

  • Excelマクロについての質問です。

    Excelのマクロについての質問です。 マクロについての質問です。 以下のようなマクロを作成しました。 このマクロを動作させているのはこのマクロを作成したファイル上です。 Sub Macro9() Dim WBA As Workbook Dim WBB As Workbook Dim WSA As Worksheet Dim WSB As Worksheet Set WBA = Workbooks("A") Set WBB = Workbooks("B") Set WSB = WBB.Worksheets("1") For i = 100 To 3000 Step 20 Worksheets.Add Before:=Worksheets("Sheet1") Dim k As String k = i ActiveSheet.Name = (k / 100) Set WSA = WBA.Worksheets(k / 100) WSB.Range("A1:AY30").Copy Destination:=WSA.Range("A1") WSA.Range("D4:I30").Clear WSA.Range("Q4:V30").Clear WSA.Range("AD4:AI30").Clear WSA.Range("AQ4:AV30").Clear Next i Application.DisplayAlerts = False Sheets("Sheet1").Delete Application.DisplayAlerts = True Application.DisplayAlerts = False Sheets("Sheet2").Delete Application.DisplayAlerts = True Application.DisplayAlerts = False Sheets("Sheet3").Delete Application.DisplayAlerts = True End Sub そこで質問ですが、このマクロを作動させると何のエラーの表示もなく最後まで動作は完了します。 ですが、シートの作成は30まで作成できてもその後のセルのコピー&ペーストはなぜかシート6.8までしかできていません(7~30までのシートはシート作成はできているのですがコピペのみが実行されず空白のままになっています。) シートもコピペも両方ともシート30まで完了するにはどの点を改善すればいいのでしょうか? 知恵が足りずどうしても直す事が出来ません。 長文申し訳ございませんが是非皆さまのお知恵をお貸しください。 宜しくお願い致します。

  • エクセルのブックを閉じるマクロについて

    エクセルのブックAとブックBが開いている状態で、 ブックAのボタンに登録して実行すると、ブックAのみ閉じる、 というマクロを作りました。(下部にコードを記載します) このマクロは、2つのブックが開いていると正常に稼働するのですが、 ブックが1つしかない場合、実行時エラーが出てしまいます。 (ブックAのみ開いた状態でこのボタンを押してもエラーなく閉じたい) 実行時エラーが出ないようにするにはどうすれば良いか、 おわかりの方がいらっしゃいましたら教えて下さい。 どうぞよろしくお願い致します。 Sub このブックのみ閉じる() Dim wa As String wa = "ほかに無い" Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wa = "ほかにあるよ" End If Next If wa = "ほかに無い" Then Application.DisplayAlerts = False Application.Quit '終了予定 End If Range("D2").Select Selection.ClearContents ThisWorkbook.Close SaveChanges:=False End Sub

  • エクセルのマクロ

    下記のマクロを実行するといつも.Findのところでフリーズしてしまいます。 同じ方法で違うBookからの取込には不具合はないのですが、何故だかわかりません。 ちょっと長くなりますが、どなたか教えてください。 'Function fn_KAKUNIN_Update(strSheetName As String, strInBookName As String) '変数宣言 Dim wksInSheet As Worksheet '入力シート Dim wkbInBook As Workbook '入力ブック Dim wksUpSheet As Worksheet '更新するシート Dim lngKAKUNIN_MaxRow As Long Dim lngSYACHO_MaxRow As Long Dim intMsg As Integer Dim strGenbaNo As String Dim i As Long Dim j As Long Dim rngFind As Range Dim lngStrNo As Long Set wkbInBook = Workbooks(strInBookName) Set wksInSheet = wkbInBook.Worksheets Set wksUpSheet = Workbooks(pstrBookName).Worksheets(strSheetName) fn_KAKUNIN_Update = 1 lngKAKUNIN_MaxRow = wksInSheet.Range("C4").CurrentRegion.Rows.Count lngSYACHO_MaxRow = wksUpSheet.Range("H4").CurrentRegion.Rows.Count lngStrNo = 4 For i = lngStrNo To lngSYACHO_MaxRow strGenbaNo = wksUpSheet.Range("H" & i) With wksInSheet.Range("C4:C" & lngKAKUNIN_MaxRow) Set rngFind = .Find(strGenbaNo, LookIn:=xlValues, MatchCase:=False) If rngFind Is Nothing Then Else

  • Excel マクロ 他ブックのシートの範囲選択した内容を別ブックのシートにコピーする方法

    他ブックのシートの範囲を選択しコピーした内容を、別ブックのシート に貼り付けするマクロを作成しています。 現在の情報であれば、下記のマクロで解決できます。 Sub Test1() Dim myCellall As Range Dim myCellsom As Range Dim myCelluri As Range   Set myCellall = Sheets("すべて").Range("A1") Set myCellsom = Sheets("総務").Range("A1") Set myCelluri = Sheets("売上").Range("A1") With Workbooks.Open("\") .Worksheets("すべて").Range("A1:K17").Copy myCellall .Worksheets("総務").Range("A1:K88").Copy myCellsom .Worksheets("売上").Range("A1:K81").Copy myCelluri .Close False End With End Sub ただ、他ブックのシートのデータは変動するため、行と列の変更を行わなければいけません。行と列の増減があっても、自動的に対応できるマクロを書きたいと思います。 どのようなマクロを追加すればよろしいでしょうか。 よろしくお願いいたします。