実際にやったことはないので、アイデアだけの提案です。
できるかどうかはやってみないと分かりません。
やりたいことは、フォームのなかに、レポートビューを埋め込んで、かつ、マウスホイールでスクロールできるようにしたい、ということですよね。
フォーム上にサブレポートとして埋め込むとマウスホイールでスクロールできないですが、単独でレポートビューを開いたときはマウスホイールでスクロールできます。
ということで、Win API を使って、レポートビューをフォームの子ウィンドウにしたら、見た目はフォーム上にレポートビューがあるように見えて、マウスホイールでのスクロールもできるかも知れません。
下記で、レポートの印刷プレビューをフォームの子ウィンドウにするサンプルがあります。レポートビューでも同様にできると思います。試してみてはどうでしょうか。
レポートの印刷プレビューウィンドウにボタンを配置する - hatena chips
簡単にサンプルを作成してみました。
フォーム上にコマンドボタンを配置して、cmdClose という名前にします。
フォームモジュールに下記のコードを記述してください。
vba
1Private Declare PtrSafe Function SetParent Lib "user32" Alias "SetParent" ( _
2 ByVal hWndChild As LongPtr, _
3 ByVal hWndNewParent As LongPtr) As LongPtr
4
5Const docName As String = "レポート名"
6
7Private Sub Form_Load()
8 DoCmd.OpenReport docName, acViewReport 'レポートビューで開く
9
10 'レポートの位置とサイズをフォームに合わせて調整
11 Dim TopPos As Long: TopPos = Me.cmdClose.Top + Me.cmdClose.Height + 100
12 DoCmd.MoveSize 0, TopPos, Me.InsideWidth, Me.InsideHeight - TopPos
13 'レポートの親ウィンドウをフォームに設定
14 SetParent Reports(docName).Hwnd, Me.Hwnd
15End Sub
16
17Private Sub cmdClose_Click()
18 DoCmd.Close acForm, Me.Name
19End Sub
これで、フォーム上にレポートビューが埋め込まれているように見えて、かつ、マウスホイールでスクロールできるのを確認しました。