- ベストアンサー
Access2003で項目の書式一括変換
Access2003 複数(30以上)のレポートすべてに "now()" という項目があります。 その項目書式をすべて 「平成**年**月**日(曜日)」 に変更する モジュールを教えていただけませんか。 VBの知識がないので、よろしくお願いします。
- みんなの回答 (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 のものに対して行えば・・・・ でも単純なループ処理にはならないので、手修正が楽だと思います。 くれぐれも、試される時にはテスト用の環境で行ってください。 参考にする/しない等々含め、すべて自己責任でお願いします。
その他の回答 (1)
- m3_maki
- ベストアンサー率64% (296/460)
> 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+ 質問に曖昧な点があって、回答しても無駄になるかもしれませんので 直接の回答は致しません。 というか、作成依頼のように見えますしね。
お礼
ありがとうございました。 今後参考にします
お礼
完璧です。感謝します。 またこのような質問にお付き合いください。 ありがとうございました。