- ベストアンサー
ワードの文中の日付抽出
会議資料をワードで作成しています。 文章の中に、日付(と曜日)が記載してあり、その日付と曜日が正しいかのチェックを、自動で行うことは可能でしょうか? 抽出して比較とか、作業用にエクセルに張り付けるとか、少し手作業があるのは構いません。 今は、目で見て確認しているため、精度向上と時間短縮する方法が知りたく、質問いたしました。
- piro-roron
- お礼率26% (4/15)
- オフィス系ソフト
- 回答数12
- ありがとう数3
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
XX月XX日(曜)~XX月XX日(曜) 指摘を受け気づきましたが、このケースも、 文章の先頭(厳密には5文字目以前)から始まる場合に 検査対象にならないのと同じ理由で、後者側が検査対象になりません。 いくつかヒットしないケースがあるかもしれないと危惧していましたが、 このケースには気づきませんでした。 また、検査してOKだった時にも結果を表示したい場合と 表示したくない場合とがあるとのことなので、 上記対応も含めコードを書き直してみました。 これなら、 XX月XX日(曜)~XX月XX日(曜) の場合も、 文章の先頭から始まる場合も 対応しているはずです。試してみてください。 なお、XX月XX日(曜)の文字列の途中で明示的に改行している場合は 検査対象になりません。 Option Explicit Const MyNen = 3 '年が省略されている場合に見なす令和の年(1~99) Sub DateCheck() Dim SPos As Long Dim EPos As Long Dim WorkStr As String Dim rc As Integer rc = MsgBox("OKの場合も検査結果を表示しますか?", vbYesNo + vbQuestion, "確認") ActiveDocument.Bookmarks("\StartOfDoc").Select With Selection.Find .Text = "([0-9| ]{1,2}月)([0-9| ]{1,2}日)([\(|()]?[(\)|)])" .MatchFuzzy = False .MatchWildcards = True Do While .Execute SPos = Selection.Range.Start EPos = Selection.Range.End If SPos < 5 Then '※ SPos = 0 Else SPos = SPos - 5 '※ End If WorkStr = ActiveDocument.Range(SPos, EPos).Text If Format(GetDay(WorkStr), "aaa") = _ Left(Right(WorkStr, 2), 1) Then If rc = vbYes Then 'OKの場合 MsgBox "OK:" & _ Format(GetDay(WorkStr), "GGGE年M月D日") & Right(WorkStr, 3) End If Else 'NGの場合 MsgBox "★NG:" & _ Format(GetDay(WorkStr), "GGGE年M月D日") & Right(WorkStr, 3) End If Loop End With ActiveDocument.Bookmarks("\StartOfDoc").Select '※の5は、"令和x年"、"令和xx年"を想定した文字数 End Sub '//------------------------------------------------ Function GetDay(InText As String) As Date '年月日を取得 Dim y As Long Dim m As Long Dim d As Long y = GetY(InText) m = GetM(InText) d = GetD(InText) GetDay = DateSerial(y + 2018, m, d) End Function '//------------------------------------------------ Function GetD(InText As String) As Long '日を取得 Dim i As Long If IsNumeric(Left(Right(InText, 6), 1)) = False Then GetD = Val(Left(Right(InText, 5), 1)) Else GetD = Val(Left(Right(InText, 6), 2)) End If End Function '//------------------------------------------------ Function GetM(InText As String) As Long '月を取得 If Left(Right(InText, 7), 1) = "月" Then If IsNumeric(Left(Right(InText, 9), 1)) = False Then GetM = Val(Left(Right(InText, 8), 1)) Else GetM = Val(Left(Right(InText, 9), 2)) End If End If If Left(Right(InText, 6), 1) = "月" Then If IsNumeric(Left(Right(InText, 8), 1)) = False Then GetM = Val(Left(Right(InText, 7), 1)) Else GetM = Val(Left(Right(InText, 8), 2)) End If End If End Function '//------------------------------------------------ Function GetY(InText As String) As Long '令和暦で年を取得 Dim i As Long Dim FromY As Long Dim ToY As Long Dim wkY As Date For i = 11 To 15 If Left(Right(InText, i), 2) = "令和" Then FromY = i - 2 Exit For End If Next i For i = 8 To 10 If Left(Right(InText, i), 2) = "年" Then ToY = i + 1 Exit For End If Next i wkY = Val(Left(Right(InText, FromY), FromY - ToY)) If wkY = 0 Then GetY = MyNen Else GetY = wkY End If End Function
その他の回答 (11)
- kkkkkm
- ベストアンサー率65% (1623/2463)
日付と曜日の関係が正しいかどうかということでしたら 日付をエクセルにコピーして A1に日付があればB1にでも =TEXT(A1,"aaaa") とすればその日付にたいする曜日が表示されます。
補足
ご回答ありがとうございます! ワードは、15ページくらいあり、文章の中に日付が入っています。 一つずつセルにコピーしていくとなると、かなりの数になるので、 できれば、一気に文章全体でコピーして、そのあと確認するか、ワードから日付だけを一括で抽出(◯月◯日(曜日)という記載で統一)し、まとめて確認できたら…と思っています。 ワードからエクセルに一気にコピーすると、ワードの1文章単位でエクセルの1セルにコピーされますが、1文章内に2回、日付が出てくる場合もあります。
- 1
- 2
関連するQ&A
- ワードの日付をエクセルの日付に変えたいのですが。
どなたかエクセルに詳しい方にお尋ねします。 ワードでできたリストがあり、たとえば、10 Mar 2000のように英語の日付が入っています。これをエクセルに貼り付けることはすぐにできたのですが、エクセルのセルはこれを文字と認識してしまい、日付とは認識しないのです。この日付を元に年齢計算などをしたいので、どうしても日付として認識してもらいたいのです。どうすればよいのでしょうか。データは2000以上あるので、手作業で変更することは不可能なのです。お願いします。
- ベストアンサー
- オフィス系ソフト
- ワードでの日付の取り扱い
WORD2003を使用しています。 Excelで出来た事なのですが、WORDで出来る方法ありましたらご教授下さい。 項目(1) 日付を入力(10/4) ⇒ 2006/10/4 項目(2) 上記項目(1)の日付+1が自動セット ⇒ 2006/10/5 項目(3) 上記項目(2)の日付+1が自動セット ⇒ 2006/10/6 宜しくお願いします
- ベストアンサー
- オフィス系ソフト
- エクセルの日付で抽出し、
日付でデータを抽出しその隣の列の金額の数字を別シートに合計したいのですが いい方法があったら教えて欲しいです。 なお、日付はバラバラです。7月もあれば8月もあるので自動的に抽出できる方法ありますか? 日付を入力すれば8月の分は8月金額合計へへ9月の分は9月の金額合計へというようなかt5亜地にしたいです。難しいとおもうので、また、エクセルが得意ではないので 細かく分かりやすく教えていただけたら助かります。 日付 金額 7/1 100000 8/1 200000 8/25 100000 7/20 20000 これを別シートに自動で金額が入るようにしたいのです。 7月合計 120000 8月合計 300000 9月合計 ・・・・・ というようにできたらお願い致します
- ベストアンサー
- オフィス系ソフト
- ワードで自動的に未来の日付を入れる
エクセルでは自動で日付を入れるときに算式に+1とか 入れると次の日が入ります。 ワードではどうやれば良いのでしょうか?もしくは出来ないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- アクセスで日付を入力すると曜日がついてきちゃう
アクセス2002を使い始めたばかりの初心者です。 フォームで日付の入力をすると日付のみしか出てこないのですが、テーブルの方を見ると日付と一緒に曜日が書かれています。 またクエリの抽出条件で日付を入力すると、曜日が自動的にくっついてきて「指定した式の構文が正しくありません」と出てしまいます。 自分でそうしたものなのか、さっぱりわかりません。 とても困っています。 どなたか教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 横型カレンダーから日付を抽出するには
横型カレンダーに、それぞれの工程が記載されている表があります。 NETWORKDAYSで発注~納品の日数を出すにはどうすればいいでしょうか? またはこれを工程ごとに日付を抽出する たとえば 発注日 2/23 納品日 3/1 のように別のセルに落とす方法はありますか? excel2007です。
- ベストアンサー
- オフィス系ソフト
- Wordでの日付入力なのですが・・・・・・
Wordで書面を作成する際に作成日付を入力を「挿入」TABの「日付入力」から入力すると日付が変わりますと書面の日付も自動的に変わりますが、これをEXCELのCtrl +セミコロンの様に一旦入力すると日付が変わっても入力した日付のままにしておく方法はありませんか?いちいち入力せずに一発簡単入力方法を教えてください。
- ベストアンサー
- その他MS Office製品
- ワード エクセル 日付表示について
お世話になります。 ワード、エクセル共に、 文書を作成、更新(又はプリントアウト)した時に、 自動的に日付を入れることはできませんでしょうか? (いちいち設定せずに、過去に作成した文書も、です) ワードなら、右上に入れられるのかもしれませんし、 エクセルなら、ヘッダー、フッダーでできるのかもしれませんが、 できれば、右下に入れたいのです。 (不可能ならどこでもよいのですが、 ワード、エクセル、同じ位置に入るとありがたいです) とにかく、一番は、自動で入って欲しいのです。 説明がわかりにくいかもしれませんが、 文書をプリントアウトした時に、 手動でゴム印を押す感覚です。 よろしくお願い致します。
- ベストアンサー
- Windows XP
- ワード2002での日付挿入について
ワードに日付を挿入するため、「挿入」→「日付と時刻」→「カレンダーの種類」→「西暦」→表示形式選択後、[自動的に更新する]をチェックし[OK]をクリックしたら、 {TIME\@"yyy'年'M'月'd'日'"} と表示されます。コピー&ペイストで他に貼り付けたり、印刷プレビューを見る限りはちゃんと数字で表わされるのですが・・・。 こういうものなんでしょうか?ワードに日付を入れた時点でちゃんと数字が入るようにするにはどうしたら良いのでしょうか。 アドバイス宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- 日付を自動表示させたい
Excelを使い、一覧表(メンバー表)を毎日作る作業を行っています。 メンバーは変動があるので、VLOOKUPを使いコード番号の入力だけで、氏名を表示させるように設定してありますが、日付と曜日だけでも立ち上げるたびに自動で表示できたら便利だと考えています。 そんな方法などあるのでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
何度も本当にありがとうございます! 実際の会議資料で使わせていただいています。 ~で記載の部分も、チェック対象となりました。 ありがとうございます!!