Adriano,
Dá para criar um Relatório Dinâmico sem problemas. O incoveniente é o trabalho que você vai ter para dimensionar e posicionar todos os campos via código. Veja um exemplo:
Copie e cole em um Módulo, modifique o Nome da Tabela "Tabela1" de acordo com a sua e execute:
Public Sub CriarReport()
Dim Rst As New ADODB.Recordset
Set Conn = CurrentProject.Connection
Dim rpt As Report
Dim intDataY As Integer
Dim intDataX As Integer
Dim intLarg As Integer
Dim intAlt As Integer
On Error GoTo Err_Handler
DoCmd.DeleteObject acReport, "Relatório1"
ResumeCreate:
Set rpt = CreateReport
With rpt
.RecordSource = "Tabela1"
End With
intDataY = 275 'Margem Superior
intDataX = 50 'Margem Esquerda
intLarg = 1000 'Largura do Controle
intAlt = 250 'Altura do Controle
Rst.Open "Select * From Tabela1", Conn
colunas = Rst.Fields.Count - 1
For i = 1 To colunas
If Rst.Fields(i).Value = False Then
Set ctlLabel = CreateReportControl(rpt.Name, acLabel, acPageHeader, "", Rst.Fields(i).Name, intDataX, intDataY, intLarg, intAlt)
Set ctlText = CreateReportControl(rpt.Name, acCheckBox, , "", Rst.Fields(i).Name, intDataX, 0, intLarg, intAlt)
intDataX = intDataX + intLarg
End If
Next
Rst.Close
DoCmd.Save acReport, "Relatório1"
DoCmd.Close acReport, "Relatório1"
DoCmd.OpenReport "Relatório1", acViewPreview
Exit Sub
Err_Handler:
If Err.Number = 7874 Then
GoTo ResumeCreate
Else
MsgBox Err.Description, vbCritical
Err.Clear
End If
End Sub
Abraço.