• ベストアンサー

EXCEL VBA n番目のシートの内容を参照した

EXCEL VBAについて教えてください。 別のブックのシートのセルを直接参照したいのですが、 シート名が、決まっておらず、必ず4番目のシートを参照したいです。 以下のようなVBAの シート名をSheets(1)のような、決まったインデックス番号で指定にしたいのですが、どのように指定すればよいでしょうか? Range("A1") = "='e:\Temp\working\[book1.xls]シート名'!A1"

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

Range("A1") = Workbooks("e:/Temp/working/book1.xls").Sheets(1).Range("A1") まあ通常は、参照元のBookを開いてる必要があるので Dim OWK As Workbook Set OWK = Workbooks.Open("e:/Temp/working/book1.xls") Range("A1") =OWK.Sheets(1).Range("A1") のようにします。

coral_japan
質問者

お礼

ご回答ありがとうございます。 ご教示いただいた方法でできました。 Sheets(n)のような指定は、ブックを開いた状態でないと、無理そうですね。

関連するQ&A

  • Excel VBAでシートを別なBookにするには?

    Book ABC.xls の Sheet("TEST") を書式と値(数式でなく)だけコピーし別なBookとして保存したいのです。 その際、Sheets("LOGIC").Range("A1")を、マクロで1回目は2、2回目は3とし、12回目の13まで行います。Sheets("TEST")はSheets("LOGIC").Range("A1")を参照しているので、その結果として、Sheets("TEST")の値は当然12通りに変化します。 新たに自動作成される別なBookは Sheet1~Sheet12の12枚のシートをもち、それぞれがABC.xls の Sheets("TEST") の12通りのコピーとなるようにしたいのです。 このようなマクロはどう作ればいいのでしょうか? お手上げです。何卒よろしくお願いします。

  • 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

  • 【Excel-VBA】アクティブセルが参照しているブックを開くには?

    いろいろ検索したのですが、見つからないので質問させていただきます。 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。 (例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている) そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。 つまり、例で言えば、Book2.xlsを開きたいのです。 文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか? 何かいい方法があれば教えてください。 よろしくお願いします。

  • エクセルVBA 無駄な部分をおしえてください

    VBA初心者です。 多数のシートを条件によって二つのブックに分ける、というVBAを作ろうとしています。 なにぶん素人なので、無駄な文章が多いのではないかと心配で、 お知恵を拝借できればと思い投稿いたしました。どうぞよろしくお願いいたします。 やりたいこと:Book1のA列に100程度の文字列があり、そのいずれかと一致するシート名(Book1のSheets(2)以降)を持つシートはBook2の最終シートの後ろへ、どの文字列ともシート名が一致しないシートはBook3の最終シートの後ろへ移動。(「最終シートの後ろへ移動」がうまくいっていません) VBAの内容:Book1のH1に「=countif(A:A,G1)」と入力しておき、G1にシート名を入力させ H1>0ならば該当シートをBook2へ、それ以外はBook3へ移動 の繰り返し   Application.ScreenUpdating = False Dim j As Integer, k As Integer j = Workbooks("Book2.xls").Worksheets.Count k = Workbooks("Book3.xls").Worksheets.Count Do While Workbooks("Book1.xls").Sheets.Count > 1 Range("G1").Value = Worksheets(2).Name If Range("H1").Value > 0 Then Worksheets(2).Move after:=Workbooks("Book2.xls").Sheets(j) Else Worksheets(2).Move after:=Workbooks("Book3.xls").Sheets(k) End If Loop

  • Excel VBA 指定シートの取込

    こんにちは。 ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、 シートが無かった場合の処理方法がわかりません。 現在のコードは下記の様になっております。 With Workbooks.Open"BOOK1.xls" .Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") .Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") .Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1") .Close End With Book1に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • フォームのシート間参照

    以前シート参照のブック間コピーについて質問した者です。 たびたびお世話になります。 今、ブック(test1.xls)に3枚のシートとVBAがあります。3枚のシートは生成される書類の雛形になっています。VBAはユーザフォームを表示させるためのもので、ユーザによる入力が終わり、コマンドボタンが押されるとtest1の全てのシートを新しいブックにコピーし、入力されたデータに基づいてセルが埋められる仕組みです。 シート間の参照が[test1.xls]temp!A1となってしまう(tempは3枚のシートのうちの1枚)問題は、皆さんのアドバイスで回避することができました。しかし。 3枚のシート内でフォーム(チェックボックスやオプションボタンなど)を使用しているのですが、それらのプロパティ、「リンクするセル」にも同じ現象が起きてしまいます。 「リンクするセル」も新しいブックのシートを参照するようにしたいのですが、VBAで1つずつ設定していくしかないでしょうか…?フォームを大量に利用しているので、手作業は避けたいです。 皆様のアドバイスをよろしくお願いいたします。

  • エクセルのブック参照について教えてください

    エクセルの機能に、あるセルに=[Book1.xls]Sheet6!B5のように指定すると、他のブックを参照することができますが、 これって、ネットワークで繋がった異なるPC同士のブックでも出来るんでしょうか? 例  PC1に置いてある、Book1.xlsのSheet6のB5を PC2で制作中のブックのセルに指定する。みたいな。

  • エクセルVBA セルを参照した文字検索でシートをアクティブにする

    VBA初心者で困っています。 ブックAのシート1の“A1”の値が、同一ブック内の違うシートにあるかどうか検索し、あればそのセルをアクティブにして黄色に色づけ、なければメッセージを返すという処理をVBAで行いたいです。 似たような質問があってそれを参考にしてみましたが どうも上手く動いてくれません。 参考にさせていただいたのは   Set r = Workbooks("ブックB.xls").Sheets("シート1").Columns("A") _     .Find(What:=Workbooks("ブックA.xls").Sheets("シート1").Range("A1").Value, _        LookIn:=xlValues, _        LookAt:=xlWhole, _        SearchOrder:=xlByColumns, _        SearchDirection:=xlNext, _        MatchCase:=True)   If r Is Nothing Then     MsgBox "no data"   Else     Application.Goto r     Set r = Nothing   End If End Sub というコードです どなたか、わかる方教えてください。

  • [ExcelVBA] 別ウィンドウのエクセルを参照する方法

    同ウィンドウ(一つの親ウィンドウ)にBook1とBook2を開いてある状態では Book1のVBAで range("A2")=workbooks("Book2.xls").sheets(1).range("A2") というマクロを動かせば、 Book1のA2に「100」というデータが出力されます。 しかし、 別ウィンドウ(添付の画像の状態)の場合、 上のようなコードでは 「実行時エラー9 インデックスが有効範囲にありません。」となります。 別々の親ウィンドウでそれぞれのデータを開いているので、 上記と同じコードでは、Book2の場所が把握できていないので 当然エラーになります。 このように、別ウィンドウでBook1、Book2をそれぞれ開いてある状態で、 一方を参照するにはどうやったらいいのでしょうか? 添付の画像は、別ウィンドウで、Book1のボタンを押すと、 Book2を参照して、「100」というデータを取得できたという、 やりたいことのイメージです。

  • 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)で指定できないので困っています。

専門家に質問してみよう