dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

この回答への補足

ありがとうございます。
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

コード上おかしなところがありましたら教えて下さい。

補足日時:2003/01/11 01:49
    • good
    • 0

>印刷


過去ログにあります。

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

>貼り付けたい



VBアプリでAlt+PrintScreen, ExcelでCTRL+V

この回答への補足

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

補足日時:2003/01/09 11:32
    • good
    • 0

PrintFormではだめですか。


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

この回答への補足

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

補足日時:2003/01/09 11:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!