Excel VBA質問箱 IV

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

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


4888 / 13644 ツリー ←次へ | 前へ→

【53789】Printformについて VBA初心者 08/2/7(木) 12:02 質問[未読]
【53790】Re:Printformについて ichinose 08/2/7(木) 12:32 発言[未読]
【53807】Re:Printformについて ichinose 08/2/7(木) 21:22 発言[未読]
【53808】Re:Printformについて ichinose 08/2/7(木) 21:29 発言[未読]
【53809】Re:Printformについて neptune 08/2/7(木) 21:42 発言[未読]

【53789】Printformについて
質問  VBA初心者  - 08/2/7(木) 12:02 -

引用なし
パスワード
   こんにちは。
UserFormのPrintformメソッドを使ってフォームをそのまま印刷させたいと思って
実際にやってみたのですが、フォームに配置しているWebBrowserコントロールのみ
印刷されませんでした。
ここにはインターネット経由(URLを開く)でダウンロードした画像を表示していて
それも印刷をしたいのですが、WebBrowserのプロパティなどを見ても
特にそのような項目がありませんでした。
イメージコントロールだとローカルの画像しか表示できない(?)みたいなので
WebBrowserを利用していたのですが・・・

解決策が浮かばなかったため質問させていただきました。
よろしくお願いいたします。

【53790】Re:Printformについて
発言  ichinose  - 08/2/7(木) 12:32 -

引用なし
パスワード
   ▼VBA初心者 さん:
こんにちは。
ユーザーフォームの印刷? それともブラウザーの中身の印刷だけで可ですか?

ユーザフォームの印刷が目的なら
ハードコピーの内容をシートに貼り付けて
その貼り付けた内容を印刷してみては?

APIが必要です。

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=18531;id=excel

これを参考にしてみてください


IEに対象URLを表示させて印刷させる方法

www.roy.hi-ho.ne.jp/mutaguchi/wsh/object/ie.htm

IEの操作は ↑これを参考にしてください


試していませんが、参考にしてください。

仕事がおわったら、私も試して見ます。
(夜になりますが)

【53807】Re:Printformについて
発言  ichinose  - 08/2/7(木) 21:22 -

引用なし
パスワード
   こんばんは。
試してみました。両方印刷は可能でしたよ!!

まず、ハードコピーで印刷する方法

新規ブックにて、ユーザーフォーム(UserForm1)を作成してください。

このUserForm1には、
  ウェーブブラウザーコントロール(WebBrowser1)一つと
  (サイト表示用)
  コマンドボタン(CommandButton1)を配置してください
  (印刷用) 

標準モジュールに
'===========================================================
Sub main()
  UserForm1.Show
End Sub


UserForm1のモジュールには

'============================================================
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
  bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetVersionExA Lib "kernel32" _
   (lpVersionInformation As OSVERSIONINFO) As Integer
Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type
Private blnAboveVer4 As Boolean
Const KEYEVENTF_KEYUP = &H2
Const VK_SNAPSHOT = &H2C
Const VK_MENU = &H12
'============================================================
Private Sub CommandButton1_Click()
  If blnAboveVer4 Then
   keybd_event VK_SNAPSHOT, 1, 0, 0
  Else
   keybd_event VK_MENU, 0, 0, 0
   keybd_event VK_SNAPSHOT, 0, 0, 0
   keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
   keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
   End If
  DoEvents
  With Workbooks.Add
   With .Worksheets(1)
     .Range("a1").Select
     .Paste
     .PrintOut
     End With
   .Close False
   End With
End Sub
'============================================================
Private Sub UserForm_Initialize()
  Dim osinfo As OSVERSIONINFO
  Dim retvalue As Integer
  osinfo.dwOSVersionInfoSize = 148
  osinfo.szCSDVersion = Space$(128)
  retvalue = GetVersionExA(osinfo)
  If osinfo.dwMajorVersion > 4 Then blnAboveVer4 = True
  WebBrowser1.Navigate "HTTP://www.google.co.jp/"
'             半角httpに直して実行すること
End Sub

これでmainを実行してください。

ユーザーフォームにホームページが表示されたら(上記コード例ではGoogle)、
ボタンをクリックしてください。

UserForm1の内容を印刷します。
ユーザフォームの大きさによっては、ページを跨いで印刷されるかもしれませんが、
1ページに納めて印刷したい場合は、ページ設定を操作してください。

【53808】Re:Printformについて
発言  ichinose  - 08/2/7(木) 21:29 -

引用なし
パスワード
   IEから、指定サイトを印刷する方法

新規ブックにて

まず、参照設定にて、
 「Microsoft Internet Controls」にチェックを入れてください。

Thisworkbookのモジュールに

'==============================================================
Option Explicit
Dim WithEvents ie As InternetExplorer
Dim pr As Long
'==============================================================
Sub hp_print()
  Dim ans, idx
  Dim txt As String
  Dim regex As Object
  Set ie = CreateObject("InternetExplorer.application")
  ie.Visible = True
  ie.Navigate2 "HTTP://www.google.co.jp/"
'          ↑半角のhttpに直して実行すること
  Do While ie.Busy = True Or ie.ReadyState <> 4
    Loop
  pr = 0
  ie.ExecWB 6, 2, 0, 0
  Do While pr = 0
    DoEvents
    Loop
  ie.Quit
  Set ie = Nothing
End Sub
'==============================================================
Private Sub ie_PrintTemplateTeardown(ByVal pDisp As Object)
  pr = 1
End Sub


として、hp_printを実行してください。
前例と同様にGoogleを印刷します。

どちらかで検討してみてください。

【53809】Re:Printformについて
発言  neptune  - 08/2/7(木) 21:42 -

引用なし
パスワード
   ▼VBA初心者 さん:
こんにちは

すでにResがついてますが、MSにもサンプルはあります。
難易度(高)の部類には入りますが、将来の参考にでもして下さい。
「Visual Basic で画面またはアクティブ ウィンドウをクリップボードにコピーする方法 」
h tp://support.microsoft.com/kb/240653/ja
「画面、フォーム、ウィンドウを取り込んで印刷する方法」
h tp://support.microsoft.com/kb/161299/ja
印刷そのものはVBのオブジェクトを使っていますが、
キャプチャしたものを、シートに貼り付け、それを印刷すればどうですか?

4888 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free