I give Adobe a hard time on Craptivate (it is terrible) but I’ve just found something that doesn’t quite suck – a way to report on courses without an LMS. And this comes packaged with Captivate – the ‘Adobe Quiz Results Analyser’!
It’s very easy to set up:
- put ‘internalServerReporting.php’ and ‘internalserverread.php’ from your ‘C:\Program Files\Adobe\Adobe Captivate 8 x64\Templates\Publish’ directory in to a folder on a server which runs PHP.
- In Captivate publish settings, select ‘Internal Server’ as your LMS. In the configure dialogue, put in your URL for the ‘internalServerReporting.php’ file – and the particulars for your course:

- Now, when you complete your course, on the quiz results screen a dialogue will pop up asking the learner their name and email address. This gets sent off to the php file along with all the interaction data, which gets written into a folder structure matching your company/department/course settings. Each learner’s attempt is written as a separate xml file.
- Now, using the Quiz Results Analyser, you can get total attempts on a course, total passes, and drill down in to each learners records and so on as required. Note: this sortof relies on the analyser being on the server, or networked with the webserver (it only lets you select a local drive folder structure for the results) – I worked around this by just FTPing down all the results onto the desktop before doing reporting.
Pretty neat! As a band-aid in waiting for an LMS, it’s a simple thing that doesn’t require you to interact with IT which is just the best. Nice one.
Note: On further analysis, this is a Captivate special. While the email address is entered by the learner and this is written in to the xml attempt files, the results analyser completely ignores this field. And you use the results analyser to export all the combined XML as a CSV. So you can’t perform a match against your HR data to match completions to HR staff ID’s or anything, since names are pretty useless for that. Unique email addresses would have been OK, but again – no-one bothered to test this function out for real world application. You could work around this by re-templating the alert to say ‘enter your userID’ instead of their name, and then use that to match records; but again, you can’t edit the Captivate prompt.
There’s always something with Craptivate.
____
Update 05.02.2015 – Skip using Quiz Results Analyser completely
using macros in Excel, you can read the XML docs in to Excel directly, and get the email addresses and everything else too. This could then be matched against HR database data if required, to make sure all staff have completed something for example.
SO WHAT’S THE SCRIPT?!
Sub ListFiles()
'LISTFILES AND LISTMYFILES MODIFIED FROM
'http://excelexperts.com/VBA-Tips-List-Files-In-A-Folder
'--------------------------------------------------------------------
'DECLARE AND SET VARIABLEs
Dim ShellApplication As Object
Set ShellApplication = CreateObject("Shell.Application").BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
Path = ShellApplication.self.Path
Set ShellApplication = Nothing
[a3] = "XML"
[b3] = "Files"
'--------------------------------------------------------------------
'DEFAULT PATH FROM HIDDEN SHEET
Call ListMyFiles(Path, True)
End Sub
Sub ListMyFiles(mySourcePath, IncludeSubfolders)
Set MyObject = New Scripting.FileSystemObject
Set mySource = MyObject.GetFolder(mySourcePath)
'With SearchXML
Application.ScreenUpdating = False
'--------------------------------------------------------------------
'FIND XML FILES ONLY, APPLY SEARCH CRIERIA, DISPLAY MATCHES ONLY
For Each myFile In mySource.Files
If Right(myFile.Name, 3) = "XML" Or Right(myFile.Name, 3) = "xml" Then 'IS XML?
LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
'-------------------------------------------------------------
'IMPORT XML FILE
ActiveWorkbook.XmlImport URL:=mySource & "\" & myFile.Name, _
ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$" & LastRow + 1)
'------------------------------------------------------------
Debug.Print "date modified: "; myFile.DateLastModified
'DELETE MAPS
maps = ActiveWorkbook.XmlMaps.Count
For I = 1 To maps
ActiveWorkbook.XmlMaps(1).Delete
Next I
End If
Next
If IncludeSubfolders Then 'SEARCH SUBFOLDERS FOR SAME CRITERIA
For Each MySubFolder In mySource.SubFolders
Call ListMyFiles(MySubFolder.Path, True)
Next
End If
'End With
Application.ScreenUpdating = True
End Sub
Public Sub ClearSheet()
Cells.Select
Selection.ClearContents
[a1].Select
End Sub
So that’s that. Thanks Maudibe from some forum for that script (sorry I lost it).
Then in Captivate, set your first button to be in the quiz, reporting its interaction. That’ll give you a date of interaction completion (course begin time) – which you can then use with the session time to get a completion time if you really want to.
Leave a Reply