[[20100224090051]] 『BOOKのファイル名をシートに表示したいのですが』(iruka) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『BOOKのファイル名をシートに表示したいのですが』(iruka)

 例えばファイル名(AAA)のExcelのBOOK=(これをBOOK1とします)
 このBOOK1のシートを開いて、内容を別のBOOK=(これをBOOK2)にコピーした時に、
 BOOK1のファイル名をBOOK2のコピーしたシートの任意のセルに表示させる方法は
 あるでしょうか?

 ┌─┬───────────┬──────┐
 │  │          A           │     B      │
 ├─┼───────────┼──────┤
 │ 1│                      │            │
 ├─┼───────────┼──────┤
 │ 2│    データ            │   データ   │
 ├─┼───────────┼──────┤
 │ 3│    データ            │   データ   │
 └─┴───────────┴──────┘
 (BOOK1)ファイル名(AAA)

                     ↓(BOOK2に貼り付け)

 ┌─┬───────────┬──────┐
 │  │          A           │     B      │
 ├─┼───────────┼──────┤
 │ 1│      AAA   ←(ここにBOOK1のファイル名を表示)
 ├─┼───────────┼──────┤
 │ 2│    データ            │   データ   │
 ├─┼───────────┼──────┤
 │ 3│    データ            │   データ   │
 └─┴───────────┴──────┘
 (BOOK2)

 色々調べたのですが見つかりませんでした。
 助言よろしくお願いします。


 BOOK1の A1セルに、下記数式を入力。

 =MID(CELL("filename",$A$2),FIND("[",CELL("filename",$A$2))+1,FIND("]",CELL("filename",$A$2))-FIND("[",CELL("filename",$A$2))-5)

 ブック名が表示されたら、切り取りしてBOOK2の A1セルに貼り付け。
 
(純丸)(o^-')b 使い道はよくわからないけど。

 説明が悪くてすいません><
 BOOK1の方は色々な所から送信されてくるデータなのでこちらで加工できません。
 BOOK2(貼り付ける側)のA1セルになんか工夫して元データ(BOOK1)のファイル名が
 表示できないかなと思いまして。。

 加工ったって、保存しなければいいんですけどね。

 であれば、上記数式を BOOK2のA1セルに貼り付けて、その後、
 4つの $A$2 のところで BOOK1のどこかのセルをクリックすれば、
 数式で表示させることが可能かと思います。
 (つまり、$A$2がBOOK1のセルアドレスになるようにする)

 私だったら、そんな質面倒くさいことはせずに、
 素直に A1に手入力しますけどね。
 
(純丸)(o^-')b

 (純丸)さん回答ありがとうございます。
 今までは手打ちでやっていたんですが、ファイルの量が多くファイル名が00120011みたいに
 数字の羅列で間違って打ち込んでしまうことがあったのと、最終的には貼り付けたデータを印刷
 して使用するため、このデータはこのファイル名のものと言う事が分からないと、後でまとめら
 れなくなってしまうもので><
 さっそくトライさせて頂きます。


 再度質問させてください。
 ファイル名が1111.2222.3333.4444.5555.6666.7777....等の複数のファイルがあって、
 そのデータを印刷専用のbookに貼り付けてデータを印刷しているのですが、1111を貼り付けた
 時には1111、2222のデータを貼り付けたときは2222、3333のデータを〜というようにファイル
 名を表示するにはなにか良い方法はあるでしょうか?
 何度もすみませんがよろしくお願いします。


 もっと具体的に(同じ操作が出来るように)
 説明してもらうのが良いと思います。

 >印刷専用のbook
 と言うのはどう言ったブックなんでしょう?

 >貼り付けて
 コピーする範囲は毎回違うのでしょうか?
 その場合、どう言った基準でコピーするのでしょう?

 また、貼り付ける場所はファイルによって違うのでしょうか?

 最初に載せて下さっているサンプルデータは
 (BOOK1)ファイル名(AAA)を貼り付ける時ですよね?
  A2:B3セルをコピーして、BOOK2のA2:B3に貼り付ける。
 他のファイルのパターンとしてはどう言ったパターンに成るのでしょう?

 そして、そのパターンはどの様にして決まっているのでしょう?

 (HANA)

 説明不足すいません。

    (元データ)ファイル名が1111〜5555の様に複数のファイルがきます。
      A       B       C       D       E       F       G
 1  deta1   deta2    deta3  deta4   deta5   deta6   deta7
 2
 3

 というようなデータの入ったファイルを、他のエクセルに貼り付けて必要なデータのみを
 Seet2に表示させて印刷をかけ処理をしています。

 (印刷用のBookに元データを全てコピーして貼り付け)
       A       B       C       D       E       F       G
 1  deta1   deta2    deta3  deta4   deta5   deta6   deta7
 2
 3

 (その印刷用bookのsheet2に必要なデータのみを表示)

       A       B       C       D     
 1  
 2   deta1   deta4    deta5  deta7  
 3

 現在はこの時点でA1のセルに該当のファイル名を手打ちで打ち込んで印刷を掛けていますが
 sheet1に貼り付けた時点でsheet2のA1セルに該当のファイル名が入る方法を探してします。
 良い方法がありましたらよろしくお願いします。

(iruka)


 印刷用ブックに貼り付けたデータから
 必要なデータを抜き出すのは、数式でやっていますか?
  (事前に数式が埋め込んである?)
 それとも、さらに何か色々な処理を行うのでしょうか?

 例えば、手作業でやることを考えた場合
 INDIRECT関数を使用して
 A1セルに入力されたブックのセルの値を参照
 という仕組みにしておけば
 ファイル名の入力は必要ですが
 逆にデータをコピーする必要が無くなると思います。
  (ファイルを開く必要は有ります。)

 詳しい状況が分かりにくいのですが
 マクロを使うと
  指定場所にデータをコピー
  ファイル名を記入
  印刷
 の一連の作業をしたり
 それを繰り返させたりは
 出来るように成ると思います。

 同じ作業を誰かにやってもらおうと思ったときに
  これらのファイルのデータを
  印刷用のブックに貼り付けて
  印刷用ブックのSheet2に必要なデータのみを表示させて
  A1セルに元ファイルの名前を入力して印刷して下さい。
 と言っただけでは、その人はどの様な作業をすれば良いのか分からないですよね?

 元ファイルはいくつシートが有るのか?どのシートのデータをコピーするのか。
 印刷用のブックのどのシートに貼り付けるのか。(Sheet1?)
 どのデータがSheet2に必要なデータなのか。(Sheet2は貼り付けると勝手に出来る?)
 次のファイルを処理するときは、上からデータを貼り付けて良いのか
   貼り付ける前に一旦保存が必要なのか?

 もう少しその辺りを詳しく教えていただくと
 コメントも変わってくるかもしれません。

 (HANA)

 元ファイルのデータが入っているsheetは一つだけです。

 貼り付けるbookのsheet1にはなにも数式はありません。

 印刷用のsheet2の方にはsheet1のデータを吸い上げてくるような単純な数式
 が入っています。なのでsheet1に張り付ければ自動にsheet2に表示されます。
 (数式といってもせいぜいvlookup程度の簡単なやつです)

 sheet2のファイル名を表示させようと思っているセルにはなにも数式はありません。

 また、印刷するときに貼り付けるだけなので、印刷が終われば保存はぜずに再度違
 うファイルを張り付けて印刷を行なっています。

 よろしくお願いします。

 (iruka)

 えっと。。。
  ブック名を入力する事にして、コピーの手間を省略
 が良いですか?それとも
  マクロで勝手に貼り付けて順番に処理
 が良いのですか。。。?

 まず、ブック名を入れて 数式で参照する場合は
 Sheet1のA1セルにブック名を入力します。
 A2セルには
=IF(INDIRECT("["&$A$1&".xls]Sheet1!"&CELL("ADDRESS",A1))="","",INDIRECT("["&$A$1&".xls]Sheet1!"&CELL("ADDRESS",A1)))
 の式を貼り付けて、G列までと必要行フィルドラッグしておきます。

 A1セルに入力したブック名のブックを開くと、そのファイルのセルの値が表示されます。
 実際は、Sheet2のA1セルを参照するようにして
  Sheet2のA1セルにブック前を入力→そのまま印刷
 と言う流れにしておくと処理がスムーズに行えるかもしれません。
  その際は、数式中の絶対参照に成っている$A$1だけ、Sheet2!$A$1に変更してください。

 マクロで順次処理をする場合は、こんな感じで。。。
 '------
Sub 印刷()
    Dim myPath As String, wb As Workbook
    Dim myRow As Long, myFn As String
    myPath = "C:\test"  '←フォルダ名変更

    myFn = Dir(myPath & "\" & "*.xls")
    With ActiveWorkbook
        Do While myFn <> ""
            With .Sheets("Sheet1")  '←シート名変更
                .Cells.Clear
                .Range("A1").Value = Left(myFn, Len(myFn) - 4)
                Set wb = Workbooks.Open(myPath & "\" & myFn)
                myRow = wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
                wb.Sheets(1).Range("A1").Resize(myRow, 7).Copy .Range("A2")
            End With
            .Sheets("Sheet2").PrintPreview    '←シート名変更
'            .Sheets("Sheet2").PrintOut
            wb.Close False
            myFn = Dir()
        Loop
    End With
    Set wb = Nothing
End Sub
 '------

 印刷用ブックの、標準モジュールに貼り付けて実行して下さい。

 元ファイルは、Cドライブ直下の test フォルダに入れておいて下さい。
 印刷用ブックのデータを貼り付けるシート名は Sheet1
 印刷をするシート名は Sheet2 にして下さい。
  ↑これら3つは、コードの該当部分を適当な物に変更してください。

 マクロは A1セルにファイル名、A2セル以降にデータを貼り付けます。
 Sheet2のA1セルは、Sheet1のA1セルを参照する数式を入れておいて下さい。

 テストコードなので、印刷プレビューが表示されます。
 「閉じる(C)」を押して、プレビューは閉じてください。
 上手くいく様であれば、コード内の「PrintPreview」の部分を
 その下の行に書いてある「PrintOut」に変更して下さい。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.