[[20120905161754]] 『フォルダ内のファイルのヘッダー情報を取得』(なめこ) ページの最後に飛ぶ

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

 

『フォルダ内のファイルのヘッダー情報を取得』(なめこ)

どこか忘れましたが、フォルダー内のファイル名の一覧を書き出すソースが
あって、便利なので使わせて貰っていたのですが、ヘッダー情報も書き足す
ように出来るでしょうか?(Excel2003 WindowsXP)

  B  C         D        E

 No ハイパーリンク   ファイル名  ヘッダー(右) 

                        ↑
                       ここに

標準モジュール
'---------------------------
Sub filName()
Dim MyF As String

'前回のデータをクリアー
Range("A4:F200").Select
Selection.Clear

'ファイル名の取得
Dim myRow As Long

myRow = 4
MyF = Dir(ThisWorkbook.Path & "\*")

Application.ScreenUpdating = False
If MyF <> "" Then

      Do Until MyF = ""
        Cells(myRow, "C").Select   'ハイパーリンク
        Cells(myRow, "B").Value = myRow - 3
        Cells(myRow, "D").Value = MyF  'ファイル名

        ActiveSheet.Hyperlinks.Add Anchor:=Selection, _
        Address:=Cells(myRow, "D").Value, TextToDisplay:="●"

         MyF = Dir()
         myRow = myRow + 1
      Loop

End If

'並べ替え
Range("C4:D100").Select

 Selection.Sort Key1:=Range("C4"), Order1:=xlAscending, Header:=xlNo, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlStroke

'罫線

    Range("B4:D100").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    Range("D3").Select

End Sub


問題点1
「ファイルのヘッダー」というものは存在しません。
ヘッダーは「シート」単位に設定するものだからです。

「ファイルに含まれるSheet1のヘッダー」なら存在します。
したがって、シートが複数あれば、ヘッダー情報は複数存在します。

「特定の名前のシート」が対象となる全てのブックにあるのならば、
シート名を指定して取得することは出来ますが、
何らかの手段でそのブックを開く必要があります。

シート名は各ブックで特定できますか?
(各ブックにシートが必ずひとつ、ということなら問題にはなりません)

問題点2
たとえば、次のようなコードでメッセージボックスに左ヘッダーを表示することは出来ます。

MsgBox ActiveSheet.PageSetup.LeftHeader

ですが、ボタンで設定する「ページ数」や「シート名」などは制御コードで取得されるので、
&P とか、 &A とか一見何のことか判断しづらいものも含まれます。
例えば「印刷枚数」をヘッダーから取得したい、というご希望でも
ヘッダー情報からは「&N」という制御コードしか取得できません。

で、問題となるのは、「ヘッダーから得たいと思っている情報は何ですか」ということです。
つまり、その情報がヘッダーから取得できるものとは限らない、ということです。

(みやほりん)


みやほりんさま

ご回答ありがとうございます。
書き方がまずかったですね、シートのヘッダーのことです。

シート名を取得してとのことですが、ファイルを開かずに
複数シートのヘッダー情報一括書き換えが出来るマクロが
実際に存在するため、その逆の取得が出来るものかと
思った次第です。

ヘッダーから得たいと思っている情報は何かとのことですが、
書類のヘッダーに作成日などを付けて、この日付で最新の版
の書類かどうかを管理している私の台帳と照合しています。

フォーマットは多数の方が都合に合わせて書き換えて日付を
更新しています。更新した場合は報告してくれるのですが
忘れる方も多々いるため、確認作業が大変です。

書類のフォーマットは一箇所のフォルダ内に保管されている
ので、前述のマクロに追加できたらいいなと思いました。
(なめこ)


>その逆の取得が出来るものか
書き換えの場合は均一にするのが目的ならば、同じ設定を繰り返し処理すればよいので、
取得よりは単純かと。
ヘッダーの取得の場合は、「どのシートのどのヘッダーがこういう情報だ」というのを
確認できるような出力の仕様を考えないといけませんよね。
そういうのも考えてほしい、というのが質問の本質なのかもしれませんが。

>書類のヘッダーに作成日などを付けて
これはユーザーが「ヘッダーに日付に相当する文字列」を直接入力している、
ということですか?
そういう作業をちゃんとやっているかどうか、確認をしたい、ということ?

もし必ずやらなければいけないことなら、ヘッダーの設定自体を
自動的、強制的にマクロで行ったほうが、後の心配が無いような気がします。
「都合に合わせて書き換えて」っていうのがネックになるかもしれませんが。
(みやほりん)


コメント返信:

[ 一覧(最新更新順) ]


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