• ベストアンサー

フォームの内容をプリント

教えて下さい。vb初心者です。 VB6.0にてアプリケーションを作成しています。 フォームモジュールを作成して、その中にグラフなどを表示させています。そのフォームに描かれている内容をコマンドボタンのクリックイベントなどで、そのままプリントアウトしたいのですが、どのようにすればいいのでしょうか?また、そのフォームの内容をエクセルのシートなどにも、貼り付けたいのですが、どのようにすればいいのでしょうか? 教えて下さい。

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

ちわっす

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=185224
TeamMSY
質問者

補足

ありがとうございます。 URLを拝見しました。 その中で >ずばりなサンプルを見つけました。 >何語?? の回答でこのURL:にアクセスできないのですが、この移り先など知っていたら教えてください。 また、サンプルコードが書かれているコードを実装して、エクセルに保存するコードを作成したのですが、うまくいきません。アプリケーション起動時最初の1回目は、うまくできるのですが、2回目からエラーが出ます。 コードを添付します。 フォームのコマンドボタン2を押してコピー フォームのコマンドボタン1を押して張り付け Private Type tagKEYBDINPUT wVk As Integer wScan As Integer dwFlags As Long time As Long dwExtraInfo As Long bytUnusedPadding(7) As Byte End Type Private Type tagINPUT type As Long ki As tagKEYBDINPUT End Type Private Const INPUT_KEYBOARD = 1 Private Const VK_SNAPSHOT = &H2C Private Const VK_LMENU = &HA4& Private Const KEYEVENTF_KEYUP = &H2 Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As tagINPUT, ByVal cbSize As Long) As Long Private Sub Command2_Click() '画面をクリップボードにコピーさせる Call fucSnapShot End Sub Sub fucSnapShot() Dim inpInfomation(3) As tagINPUT ' キー ストロークを作成 With inpInfomation(0) .type = INPUT_KEYBOARD .ki.wVk = VK_LMENU End With With inpInfomation(1) .type = INPUT_KEYBOARD .ki.wVk = VK_SNAPSHOT End With With inpInfomation(2) .type = INPUT_KEYBOARD .ki.wVk = VK_LMENU .ki.dwFlags = KEYEVENTF_KEYUP End With With inpInfomation(3) .type = INPUT_KEYBOARD .ki.wVk = VK_SNAPSHOT .ki.dwFlags = KEYEVENTF_KEYUP End With ' キー ストロークを合成 Call SendInput(3, inpInfomation(0), Len(inpInfomation(0))) 'Windowsに処理を渡す(クリップボードに画像がわたる) DoEvents End Sub Private Sub Command1_Click() Call ExcelProc End Sub Public Sub ExcelProc() ' Dim xl As Object ' Set xl = GetObject("d:\test.xls") ' xl.Visible = True Dim xl2 As Excel.Application Dim xl2Book As Object Dim xl2Sheet As Object Set xl2 = CreateObject("excel.application") xl2.Visible = True xl2.Workbooks.Open ("d:\test.xls") Set xl2Book = xl2.ActiveWorkbook Set xl2Sheet = xl2Book.Worksheets(1) xl2Sheet.Select Range("d10").Select ActiveSheet.Paste xl2Sheet.Range("a2").Value = Me.Text1.Text '保存 ChDir "D:\" ActiveWorkbook.SaveAs FileName:="D:\test2.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False xl2Book.Close True Set xl2Book = Nothing Set xl2Sheet = Nothing xl2.Quit Set xl2 = Nothing End Sub コード上おかしなところがありましたら教えて下さい。

その他の回答 (3)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

>印刷 過去ログにあります。 >貼り付け Alt+PrintScreenを擬似的に発生させる方法が過去ログにあります。 CreateObject("Excel.Application")でVBからExcelを操作できます。(過去ログ参照) 貼り付け(CTRL+V)は、.ActiveSheet.Pasteです。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

>貼り付けたい VBアプリでAlt+PrintScreen, ExcelでCTRL+V

TeamMSY
質問者

補足

ありがとうございます。 できれば自動で行いたいです。(ボタン一つで) ボタンを押すことでエクセルを自動起動して、シートに貼り付けたいのです。いかがなものでしょうか? 説明不足で申し訳ありません。教えて下さい。よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

PrintFormではだめですか。 Form1に1つテキストボックスを張りつけました。 Private Sub Form_Click() Text1.Text = "aaa" Form1.PrintForm End Sub 実行すると、プリンタにFormの四角い画面とテキストボックスとその中にaaaがはいって、画像が印刷出来ました。

TeamMSY
質問者

補足

ありがとうございます。確かにプリントアウトができることを確認できました。 しかしながら現在私が作成しているフォームが大きいため2/3ぐらいプリントアウトできないのですが、この現象を避けるための手段などはご存知でないですか? 教えて下さい。 ついでにエクセルにも貼りつけたいです。 よろしくお願いします。

関連するQ&A