ExcelのSheetの情報を使用して別のSheetを表示する方法と、Sheet名の情報を採集する方法について
- ExcelのSheetの情報を使用して別のSheetを表示する方法と、そのためにマクロを使用する方法について説明します。また、Sheet名の情報を採集する方法についても解説します。
- ExcelのSheetの情報を使用して別のSheetを表示する方法として、マクロを使用することが可能です。具体的なマクロの書き方についても説明します。
- ExcelのSheetの情報を使用して別のSheetを表示するためには、マクロを使用すると便利です。また、Sheet名の情報を採集する方法についても解説します。
- ベストアンサー
excel:あるsheet Bからその中の情報で別のsheetを表示する。
(問題概要)あるsheet Bからその中の情報で別のsheetを表示する。 Mydocの中のAというフォルダに、ExcelのBOOKが複数個(A1~A5とB)あり、また各bookには複数個のシートが入っています。 ブックBの中に表形式で B.xlsのsheet1 (表) 各book名 各sheet名 A1.xls A1-1sheet A1.xls A1-2sheet A1.xls A1-3sheet A2.xls A2-1sheet ~ A5.xls A5-1sheet A5.xls A5-2sheet などと入っています。 やりたいことは、この表のsheetの所などをクリックしたときに(方法はプログラムを作り安い方法でよいのですが)、当該シートを開き表示するようにしたいが、マクロがいいですか。その場合マクロはどんなふうに書けばいいでしょうか。 またBの表を作るため、BOOK内のsheet名の情報を採集する(コピー)方法はありますか
- taktta
- お礼率72% (1031/1430)
- オフィス系ソフト
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。式間違ってますね^ ^;正しくは =HYPERLINK("[C:Mydoc\A\"&A2&"]'"&B2&"'!a1",B2) 『&』が1コ余計でした... ついでに。 マクロが置いてあるBookと同じフォルダ内のxlsBookをリストアップします。 とりあえずサンプルなので新規Sheetを追加して書き出します。 Sub sample() Dim fol As String Dim fnm As String Dim sh As Worksheet Dim i As Long, n As Long Dim v(), x() fol = ThisWorkbook.Path & "\" If MsgBox(fol & " の処理を行います。OK?", vbOKCancel) = vbCancel Then Exit Sub With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With fnm = Dir(fol & "*.xls") Do Until Len(fnm) = 0& If Not fnm Like ThisWorkbook.Name Then With Workbooks.Open(Filename:=fol & fnm, updatelinks:=False, ReadOnly:=True) i = i + 1 For Each sh In .Worksheets n = n + 1 ReDim Preserve v(1 To 1, 1 To n) ReDim Preserve x(1 To 1, 1 To n) v(1, n) = fnm x(1, n) = "=HYPERLINK(""[" & fol & fnm & "]'" _ & sh.Name & "'!a1"",""" & sh.Name & """)" Next sh .Close savechanges:=False End With End If fnm = Dir() Loop If n > 0 Then With Worksheets.Add .Range("a1").Resize(n).Value = Application.Transpose(v) .Range("b1").Resize(n).Formula = Application.Transpose(x) End With End If With Application .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With MsgBox i & " Books & " & n & " Sheets" & vbLf & "処理終了" End Sub うまくいかなかったらごめんネ^ ^;
その他の回答 (1)
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。表ができている状態であれば、HYPERLINK関数を使えば比較的簡単だと思います。 C2セルに=HYPERLINK("[C:Mydoc\A\&"&A2&"]'"&B2&"'!a1",B2) な感じで。 マクロ処理の場合も式を埋め込むようにしたらいいかと思います。 >sheet名の情報を採集 するところからつくるとすれば、 ブック数、シート数がそれほど多くなければ 1)特定のフォルダに対してVBAのDir関数を使って1つずつExcelブックを開く。 この時、画面更新やイベントを抑制してマクロの実行速度をあげる。 2)開いたブック内の全シートをForEach...Nextステートメントを使ってループ処理する。 3)書き出しシートを変数に格納しておいて、2行目からBook名と関数を埋め込んでいく。 関数部分は例えば シート.Cells(i,2).Formula = "=HYPERLINK(""[C:Mydoc\A\" & ファイル名 & "]'" _ & シート名 & "'!a1"",""" & シート名 & """)" な感じで。 また、配列を使うスキルがおありなら、さらに処理時間は短縮できると思います。
お礼
回答2でのフォローごていねいに、ありがとうございます。 少し間違いがあったほうがこちらも調査し勉強になります。
関連するQ&A
- フォルダ内のxlsをシートごとに別ファイルにしたい。
現在開いているブックのシートごとにブックにするマクロはあったのですが フォルダ内のブックを一気にばらすことはできませんか? ---元--- ./甲.xls(シートa,シートb,シートc) ./乙.xls(シートa) ./丙.xls(シートa,シートb) ---元--- ---先--- ./甲a.xls(シートa) ./甲b.xls(シートb) ./甲c.xls(シートc) ./乙.xls(シートa) ./丙a.xls(シートa) ./丙b.xls(シートb) ※シート名もしくはseqをつけて分割 ---先--- まとめてPDFを作ろうかとしたら複数シートがうまく行かないので 1ブック1シートの形式にできればと思ってます。 (通常時は複数シートがいいので1ファイルづつ作業は考慮したくない) できましたらお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 別のブックから、特定のシートを指定して他のブックを開くには
マクロ初心者です。 A.xlsと、B.xlsという2つのブックがあります。 B.xlsはこの時、閉じた状態です。 Aには1つのシートのみがあって、Bには日毎に追加されていく不特定数のシートがあります。 Aのブックのシート内のセル番地A1に、「aaa」と入力した場合、B内の「aaa」という名前のシート名を指定してB.xlsを開くマクロはどう書いたら良いのでしょうか。 頼りきりの質問になってしまって申しわけございません。 何卒宜しくお願い申し上げます。
- ベストアンサー
- オフィス系ソフト
- VBA(Excel):他のブックからシートごと取込みたい
他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。 以下を例として、ご回答いただけると幸いです。 よろしくお願いします。 ---------------------------------- 次の3つのブックが存在するとします。 a.xls b.xls c.xls a.xlsにはシートが1つだけあり、シート名は"sheet1"です。 b.xlsにはシートが1つだけあり、シート名は"sheet1"です。 c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。 a.xlsにVBAマクロを作り、a.xls上で実行させて、 a.xlsの"sheet1"は残したまま、 b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、 a.xlsのシートとして取込み、 同様に今度は、 a.xlsの"sheet1"、"sheet1-b"は残したまま、 c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、 c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、 c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、 a.xlsのシートとして取込み、 最終的に、a.xlsには、 "sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c" の、5つのシートが存在するようにしたいのです。 (各シート上のデータは、a.xlsの各シートとしてすべて移行されている) ----------------------------------
- ベストアンサー
- その他(プログラミング・開発)
- EXCELでのシートの再表示(マクロ)
あるエクセルのブックで、マクロを使い、複数のシートを非表示にしていました。 うっかり、そのマクロを削除してしまいました。 非表示にしたシートを、再表示する方法をお教えください。 なお、非表示にしたシートは、複数あり、シート名も不確かです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロでシートを表示させる
マクロ初心者です。 1つのブックに20シート入っているのですが、 チェックBOXにチェックを付け、該当するシートのみを表示させるマクロを教えてください。 sheet1以外の下記のシートA~Dは非表示になっており sheet1にはシート名 A B C D というチェックBOXがあり、 例えば、Bにチェックを入れるとBのシートが表示され、 AとDなど複数チェックが入るとチェックしたシートが表示される様な マクロがありましたら、教えてください。 マクロの記録で読み込ませているのですが、複数シートの為、限界を感じております。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- EXCEL2003で別ブックのシートの名前の定義を使いたいのですが
EXCEL2003を使っています。 A.xlsというブックのAAAというシートに「商品」という名前の定義をしたテーブルがあります。このシートAAAをB.xlsというブックにコピーし、B.xlsのシートBBBの中で入力規則の元の値として、VLOOKUPの範囲名として使いたいのですが、入力規則の場合は、「元の値はエラーと判断されます。続けますか?」というメッセージが出て使用できません。 このとき、A.xlsは別場所なので存在しません。名前の定義のあるシートを他のブックにコピーして使用するのは無理でしょうか?
- ベストアンサー
- その他MS Office製品
- 別ブックへのシートのコピー(Excel)
エクセル上で、Aというブックのaというシートを、Bというブックにコピーしようと思っています。 過去の質問を検索したらNo2459324でわかりやすい解答があったので試してみたのですが、 AとBのブックを画面上で両方開いて、Aブックのaシート上で、「編集」→「シートの移動またはコピー」とすると、確かに小さな入力ボックスがでてくるのですが、その中の「移動先ブック名」の欄にBというブック名が表示されないので、選択先としてBブックを指定できないのです(その欄にブック名の手入力もできません)。 「(新しいブック)」を選択すると、AでもBでもない新しいブックが生成されてそちらにコピーされてしまうようです。 どのようにしたらブックAからブックBにシートをコピーできるでしょうか。
- ベストアンサー
- オフィス系ソフト
- 別のbookのシート名を自動に貼り付ける
http://www2.odn.ne.jp/excel/waza/sheet.html#SEC8 参考にして、シート名をセルに表示させたいです。 参考book [s.xls]シート名はそれぞれa,b,c,とあるとします。 表示させたいbookは[x.xls] こちらのシート名はd,e,fとします。 x.xlsの各シートa1の欄に、s.xlsのシート名を自動で表示させたいです。 dのシートにaのシート名 eのシートにbのシート名 fのシートにcのシート名 2枚目のシートが変更できませんでした。 すべてaのシート名が表示されてしまいます。 =MID(CELL("filename",s.xls$A$1),FIND("]",CELL("filename",s.xls$A$1))+1,31) にしました。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- エクセル 別ファイルから シートを リンクを張らずに コピーしたい
エクセル2003 1~4 はファイルの状態の説明です。 やりかたを質問したい部分は 5です。 1、ファイル(ブック)A.xls → 計算式が大量に入った数シートからなるファイル があるとする。 2、A.xls を そのままコピーし コピーされたファイルは B.xls に リネーム。 3、A.xls は 計算式等は変更しないが、データを変更し通常業務で使用。 4、A.xls の新バージョンを作るために B.xls を使って計算式等を編集。 (複数あるシートのうち一部シート(シート名 「あいうえ」 とする)のみの変更に加え さらに新シート「さしすせ」を作成) 5、A.xls のシート名 「あいうえ」をB.xlsで作った シート名 「あいうえ」と置き換え、 さらに新シート「さしすせ」もB.xlsからコピーして追加する。 普通にシート名 「あいうえ」や 新シート「さしすせ」を選択し コピーを行うと B.xls からリンクを張った状態でコピーされて しまう。たとえば シート「あいうえ」セルA1の中身を見ると =[B.xls]あいうえ!A1*2+1 といったように [B.xls]が付いて コピーされる。 これを回避して、単にそのまま丸ごと(A.xlsの中だけで編集したかのように) シートをコピーするにはどうしたら よいのでしょうか? 長くなってすいません。 よろしくおねがいいたします。
- 締切済み
- オフィス系ソフト
- EXCELで別ブックのセルを参照 シートを替える
EXCEL初心者です。 毎日四苦八苦しているのですが、行き詰ってしまったのでご教授ください。 使用しているブックをA.xlsとして、 別ブックB.xlsのセル参照を、 ='Z:\[B.xls]Sheet1'!$B$1 のようにしています。 この Sheet1 の部分のシート名をA.xlsの、例えばA1に入力することで、 毎回シート名を変えられるようにしたいのですが、 ='[B.xls]( ココ )'!$B$1 ココの部分をどのようにしてよいかがわかりません。 A.xlsのパス名から書けばよいのかなと思ったのですが、 どうもうまくいきません。 何分必要にせまられてEXCEL勉強し始めたばかりです。 初歩的な質問ですが、すみません、よろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
お礼
うまくいきすぎました。目的達成150% すばらしいですね。 どうもありがとうございました。