web-dev-qa-db-ja.com

エントリの変更日でテーブルを並べ替えることはできますか?具体的には、VBAからオブジェクトの最終変更時刻にアクセスする方法は?

非常に長いテーブルの特定のデータを蓄積し、頻繁に変更するMSWord文書があります。そこで、行の最新の変更時刻でデータを並べ替えたいと思います。もちろん、手動で変更時間を入力する列を追加すれば、これは機能しますが、可能であればこれを避けたいと思います。

より具体的な質問で保留になっているので、それに応じて修正しようとしています。

私が特に望んでいるのは(そして私はそれを自分でできる)これです:

MS Wordには変更の追跡などの機能があるため、テキストの変更された各部分には、最終変更時刻を何らかの形式で記録する必要があります。

私の質問は、Visual Basicマクロ内からこの情報にアクセスするにはどうすればよいですか? ThisTable.ThisCell.ModificationTime()やThatTable.CurrentRow.LastModificationSessionTime()などのようなものを意味します。

これはExcelワークシート用です。データは列Aに入力または変更されます。マクロは列Bに日付/時刻を自動的に入力します。次に、マクロは列A&Bを列B、最新のものを一番上に置きます。

ワークシートのコード領域に次のイベントマクロを入力します。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    Dim AB As Range
    Set A = Range("A:A")
    Set AB = Range("A:B")

    If Intersect(Target, A) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
        Target.Offset(0, 1) = Now
        AB.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Application.EnableEvents = True
End Sub

ワークシートコードであるため、インストールが非常に簡単で、自動的に使用できます。

  1. excelウィンドウの下部にあるタブ名を右クリックします
  2. [コードの表示]を選択します-これによりVBEウィンドウが表示されます
  3. ものを貼り付けて、VBEウィンドウを閉じます

懸念がある場合は、最初にトライアルワークシートで試してください。

ブックを保存すると、マクロも一緒に保存されます。 2003年以降のバージョンのExcelを使用している場合は、ファイルを.xlsxではなく.xlsmとして保存する必要があります。

マクロを削除するには:

  1. 上記のようにVBEウィンドウを表示します
  2. コードをクリアする
  3. vBEウィンドウを閉じる

一般的なマクロの詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/Excel/getstarted.htm

そして

http://msdn.Microsoft.com/en-us/library/ee814735(v = office.14).aspx

イベントマクロ(ワークシートコード)の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/Excel/event.htm

これを機能させるには、マクロを有効にする必要があります!

2
Gary's Student