teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード追記

2021/01/26 11:00

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -8,4 +8,33 @@
8
8
 
9
9
  下記で、レポートの印刷プレビューをフォームの子ウィンドウにするサンプルがあります。レポートビューでも同様にできると思います。試してみてはどうでしょうか。
10
10
 
11
- [レポートの印刷プレビューウィンドウにボタンを配置する - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-397.html)
11
+ [レポートの印刷プレビューウィンドウにボタンを配置する - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-397.html)
12
+
13
+ ---
14
+ 簡単にサンプルを作成してみました。
15
+ フォーム上にコマンドボタンを配置して、cmdClose という名前にします。
16
+
17
+ フォームモジュールに下記のコードを記述してください。
18
+
19
+ ```vba
20
+ Private Declare PtrSafe Function SetParent Lib "user32" Alias "SetParent" ( _
21
+ ByVal hWndChild As LongPtr, _
22
+ ByVal hWndNewParent As LongPtr) As LongPtr
23
+
24
+ Const docName As String = "レポート名"
25
+
26
+ Private Sub Form_Load()
27
+ DoCmd.OpenReport docName, acViewReport 'レポートビューで開く
28
+
29
+ 'レポートの位置とサイズをフォームに合わせて調整
30
+ Dim TopPos As Long: TopPos = Me.cmdClose.Top + Me.cmdClose.Height + 100
31
+ DoCmd.MoveSize 0, TopPos, Me.InsideWidth, Me.InsideHeight - TopPos
32
+ 'レポートの親ウィンドウをフォームに設定
33
+ SetParent Reports(docName).Hwnd, Me.Hwnd
34
+ End Sub
35
+
36
+ Private Sub cmdClose_Click()
37
+ DoCmd.Close acForm, Me.Name
38
+ End Sub
39
+ ```
40
+ これで、フォーム上にレポートビューが埋め込まれているように見えて、かつ、マウスホイールでスクロールできるのを確認しました。

1

誤字修正

2021/01/26 11:00

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  実際にやったことはないので、アイデアだけの提案です。
2
2
  できるかどうかはやってみないと分かりません。
3
3
 
4
- やりたいことは、フォームのなかに、レポートビューを埋め込んで、かつ、マウスホイールでスクロールできるようにしたい、ということでよね。
4
+ やりたいことは、フォームのなかに、レポートビューを埋め込んで、かつ、マウスホイールでスクロールできるようにしたい、ということでよね。
5
5
 
6
6
  フォーム上にサブレポートとして埋め込むとマウスホイールでスクロールできないですが、単独でレポートビューを開いたときはマウスホイールでスクロールできます。
7
7
  ということで、Win API を使って、レポートビューをフォームの子ウィンドウにしたら、見た目はフォーム上にレポートビューがあるように見えて、マウスホイールでのスクロールもできるかも知れません。