Microsoft Access 掲示板

access vba でselect case を使いたいです。

7 コメント
views
4 フォロー
a="印刷物1"
b="印刷物2"
c=msgbox(a & vbcrlf & b & "印刷しますか?")
set d=createobject("shell.application")
set e=createobject("access.application")
with e
.visible=true
d.minimizeall
.opencurrentdatabase("フルパス")

with e.printer
 .leftmargin=0

end with
.docmd.echo false
.docmd.openquery a
.docmd.printout 
.docmd.openquery b
.docmd.printout
.docmd echo true

.quit
end with
else
end if

上のコードでクエリの印刷を行っていますが、if 分の所を inputobox関数にし分岐を多数できるようにselect case文を入れて例えば、戻り値が100なら印刷物1を印刷みたいなことをやりたいのですが、余白サイズ、インスタンス生成はその都度行う必要があるのでしょうか?条件間の記述も仕方がわかりません。VBSでも使えるようにフォームは使用しません。ご教授お願いいたします。

HY
作成: 2019/12/07 (土) 16:23:26
最終更新: 2019/12/08 (日) 11:39:26
通報 ...
1

このVBAはAccessファイルに記述してあるのでしょうか。それともExcelなど他のOfficeのファイルに記述してあるものでしょうか。

2

excelに記述してあります。vbs で使えるように実行時バインドで記述してあります。宜しくお願い致します。

3

if 分の所を inputobox関数にし分岐を多数できるようにselect case文を入れて例えば、戻り値が100なら印刷物1を印刷みたいなことをやりたいのですが、余白サイズ、インスタンス生成はその都度行う必要があるのでしょうか?

呈示のコードにはIf文はないですが?
もう少しやりたいことを具体的に説明してください。

access.application のインスタンスは一回生成して使いまわしてOKです。
余白サイズも application の Prunter に設定してあるので一回でOKです。

4

 VBA
a="印刷物1"
b="印刷物2"
c=msgbox(a & vbcrlf & b & "印刷しますか?")

if c=6 then
set d=createobject("shell.application")
set e=createobject("access.application")
with e
.visible=true
d.minimizeall
.opencurrentdatabase("フルパス")

with e.printer
 .leftmargin=0

end with
.docmd.echo false
.docmd.openquery a
.docmd.printout
.docmd.openquery b
.docmd.printout
.docmd echo true

.quit
end with
else
end if

大変申し訳ありません。if文が抜けていました。
if文による分岐をselect case で行いinputbox関数の戻り値を利用して多数の印刷物を印刷出来るものを作りたく思っていますが、コンパクトにするにはどうすれば良いか分かりません。条件分岐事に最小化、余白設定のコードが必要なのか、それを回避する策はあるかが分かりません。ご教授お願い致します。

5

with e
.visible=true
d.minimizeall
.opencurrentdatabase("フルパス")

此処の部分も条件分岐事に表記が必要でしょうか?
余白設定は、入れなくて良いのは、分かりました。
印刷のやり方でクエリを一々開く必要があるかも分かりません。乱文申し訳ありません。ご教授お願い致します。

6

印刷したいクエリが同じデータベースファイル内にあるのなら必要ありません。
別のデータベースファイルにあるのなら必要になります。その場合は、開いたデータベースを閉じる処理も必要になります。

7

何とか上手く作れました。有難う御座いました。