こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

実行時はEXCEL自体を非表示にし、印刷時はワークシートのコントロール(Microsoftバーコードコントロール9.0)を表示したい

EXCEL2002sp3です。
実行時はEXCEL自体を非表示にし、印刷時はワークシートのコントロール(Microsoftバーコードコントロール9.0)を表示したいと思います。
Application.Visible = False 実行後、コントロールのあるワークブックをOPENすると、Application.Visible が True となりEXCELが表示されてしまいます。
バーコードのプロパティのVisibleをFalseに設定してから、実行させると、EXCELは表示されないのですが、今度はバーコードが印刷されません。この時バーコードのプロパティのPrintObjectはTrueにしています。
何か間違っているのでしょうか?

投稿日時 - 2008-07-11 20:39:59

QNo.4168994

困ってます

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

Excelが表示されても、印刷後、直ちに
application.visible=false
で再度、非表示するではいけませんか? これが簡単ですけどね!!

どうしても というならAPIですが・・・。

バーコードコントロールのプロパティのVisibleは、Falseに設定しておいてください。

'=============================================================
Private Declare Function LockWindowUpdate Lib "User32" (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "User32" () As Long
Sub 印刷()
  Call LockWindowUpdate(GetDesktopWindow())
  DoEvents
  With Workbooks.Open(ThisWorkbook.Path & "\bk1.xls")
                      ↑バーコードが設定されたブック
   With .Worksheets(1)
     .OLEObjects("BarCodeCtrl1").Visible = True
     .PrintOut
     End With
   .Close False
   End With
  Application.Visible = False
  Call LockWindowUpdate(0)
End Sub

試してみてください。
尚、バーコードコントロールには、いくつも
不具合がありそうですよ!!

投稿日時 - 2008-07-12 08:28:51

お礼

土日をはさんだので、お礼と報告が遅くなり申し訳ありませんでした。

今日午前中、ご提示いただいた2つの方法でやってみました。
Application.VisibleがTrueになった直後と、印刷直後にFalseにしました。やはり印刷に1秒くらいかかるようで、その間画面が表示されていました。そこで、APIを使った方法だと、希望通りの動きになりました。バーコードコントロールのVisibleはTrueのままでいけるようです。確かにバーコードコントロールはよくわからないことがありますね。(私だけかもしれませんが)

ひとりで1週間悩んでいました。とても助かりました。ありがとうございます。

投稿日時 - 2008-07-14 13:57:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問