Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


234 / 500 ページ ←次へ | 前へ→

【8577】Re:Printerオブジェクトを使用したVBAでの...
発言  leo  - 06/9/14(木) 15:38 -

引用なし
パスワード
   返信ありがとうございます。

確認しました。『8』でした。ですが、8を直接prt.PaperSizeに代入しても
用紙サイズを反映してくれません。

実は実際に私が作成しているモジュールの処理の流れは以下です。

1.コンボにてプリンタを選択、
2.選択したプリンタの用紙ID一覧を取得
3.取得した用紙ID一覧から用紙を選択してレポートの印刷を行う

というもので、用紙一覧の取得、選択部分はできたのですが、選択した
用紙サイズをprt.PaperSize に反映できずに困っています。

プリンタによってできる場合とできない場合があるのでしょうか?一応
2台のプリンタで(KONICA MINOLTA C450 PCLとKyocera LS-6800 KX)
試したのですが両方とも反映されてくれませんでした。なお、プリンタの
選択はうまく実行されます。


▼立ち寄り さん:
>下記の値(acPRPSA3)はプリンタによって使用できないって
>どこかのサイトで見かけましたよ。
>だからかわりにプリンタの用紙ID?を確認して
>設定するみたい。
>
>>15:  prt.PaperSize = acPRPSA3 ←数値を指定に変更
>
>ページ設定のプロパティを変更してレポートを保存後、
>イミディエイトウインドウで値を確認できませんか?
・ツリー全体表示

【8576】Re:Printerオブジェクトを使用したVBAでの...
回答  立ち寄り  - 06/9/14(木) 14:02 -

引用なし
パスワード
   下記の値(acPRPSA3)はプリンタによって使用できないって
どこかのサイトで見かけましたよ。
だからかわりにプリンタの用紙ID?を確認して
設定するみたい。

>15:  prt.PaperSize = acPRPSA3 ←数値を指定に変更

ページ設定のプロパティを変更してレポートを保存後、
イミディエイトウインドウで値を確認できませんか?
・ツリー全体表示

【8574】Printerオブジェクトを使用したVBAでのレ...
質問  leo  - 06/9/13(水) 18:05 -

引用なし
パスワード
   環境:AC2003 , Windows XP SP2

お世話になっております。

現在、Printerオブジェクトを使用したVBAでのレポートのページサイズ設定の
ロジックを作成しております。

このサイトを始め、いろいろなサイトを回ってそれらしいコードを書くことが
できたのですが、PageSizeプロパティの変更がうまく反映されてくれません。
具体的には、15行目のPageSizeプロパティの設定がレポートに反映されず、
デザインビューで設定したA4で印刷されてしまいます。

手を尽くした(つもり)なのですが、解決法を見つけることができませんでした。
当方初心者のため、常識的な設定が抜けているのかと思い投稿させていただきました。何かご存知の方、ご教示下さい。

コードは以下です。

1:Public Function print_Report() As Byte
2:On Error GoTo print_Report_Err
3:
4:  Dim prt As Printer
5:  Dim valPaperName As Variant
6:  
7:  Echo False
8:  
9:  'レポートを印刷対象として設定
10:  DoCmd.SelectObject acReport, REPORT_NAME, True
11:  
12:  Set prt = Application.Printers("test")
13:
14:  ' 選択したプリンタをこのセッションで通常使うプリンタとして設定します。
15:  prt.PaperSize = acPRPSA3
16:
17:  Set Application.Printer = prt
18:
19:  DoCmd.openReport REPORT_NAME, acViewNormal, , , , acHidden
20:
21:print_Report_Exit:
22:  Echo True
23:
24:  print_Report = 0
25:  Exit Function
26:
27:print_Report_Err:
28:  MsgBox Err.Description
29:End Function
・ツリー全体表示

【8573】Re:文字列の丸めるにはどうすればいいでし...
お礼  石井  - 06/9/12(火) 20:26 -

引用なし
パスワード
   小僧さん
 問題解決!ありがとうございました。
・ツリー全体表示

【8572】Re:既定値への設定?
お礼  JINましん  - 06/9/8(金) 8:29 -

引用なし
パスワード
   ▼小僧 さん:おはようございます。
   
 ご教示ありがとうございました。 
 うまくできました。
 初心者なのでお手数をおかけしました。
 何かわからないことがあったら、また、ご教示ください。


>>> =DLookup("設定値","T_設定情報","設定名='代表者'")
>> =DLookUp("[名]","令コード","[令コード] =" & " [令コード]")
>
>JINましん さんがご提示の式ですと、
>
>=DLookUp("[名]","令コード","[令コード] = [令コード]")
>              ^^^^^^^^^^  ^^^^^^^^^^
>
>と同意になってしまい第3引数が必ずTrueを返すため、
>テーブル:令コードの一番初めのレコードを取ってきてしまいます。
>
>=DLookUp("[名]","令コード","[令コード] =" & [令コード])
>
>と2重引用符の外に出してあげましょう。
>
>※ 引用は最低限にしましょうね。
・ツリー全体表示

【8571】Re:既定値への設定?
回答  小僧  - 06/9/8(金) 0:02 -

引用なし
パスワード
   ▼JINましん さん:
こんばんは。

>> =DLookup("設定値","T_設定情報","設定名='代表者'")
> =DLookUp("[名]","令コード","[令コード] =" & " [令コード]")

JINましん さんがご提示の式ですと、

=DLookUp("[名]","令コード","[令コード] = [令コード]")
              ^^^^^^^^^^  ^^^^^^^^^^

と同意になってしまい第3引数が必ずTrueを返すため、
テーブル:令コードの一番初めのレコードを取ってきてしまいます。

=DLookUp("[名]","令コード","[令コード] =" & [令コード])

と2重引用符の外に出してあげましょう。

※ 引用は最低限にしましょうね。
・ツリー全体表示

【8570】Re:既定値への設定?
質問  JINましん  - 06/9/7(木) 17:53 -

引用なし
パスワード
   いろいろ回答ありがとうございます。
下記方法で何とかなりそうだったのですが、
またわかないことができてしまったので質問させてください。

=DLookUp("[名]","令コード","[令コード] =" & " [令コード]")
                          −−−−
                         |令コード|
                          −−−−
とレポートに入力し、令コードと合致した名を表示させたいのですが
レコードソースのクエリでは、令コード(例 4という数字)がちゃんと
表示されているのですがレポートになると決まって 1の数字の名を表示
させてしまいます。
これって何の設定がわるいのですかね?
文章じゃわかりづらいかもしれませんが回答よろしくお願いします。

>>印刷する際のレポートに仕掛けを作ってみてはいかがでしょうか。
>>
>>T_設定情報
>>ID 設定名 設定値
>>1 代表者 らあめん小僧
>>2 xxx  yyyy
>>・
>>・
>>
>>のような、色々な初期値を格納できるようなテーブルをあらかじめ作っておき、
>>
>>レポートに配置したテキストボックスのコントロールソースに
>>
>>=DLookup("設定値","T_設定情報","設定名='代表者'")
>>
>>の様に記述する事でレポートのレコードソースに関係のないテーブルから
>>情報を引っ張ってくることが可能ですね。
・ツリー全体表示

【8569】Re:コンボボックスにフィルタをかけたい
お礼  ゆずぽん  - 06/9/6(水) 11:44 -

引用なし
パスワード
   たんさん
ありがとうございます。
早速AccessClubを見たところ、それらしきものを見つけましたので
試してみたいと思います。
見にくい質問文でスミマセンでした。


▼たん さん:
># 内容欄の大きさに合わせて、手動で改行を入れて下さい。
># 引用しにくいし、見にくいので。
>
>コンボボックスには、フィルタという考えも、プロパティもありません。
>
>ですから、質問者の考え自体が間違っています。
>
>大分類のコンボボックスの結果で、中分類のコンボボックスのリストを
>変更させたいなら、中分類のコンボボックスのレコードソース側で、
>大分類のコンボボックスの結果を抽出条件にする必要があります。
>
>詳しい例は、AccessClubさんのコンテンツの中にあります。
・ツリー全体表示

【8568】Re:コンボボックスにフィルタをかけたい
回答  たん  - 06/9/6(水) 11:03 -

引用なし
パスワード
   # 内容欄の大きさに合わせて、手動で改行を入れて下さい。
# 引用しにくいし、見にくいので。

コンボボックスには、フィルタという考えも、プロパティもありません。

ですから、質問者の考え自体が間違っています。

大分類のコンボボックスの結果で、中分類のコンボボックスのリストを
変更させたいなら、中分類のコンボボックスのレコードソース側で、
大分類のコンボボックスの結果を抽出条件にする必要があります。

詳しい例は、AccessClubさんのコンテンツの中にあります。
・ツリー全体表示

【8567】コンボボックスにフィルタをかけたい
質問  ゆずぽん  - 06/9/6(水) 10:50 -

引用なし
パスワード
   こんにちは。
アクセス2000で商品登録のフォームを作成中です。後々の検索等に役立つよう商品登録の際に商品区分を一緒に登録できるようにしています。区分は大・中区分となっており、各テーブルを作成し、コンボボックスに連結させて選択できるようにしています。

大区分テーブル
IDa:オートナンバー(長整数)
名称:テキスト型(例:食品、文具のような内容を登録)

中区分テーブル
IDb:オートナンバー(長整数)
名称:テキスト型(例:チョコ、パン、ノート、消しゴムのような内容を登録)
大区分ID:長整数数値型(チョコなら大区分の食品のIDを入力)

このような設計になっていますが、こうすると大区分30くらいに対して中区分は300件ほどになってしまい、中区分をフォーム上で選択するのが大変になってしまいました。
そこで、大区分をコンボボックスで選択した内容に合わせて中区分にフィルタをかければ選択レコード数を減らせる!と思い。コンボボックスのプロパティ(変更時)にマクロでフィルタを入れてみたところ、「パラメータの入力:中区分!大区分ID」という値を要求されてるようなフォームが出てしまい、手詰まりになってしまいました。(出てきたフォームの意味も良く分かりません)
ちなみにマクロビルダで書いたマクロですが、

[中区分]![大分類ID]=[Forms]![登録画面]![IDa←cbo名]
テーブルをフォームの値でフィルタという内容にしてみました。

フィルタのかけ方も良く分かってなく、今までは色々試して運よく成功していましたが、今回はダメなようです。
テーブルの設計すら間違っていたらスミマセン。
ダメなところを教えてください。
・ツリー全体表示

【8566】Re:ACCESSのソース管理について
お礼  タロウ  - 06/9/6(水) 10:21 -

引用なし
パスワード
   ご返事が遅れました。
CVSについて調べてみます
ありがとうございました。


▼雅 さん:
>こんにちわ。雅です。
>
>>はあるのでしょうか、WEBで調べると Microsoft Office 2000 Developer
>>ではVisual SourceSafeが使えると書いてありましたが、現在の環境はDeveloperでは
>>ありません。
>
>手動でもよければCVSが使えるかもしれませんが、モジュール以外はかなり面倒
>だと思います。
>
>でわ。
・ツリー全体表示

【8565】Re:項目名を変数に
お礼  超初心者  - 06/9/5(火) 22:29 -

引用なし
パスワード
   ▼小僧 さん:
ご指導ありがとうございました。
今回のデータですが120万件ほどあるテーブルからの抽出で、フォームから複数条件を入れてEXCELに出力するように作っています。ただ項目が58項目と多いので、項目を減らすことでデータがグループ化され出力件数が減ると考えました。
EXCELですと65536件しか出力できない為何か良い方法はないかと質問をしました。ユーザーがクエリを各自で作ってもらえるば良いのですがACCESSが使えない方ばかりなのでVBAで項目を変数に出来ればと思いました。
フォームフィルターをVBAで呼び出す方法も良い方法です。
色々挑戦してみます。

>▼超初心者 さん:
>こんばんは。
>
>>58項目ある中からユーザーが欲しい項目を選択し、
>>尚且つ選択した項目の抽出条件を指定してレコードを抽出することは可能でしょうか?
>
>Accessの機能を借りるのであれば、ツールバーより
>
>[レコード] ⇒ [フィルタ] ⇒[フォームフィルタ]
>
>という機能があります。
>
>各項目で抽出条件を指定し、
>フィルタの実行ボタンを押すことでデータの抽出が可能です。
>
>VBAで呼び出すには
>
>DoCmd.RunCommand acCmdFilterByForm
>
>というコードで呼び出す事が可能です。
>
>
>ただ、こちらはAccessの機能を用いているだけですので
>細かいカスタマイズ等ができないという欠点はあります。
>
>VBAを駆使してフォームフィルタと同じ様な機能は作れると思いますが
>手間や工数との相談になって来るかと思われます。
・ツリー全体表示

【8564】Re:既定値への設定?
お礼  JINましん  - 06/9/5(火) 13:13 -

引用なし
パスワード
   ▼小僧 さん:
 回答ありがとうございます。
 下記方法で何とかなりそうですのでやってみます。
 ありがとうございます。


>
>> すべての書類に年月日と代表者名と文章を入れます。
>> 印刷時に書類の内容(入力する)を確認しながら印刷します。
>
>印刷する際のレポートに仕掛けを作ってみてはいかがでしょうか。
>
>T_設定情報
>ID 設定名 設定値
>1 代表者 らあめん小僧
>2 xxx  yyyy
>・
>・
>
>のような、色々な初期値を格納できるようなテーブルをあらかじめ作っておき、
>
>レポートに配置したテキストボックスのコントロールソースに
>
>=DLookup("設定値","T_設定情報","設定名='代表者'")
>
>の様に記述する事でレポートのレコードソースに関係のないテーブルから
>情報を引っ張ってくることが可能ですね。
・ツリー全体表示

【8563】Re:既定値への設定?
発言  小僧  - 06/9/5(火) 10:48 -

引用なし
パスワード
   ▼JINましん さん:
こんにちは。

> すべての書類に年月日と代表者名と文章を入れます。
> 印刷時に書類の内容(入力する)を確認しながら印刷します。

印刷する際のレポートに仕掛けを作ってみてはいかがでしょうか。

T_設定情報
ID 設定名 設定値
1 代表者 らあめん小僧
2 xxx  yyyy



のような、色々な初期値を格納できるようなテーブルをあらかじめ作っておき、

レポートに配置したテキストボックスのコントロールソースに

=DLookup("設定値","T_設定情報","設定名='代表者'")

の様に記述する事でレポートのレコードソースに関係のないテーブルから
情報を引っ張ってくることが可能ですね。
・ツリー全体表示

【8562】Re:ACCESSのソース管理について
発言    - 06/9/5(火) 9:28 -

引用なし
パスワード
   こんにちわ。雅です。

>はあるのでしょうか、WEBで調べると Microsoft Office 2000 Developer
>ではVisual SourceSafeが使えると書いてありましたが、現在の環境はDeveloperでは
>ありません。

手動でもよければCVSが使えるかもしれませんが、モジュール以外はかなり面倒
だと思います。

でわ。
・ツリー全体表示

【8561】Re:既定値への設定?
質問  JINましん  - 06/9/5(火) 8:43 -

引用なし
パスワード
   ▼小僧 さん:
 早速の回答ありがとうございます。
 なんか難しそうみたいですね。
 上手く伝わらないかもしれませんが一応この処理をしたい理由
 を書きます。

 代表者から皆(80人程度たまに追加することがある)
 に毎年一度〜二度書類を配付します。
 すべての書類に年月日と代表者名と文章を入れます。
 印刷時に書類の内容(入力する)を確認しながら印刷します。
 年月日と代表者名は共通なため1箇所の修正ですべて変更可能にしたいが
 年月日と代表者は何ヶ年後には変更する必要がある。
 (現在は打ちこみ)
 
 コード化して既定値にコードをいれておこうかと思ったのですが 
 あんまりよくないみたいですね。
 
 上記を読んで良い方法があればご教示ください。

>>テーブルのフィールドの既定値に他のテーブルの値を使用したいのですが
>>VBAではないかもしれませんが教えて頂けますでしょうか?
>
>テーブルの既定値の欄に何か関数を入れて…という事ではできないと思われます。
>
>DAOを使えば既定値の設定を変化させる事はできますが
>通常あまり行わない処理だと思われます。
>(テーブル作成時に既定値を設定する事はありますが、
> 運用の途中で変化させる事はあまりない事と思われます。)
>
>今回どういった事が要因で上記の様な事を行いたいと思われたのかを
>ご提示して頂くと、何か適切な回答がつくかもしれませんね。
・ツリー全体表示

【8560】Re:項目名を変数に
発言  小僧  - 06/9/4(月) 23:08 -

引用なし
パスワード
   ▼超初心者 さん:
こんばんは。

>58項目ある中からユーザーが欲しい項目を選択し、
>尚且つ選択した項目の抽出条件を指定してレコードを抽出することは可能でしょうか?

Accessの機能を借りるのであれば、ツールバーより

[レコード] ⇒ [フィルタ] ⇒[フォームフィルタ]

という機能があります。

各項目で抽出条件を指定し、
フィルタの実行ボタンを押すことでデータの抽出が可能です。

VBAで呼び出すには

DoCmd.RunCommand acCmdFilterByForm

というコードで呼び出す事が可能です。


ただ、こちらはAccessの機能を用いているだけですので
細かいカスタマイズ等ができないという欠点はあります。

VBAを駆使してフォームフィルタと同じ様な機能は作れると思いますが
手間や工数との相談になって来るかと思われます。
・ツリー全体表示

【8559】Re:既定値への設定?
発言  小僧  - 06/9/4(月) 22:36 -

引用なし
パスワード
   ▼JINましん さん:
こんばんは。

>テーブルのフィールドの既定値に他のテーブルの値を使用したいのですが
>VBAではないかもしれませんが教えて頂けますでしょうか?

テーブルの既定値の欄に何か関数を入れて…という事ではできないと思われます。

DAOを使えば既定値の設定を変化させる事はできますが
通常あまり行わない処理だと思われます。
(テーブル作成時に既定値を設定する事はありますが、
運用の途中で変化させる事はあまりない事と思われます。)

今回どういった事が要因で上記の様な事を行いたいと思われたのかを
ご提示して頂くと、何か適切な回答がつくかもしれませんね。
・ツリー全体表示

【8558】項目名を変数に
質問  超初心者  - 06/9/4(月) 22:11 -

引用なし
パスワード
   ACCESSのVBAは始めたばかりで悪戦苦闘しています。
58項目ある中からユーザーが欲しい項目を選択し、尚且つ選択した項目の抽出条件を指定してレコードを抽出することは可能でしょうか?
項目を変数にしてフォームからチェックボックスにチェックのある項目を代入してと考えたのですが、難しくて先に進みません。
何か参考になるサイトなどありましたら教えてください。
抽象的な質問で大変恐縮ですがどうぞ宜しくお願いします。
・ツリー全体表示

【8557】ACCESSのソース管理について
質問  タロウ  - 06/9/4(月) 19:51 -

引用なし
パスワード
   初心者ですが、よろしくお願いします。

使用OS WIN2000, ACCESSバージョン ACCESS2000

現在使用してるACCESSでのVBAのソース管理をしたいのです。
テスト環境で変更したソースが本番環境で動いているソース
より古いか、新しいかなど判断して更新したいのですが、そういったもの(方法)
はあるのでしょうか、WEBで調べると Microsoft Office 2000 Developer
ではVisual SourceSafeが使えると書いてありましたが、現在の環境はDeveloperでは
ありません。

できましたらご返答の方よろしくお願いします。


 
・ツリー全体表示

234 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084638
(SS)C-BOARD v3.8 is Free