• ベストアンサー

Access2003で項目の書式一括変換

Access2003 複数(30以上)のレポートすべてに "now()" という項目があります。 その項目書式をすべて 「平成**年**月**日(曜日)」 に変更する モジュールを教えていただけませんか。 VBの知識がないので、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

おじゃまします 試される時にはテスト用の環境で行ってください。 標準モジュールに以下を転記し、実行します。 Public Sub Sample()   Dim db As DAO.Database   Dim ctn As DAO.Container   Dim doc As DAO.Document   Dim rpt As Report   Dim ctl As Control   Set db = CurrentDb   Set ctn = db.Containers("Reports")   For Each doc In ctn.Documents     DoCmd.OpenReport doc.Name, acViewDesign     Set rpt = Screen.ActiveReport     For Each ctl In rpt.Controls       If (ctl.ControlType = acTextBox) Then         If (ctl.ControlSource = "=Now()") Then           ctl.Format = "gggee年mm月dd日(aaa)"           Exit For         End If       End If     Next     DoCmd.Close acReport, doc.Name, acSaveYes     Set rpt = Nothing   Next   Set ctn = Nothing   Set db = Nothing End Sub やっていることは、存在するレポートの名前を得るために CurrentDb.Containers("Reports").Documents で管理されているレポート分処理を回します。 1つのレポートをデザインで開き、レポート内にあるテキストボックスを見ていきます。 コントロールソースが "=Now()" となっているものの書式を "gggee年mm月dd日(aaa)"  に設定します。 その後レポートを閉じます。( acSaveYes で保存することになります) "gggee年mm月dd日(aaa)" の表示結果は、 平成23年06月02日(木)  に 書式ではなく "=Now()" 自体を置き換えるのなら "=Format(Now(),'gggee年mm月dd日(aaa)')" と置き換えれば良さそうです。 コントロールソース内の記述の一部 "Now()" を・・・ なら、上記の応用で If 文のところは Like で、置き換えは Replace で・・・ レポートの基がクエリで、そこに記述している "Now()" ならば、 クエリの修正が必要になります。 単純に Now() AS XXXX のようにしているのなら、 前述した処理でコントロールソースが XXXX のものに対して行えば・・・・ でも単純なループ処理にはならないので、手修正が楽だと思います。 くれぐれも、試される時にはテスト用の環境で行ってください。 参考にする/しない等々含め、すべて自己責任でお願いします。

noname#136890
質問者

お礼

完璧です。感謝します。 またこのような質問にお付き合いください。 ありがとうございました。

その他の回答 (1)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

> VBの知識がないので、よろしくお願いします お好きなところで学習してください。 http://www.google.co.jp/search?hl=ja&source=hp&biw=1005&bih=618&q=access+vba+%E5%85%A5%E9%96%80&aq=2&aqi=g10&aql=&oq=Access+vba+ 質問に曖昧な点があって、回答しても無駄になるかもしれませんので 直接の回答は致しません。 というか、作成依頼のように見えますしね。

noname#136890
質問者

お礼

ありがとうございました。 今後参考にします

関連するQ&A