1 - This is not attributable to the macro, and is probably the result of formatting variations in the question documents. I have introduced some formatting using styles from the normal template and replaced any instances of double paragraph breaks in the inserted documents with one break. That's as good as it gets without knowing the exact nature of the problem.
2 - That is much easier said than done, as the length of the questions is unknown. The modified version keeps the question heading with the first paragraph of the question.
3 - My fault - a misreading of the requirement. Fixed below.
Sub CreateTest()
Dim wdApp As Object
Dim wdDoc As Object
Dim oRng As Object
Dim LastCol As Long, LastRow As Long
Dim i As Long, j As Long, k As Long
Dim iQuestion As Long
Dim xlSheet As Worksheet
Const strDocsPath As String = "C:\Path\Docs\"
Const strPath As String = "C:\Path\"
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err Then
Set wdApp = CreateObject("Word.Application")
Err.Clear
End If
wdApp.ScreenUpdating = False
Set xlSheet = ActiveSheet
With xlSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
For i = 2 To LastCol
iQuestion = 0
Set wdDoc = wdApp.Documents.Add
For j = 2 To LastRow
If xlSheet.Cells(j, i) > 0 Then
iQuestion = iQuestion + 1
Set oRng = wdDoc.Range
oRng.collapse 0
oRng.Text = "Question " & iQuestion & vbCr
oRng.Style = "Heading 2"
oRng.ParagraphFormat.keepwithnext = True
oRng.collapse 0
oRng.InsertFile Filename:=strDocsPath & xlSheet.Cells(j, 1) & ".docx"
oRng.End = wdDoc.Range.End
oRng.Style = "Normal"
oRng.Text = Replace(oRng.Text, vbCr & vbCr, vbCr)
wdDoc.Fields.Unlink
Set oRng = wdDoc.Range
'oRng.collapse 1
End If
Next j
wdDoc.Range.Font.Reset
wdDoc.Range.Style.Reset
wdDoc.SaveAs2 Filename:=strPath & xlSheet.Cells(1, i) & ".docx"
wdDoc.Close 'Optional
DoEvents
Next i
MsgBox "Documents created at " & strPath
wdApp.ScreenUpdating = True
lbl_Exit:
Set xlSheet = Nothing
Set wdApp = Nothing
Set wdDoc = Nothing
Set oRng = Nothing
Exit Sub
End Sub