This Excel macro is a workaround for saving a Canvas-exported CSV gradebook file as UTF-8 type, which avoids corrupting the file as would be otherwise done by the default Excel Save function.
' CSV_Super_Saver Macro
' This macro is a workaround for saving a Canvas-exported CSV gradebook file as UTF-8 type,
' which avoids corrupting the file as would be otherwise done by the default Excel Save function.
' Keyboard Shortcut: Ctrl+Shift+X <-- one of the few shortcuts not used by MS Office
' by Joel Koblich 12FEB2018
' In the public domain. Should work fine, but if not, please feel free to contact me and I'll try to help.
' To install:
' 1) On Excel Developer tab, click Record Macro,
' 2) Name the new macro CSV_Super_Saver,
' 3) To set the Shortcut key, select that field and press Shift + X,
' 4) For the Store macro in parameter, select Personal Macro Workbook option in dropdownlist
' (this stores it with that installation of Excel rather than any particular workbook),
' 5) Stop Recording the macro,
' 6) Press Alt+F11 to launch the VBA Script Editor,
' 7) In the left window, expand the VBAProject(PERSONAL.XLSB) folder,
' 8) Within that folder, expand the Modules folder,
' 9) Double click the Module1 object. If that does not contain a line "Sub CSV_Super_Saver()" then look around some more.
' 10) Copy the entire contents of this instruction set in place of all text beginning immediately AFTER the "Sub CSV_Super_Saver()" text
' and everything up to but NOT including "End Sub". Do not overwrite any other existing Sub items that may already be in the module!
' To use:
' 1) Export file from Canvas,
' 2) Open file in Excel,
' 3) Ctrl+Shift+X to run the macro and save the file as type UTF-8, which should make it non-corrupt next time it's opened.
Dim FileNameWithPath, FileOnly, PathOnly As String
Application.DisplayAlerts = False ' Suppress the save confirmation popup message box
FileNameWithPath = ActiveWorkbook.FullName
FileOnly = ActiveWorkbook.Name
PathOnly = Left(FileNameWithPath, Len(FileNameWithPath) - Len(FileOnly))
ActiveWorkbook.SaveAs Filename:=FileNameWithPath, FileFormat:=xlCSVUTF8, CreateBackup:=False
Application.DisplayAlerts = True ' turn alerts back on