- ベストアンサー
accessで多数のレポート操作
access2003 レポートが50種類ほどあり、すべてに同じ項目(テキスト)を追加したのですが 簡単に追加する方法をご教授ください。 配置する場所はほぼ同じ位置になります。 よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2への補足の返答です。 CreateReportControlでは、オブジェクト種類/配置場所(ヘッダーやフッター、詳細など)/オブジェクト名/上位置/左位置/幅/高さ といったプロパティだけが設定可能で、それ以外のフォントサイズや文字色等のプロパティは With ~ End With で指定します。 単純に obj.FontSize = 12 というように記述してもいいのですが、設定したいプロパティが多岐にわたる場合はWith文を使ったほうが見た目にも判りやすいかと思います。 なので、今回は、 With obj .Name = Contents .ControlSource = Contents '追加 .FontSize = 12 End With というようにWith文に追加していってください。 プロパティ名がわからないときは、レポートやフォームにテキストボックスを適用に作って、プロパティを表示し、該当プロパティの入力欄をクリックした状態でF1キーを押すとヘルプが出てきます。そこにかかれてあります。 例えば「背景スタイル」の欄をクリックしてF1を押すと、 expression.BackStyle となっていますので、プロパティは .BackStyle とし、 設定値はVisualBasicの欄を見ます。設定値を透明にしたい場合は 0となるわけです。 即ち、With文中に .BackStyle = 0 と書きます。 With文中ならば、追加する順番は関係ないのですが、同じプロパティを指定した場合は、後に記述したほうが反映されます。 With obj .fontsize =12 .fontsize =24 End With という場合は、フォントサイズは24ptになります。
その他の回答 (2)
- shut0325
- ベストアンサー率40% (490/1207)
No.1です。 フィールドを追加する場合は、ラベルの場合と若干異なります。 手順としてはテキストボックスを新規で追加し、その名前とコントロールソースを該当するテーブルのフィールド名にする必要があります。 該当レポートのレコードソースとなるテーブルにフィールドを新たに追加した という状況の場合、 Const Contents = "挿入テキスト"の"挿入テキスト"を「挿入したいフィールド名」にして、Set obj ~ End With までを下記のように書き換える必要があります。 '--以下 コード 'レポートにテキストボックスを作成する。 Set obj = CreateReportControl(rpt.Name, acTextBox, acDetail, , , LocX, LocY) With obj .Name = Contents .ControlSource = Contents End With '--コード終わり テキストボックスの幅、及び高さは、Withで指定しても良いしLocYの後ろにつなげてもかまいません。 例:CreateReportControl(rpt.Name, acTextBox, acDetail, , , LocX, LocY,幅,高さ) このときの幅や高さも左位置や上位置と同じく1cm=765単位で指定する必要があります。 分かりやすくするため、0.5*765(=0.5cm)という書き方が良いかと思います。
お礼
またまた ありがとうございます。 期待のことができそうです。 もう少しご教授お願いします creatReportControlで文字のサイズを指定したいのですが、"幅,高さ"プラス どのように記載すればいいですか? よろしくお願いします
- shut0325
- ベストアンサー率40% (490/1207)
50種類ほど=そのDBの全てのレポートというのであれば単純なコードを書けば実現できます。 モジュールに下記コードを追加して、レポートを閉じた状態でイミディエイトにChgTextとタイプして実行すればよいかと思います。以下の部分は任意に変更されてください。 Const LocX = 1 * 765: '左位置座標。1cm=765単位 Const LocY = 1 * 765: '上位置座標。1cm=765単位 Const Contents = "挿入テキスト": '表題名 及び With obj .FontSize = 12 .ForeColor = 255 .Name = "LabelText" End With 内容を確認・調整しながら保存(または保存しないで)→閉じるとしても50種程度ならさほど時間がかかることではないので、念のため、「保存して閉じる」命令はコメントアウトしています。 また、やり直し(一括削除・変更)がしやすいよう(一括削除)に名前(.Name)を指定しています。(例では"LabelText"という名前をつけています。) ---以下コード Sub ChgText() Dim obj As Control Const LocX = 1 * 765: '左位置座標。1cm=765単位 Const LocY = 1 * 765: '上位置座標。1cm=765単位 Const Contents = "挿入テキスト": '表題名 'DB内の全てのレポートに処理する。 For Each rpt In CurrentProject.AllReports 'デザインモードでレポートを開く。 DoCmd.OpenReport rpt.Name, acViewDesign 'レポートにラベルを作成する。 Set obj = CreateReportControl(rpt.Name, acLabel, acDetail, , Contents, LocX, LocY) '(オプション)With~End Withによるプロパティの変更。 '例は文字サイズ,文字色(アカ)を指定。他にも色をつけたり、書体を変更したり出来る。 With obj .FontSize = 12 .ForeColor = 255 .Name = "LabelText" End With '保存して閉じる。 'DoCmd.Close acReport, rpt.Name, acSaveYes Next rpt End Sub
お礼
早速 ありがとうございます。 テキストではなく、テーブルのデータの場合は Const Contents = "挿入テキスト": '表題名 を変更すればいいですか? もう少し教えてください お願いします
お礼
ありがとうございました すっきり解決しました