• ベストアンサー
  • 困ってます

ブックの選択について

ブックの選択について 以下のように、マクロのあるブック意外のブックを開いて からマクロのあるブックを選択しようとしてもできません。 具体的には一番下の Workbooks(thisBook).Select が正常に動きません。 なぜでしょうか? Dim myFName As String Dim macrobook As Object Dim thisBook As Workbook Set thisBook = ThisWorkbook myPath = ActiveWorkbook.Path ChDir myPath myFName = Dir("*S*.xls") Workbooks.Open Filename:=myFName Workbooks(myFName).Activate Worksheets(1).Select Workbooks(thisBook).Select

noname#150547

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数155
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • _Kyle
  • ベストアンサー率78% (109/139)

えっと そもそもWorkbookオブジェクトを「Select」することはできません。  thisBook.Activate のように「Activate」する場面では? ----------------------------- もし 「Select」することで「Activate」とは異なる動作をさせたいということでしたら 「どのような動作をさせたいのか」補足された方が回答がつきやすいかと思います。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ブックCloseでVBAが続かない

    エクセル2002を使用しています ブック(A)をコピーして名前(B)をつけて別ブックで保存しました ブック(A)を呼び出し後、ブック(B)を閉じてブック(A)のVBAを継続したいのですが 継続しません 作成したモジュールは以下です   Application.DisplayAlerts = False   '【不要なシートを削除する】 Sheets(Array("注文書入手差異表", "入手予定履歴", "main", "営C")).Select ActiveWindow.SelectedSheets.Delete   '【ThisWorkbook.Pathの『注文書確認フォルダ』の中に、名前をつけて別ブックで保存する   '   …ユーザーフォームを使用するのでマクロごと保存】 Dim myFolder As String Dim Filename As String myFolder = ThisWorkbook.Path & "\注文書確認フォルダ" Filename = Format(Date, "yyyymmdd") & "注文書入手予定表" If Dir$(myFolder, vbDirectory) = "" Then MkDir myFolder End If ActiveWorkbook.SaveAs Filename:= _ myFolder & "\" & Filename Application.DisplayAlerts = True '【保存した別ブック名を再取得】 Dim myName0 As String myName0 = ThisWorkbook.Name   '【コピー元のファイルを開く】 Dim myPath As String myPath = Application.Substitute(ThisWorkbook.Path, "\注文書確認フォルダ", "") Workbooks.Open (myPath & "\" & "注文書入手予定表")   MsgBox "【注文書確認フォルダ】の中に別ブックが作成されました"     '【保存した別ブックを閉じる】 Workbooks(myName0).Activate Windows(myName0).Activate ActiveWorkbook.Close '******下のマクロが続かない***************** '====================== Call Macro6 '======================   VBA ステップインで原因を探ろうとしたのでですが   「中断モードでは入力できません」のメッセージがでて   デバッグができません   八方ふさがりの状態です。助けていただけませんか。

  • 複数のブックの特定シートを1つのブックにまとめたい

    複数のブックの特定のシートを1つのブックにまとめたいのですが そのマクロは下記のように検索してでてきたのですが Sub test() Dim Fname As String Dim Wbm As Workbook Dim Wbs As Workbook Application.ScreenUpdating = False Set Wbs = ThisWorkbook Fname = Dir(ThisWorkbook.Path & "\*.xlsx*") Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open ThisWorkbook.Path & "\" & Fname Set Wbm = ActiveWorkbook Wbm.Worksheets("2016.03").Copy after:=Wbs.Worksheets(Wbs.Worksheets.Count) ActiveSheet.Name = Left(Fname, InStr(Fname, ".") - 1) Wbm.Close End If Fname = Dir() Loop Application.ScreenUpdating = True End Sub たとえば、特定のシートというのが毎回変わる場合今回は”2016.03"ですが 次回は”2016.04”という風に変わる時、どこかに入力したセルの値を元にシートを検索してくることなどは可能なのでしょうか? よろしくお願い致します。

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

その他の回答 (1)

  • 回答No.1

>Workbooks(thisBook).Select と使いたいなら、オブジェクトを”ブック名”(thisBook = ThisWorkbook.name)として取得すべきです。 今回の場合、thisBook.Select で可能と思いますが? 普通に、ThisWorkBook.select などと使う方がわかりやすいのでは?

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 ですが、”オブジェクトはこのプロパティ,メソッドをサポートしていません” というエラーが出てしまいます。 以下のようにMsgboxでブックの名前を表示させると 目的のブック名は取得できているようなのですが・・・・・・・・・・? MsgBox thisBook.Name thisBook.Select

関連するQ&A

  • 保護されたブックのコピーについて

    現在、ボタンを押すと新規ブックが作成され、最初のブックのシートをコピーするというマクロを組みました。 しかし、元になるブックにはブックの保護とシートの保護を両方かけていて、途中でエラーになるはずなのですが、何故かそうならずに普通に新規ブックにコピーがされます。 上手くいったのですがエラーが出ると予想していたので気持ちが悪く、また個人だけで使うわけじゃないので原因を知っておきたいです。 どなたかよろしくお願いします。 Private Sub makeBookButton_Click() Dim myWorkBook As String Dim newWorkBook As String Dim mySheet As Worksheet Application.ScreenUpdating = False On Error GoTo ErrTrap Application.DisplayAlerts = False myWorkBook = ThisWorkbook.Name Workbooks.Add ActiveWorkbook.SaveAs Filename:=NEWBOOK newWorkBook = ActiveWorkbook.Name Workbooks(myWorkBook).Activate For Each mySheet In ThisWorkbook.Worksheets Workbooks(myWorkBook).Sheets(mySheet.Name).copy after:=Workbooks(newWorkBook).Sheets(Workbooks(newWorkBook).Sheets.Count) Next Workbooks(NEWBOOK).Sheets("Sheet1").Delete Workbooks(NEWBOOK).Sheets("Sheet2").Delete Workbooks(NEWBOOK).Sheets("Sheet3").Delete Application.DisplayAlerts = True Application.ScreenUpdating = True Exit Sub ErrTrap: Call MsgBox("ブック作成時にエラーが発生しました。", vbCritical) End Sub

  • 複数ブックの最後のブックだけ処理できない

    開いている複数ブックに対して「簡単な処理を行い、保存して閉じる」 というマクロを走らせたいのですが、 最後のブックのみ処理できずにマクロが終了してしまいます。 例えば、3ブック開いていたら3ブック目が、 4ブック開いていたら4ブックめが、処理できずに開いたままの状態です。 Dim Wb As Workbook For Each Wb In Workbooks 簡単な処理内容 ActiveWorkbook.Close SaveChanges:=True Next どのように改善すれば良いのでしょうか?

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

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

    エクセルで写真帳を作成してるのですが、 保存容量が大きいため、下記のマクロをコピペしたのですが 画像は消えてしまい困ってます。 (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

  • エクセル VBA シート名を別シートにコピー

    早速の質問ですが エクセルVBAで シート名を別シートにコピーなのですが 10個のシートを順にシート名をコピー&ペーストしたいのです。 Dim aworkbook As Workbook Dim bworkbook As Workbook Set bworkbook = ActiveWorkbook Workbooks.Add Set aworkbook = ActiveWorkbook for i=1 to 10 bworkbook.Activate Worksheets(i).Select Application.CutCopyMode = False aworkbook.Activate Worksheets(i).Select ここに入る文章がわかりません Range("A1").Select next と以上な感じで作ってみたのですが どう貼り付けして良いかわからない状況です nextでまわす以上変数でなければだめなんでしょうけれども 構文が思いつきません。 皆様よろしくお願いいたします。

  • 複数のブックコピーの繰り返しその2

     このサイトのお力により以下のプロシージャができました。 折角作っていただいたのですが、処理枚数が増えたため1ファイルに1日分だったのが3日分(6ファイル)をコピーすることになってしまいました。どのようにしたらよいでしょうか、お分かりの方いらっしゃいましたらよろしくお願いします。  現状は、あるフォルダー内のファイル970303日報1、970303日報2を開いて、新しいブックに貼りつけて保存する。次に970304日報1、970304日報2を開いて新しいブックに貼りつけて保存するという作業の繰り返しです。  これを、970303日報1,2 970304日報1,2 970305日報1,2の3日分を新しいブックにコピーして保存する。次に970306日報1,2 970307日報1,2 970308日報1,2を新しいブックにコピーして保存する。これの繰り返しをしたいのですがどうしたらよいでしょうか。  ファイルのコピーする範囲は一定です。貼り付けるブックのセルは 1日目の日報1がA1、日報2がL5、2日目の日報1がA40、日報2がL44 3日目の日報1がA79、日報2がL83となります。  すみませんよろしくお願いします。 Sub copybook11() Dim myPath As String 'このブックのパス Dim DataFile As String 'Dir()で開くブック名 Dim copybook As Workbook '開いたブック Dim NewBook As String '新しいブック Dim NewFileName As String '新しいファイル名 myPath = ThisWorkbook.Path & "\" DataFile = Dir(myPath & "*.xls", vbNormal) Do While DataFile <> "" If DataFile <> ThisWorkbook.Name And InStr(1,     DataFile, "日報") > 0 Then Set copybook = Application.Workbooks.Open     (Filename:=myPath & DataFile, ReadOnly:=True) Select Case Mid(DataFile, InStr(1, DataFile, "日      報"), 3) Case "日報1" Workbooks.Add NewBook = ActiveWorkbook.Name copybook.ActiveSheet.Range("A1:K38").copy Workbooks(NewBook).ActiveSheet.Range           ("A1").PasteSpecial paste:=xlAll Application.CutCopyMode = False copybook.Close Case "日報2" copybook.ActiveSheet.Range           ("B3:K36,T3:U36").copy Workbooks(NewBook).ActiveSheet.Range           ("L5").PasteSpecial paste:=xlAll Application.CutCopyMode = False copybook.Close NewFileName = Format(Workbooks   (NewBook).ActiveSheet.Range("k2").Value, "yyyymmdd") & "日    報.xls" Workbooks(NewBook).SaveAs Filename:=myPath           & NewFileName, FileFormat:=xlExcel8 Application.DisplayAlerts = True Workbooks(NewFileName).Close End Select End If DataFile = Dir Loop End Sub

  • エクセルVBAで、複数のブックからデータベースを作りたい

    こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルVBAで、ある特定な場所にあるブックが開いていたら閉じたい

    こちらでお世話になった者です。その節はありがとうございました。 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   ……

  • VBA ブック間のコピー

    2つのブック(どちらも変数ですが、MyFNameとMyFName2)を開いています。 このブック間で、データをコピー貼付けしたいのです 貼付け先は、セル結合しているので、セルを2つ選択してみました Workbooks(MyFName).Activate 'Worksheets("部品表").Activate Range("D4").Select Selection.Copy Workbooks(MyFName2).Activate Range("F37:G37").Select でも、貼付け先のセルがアクティブにはなっていますが、データが貼り付けられていませんでした。 ちなみに、2008年00月00日のデータ貼付け作業です どうかご指導ください

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

    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 以上のマクロを知人に教わりながら作ってみたのですが、マスタを一度開かないと検索はできないのでしょうか? 重たいデータなのでできれば開かずに検索して値を転記したいので、そのようなコマンド等ご存知の方教えてください。 ちなみにマクロは「新しいマクロの記録」から作る程度の初心者です。よろしくお願いします。