palaeontology
Active Member
- Joined
- May 12, 2017
- Messages
- 444
- Office Version
- 2016
- Platform
- Windows
I have inherited a spreadsheet which has a number of userforms that have some reasonable coding in behind them.
One userform allows the user to click on which teacher they are, and the userform then populates showing which students belong in the class(es) that teacher teaches.
The user can then click either on the class heading or individual students in that class, and a button then creates a copy of a template sheet for each student, names it with the 5-digit student number for that student selected and populates it with the students' results.
The same button then prints each student profile to paper.
Once printed, the code then deletes those copies of the template sheet that were created.
This is the current code for all that ....
What I would like to do is to change the code (at the end) to (instead of printing to paper) save a word or pdf file (whichever is easier) of each of those students' sheets, that were created, to this location ... G:\Maths Dept\STUDENT RESULTS\2019\PDF Profile Copies
Would this be the only section of the code that needs to be changed ????
If so, is anyone able to help me change the code to what would be needed ..
Very kind regards,
Chris
One userform allows the user to click on which teacher they are, and the userform then populates showing which students belong in the class(es) that teacher teaches.
The user can then click either on the class heading or individual students in that class, and a button then creates a copy of a template sheet for each student, names it with the 5-digit student number for that student selected and populates it with the students' results.
The same button then prints each student profile to paper.
Once printed, the code then deletes those copies of the template sheet that were created.
This is the current code for all that ....
Code:
Private Sub CommandButton3_Click()Dim Addme As Range
Dim x As Integer
If IsEmpty(Sheets("PrintTemplate").Range("V49")) Then
Set Addme = Sheets("PrintTemplate").Range("V49")
Else
Set Addme = Sheets("PrintTemplate").Range("V" & Rows.Count).End(xlUp).Offset(1, 0)
End If
For x = 0 To Me.ListBox_1st_Class.ListCount - 1
If Me.ListBox_1st_Class.Selected(x) Then
Addme = Me.ListBox_1st_Class.List(x)
Addme.Offset(, 1).Value = Me.ListBox_1st_Class.List(x, 1)
Set Addme = Addme.Offset(1, 0)
End If
Next x
For x = 0 To Me.ListBox_1st_Class.ListCount - 1
If Me.ListBox_1st_Class.Selected(x) Then Me.ListBox_1st_Class.Selected(x) = False
Next x
'###########
'Code2
' "Y49", Column "Y" & "Me.ListBox_2nd_Class"
If IsEmpty(Sheets("PrintTemplate").Range("Y49")) Then
Set Addme = Sheets("PrintTemplate").Range("Y49")
Else
Set Addme = Sheets("PrintTemplate").Range("Y" & Rows.Count).End(xlUp).Offset(1, 0)
End If
For x = 0 To Me.ListBox_2nd_Class.ListCount - 1
If Me.ListBox_2nd_Class.Selected(x) Then
Addme = Me.ListBox_2nd_Class.List(x)
Addme.Offset(, 1).Value = Me.ListBox_2nd_Class.List(x, 1)
Set Addme = Addme.Offset(1, 0)
End If
Next x
For x = 0 To Me.ListBox_2nd_Class.ListCount - 1
If Me.ListBox_2nd_Class.Selected(x) Then Me.ListBox_2nd_Class.Selected(x) = False
Next x
'Copy Template Multiple Times and Rename them with names from a List
Dim ws As Worksheet, Ct As Long, c As Range
Set ws = Worksheets("Student Profile Template")
Application.ScreenUpdating = False
For Each c In Sheets("PrintTemplate").Range("AH49:AH100")
If c.Value <> "" Then
ws.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = c.Value
Ct = Ct + 1
End If
Next c
Application.ScreenUpdating = True
'Print all Sheets named with a 4-digit number
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "#####" Then
ws.Range("P22:U22").Font.Color = vbWhite
ws.Range("P22:U22").Interior.Color = vbWhite
ws.PageSetup.Orientation = xlLandscape
ws.PrintOut From:=1, To:=1
End If
Next ws
'Delete all Sheets named with a 4-digit number
Application.DisplayAlerts = False
For Each ws In Worksheets
If ws.Name Like "#####" Then ws.Delete
Next ws
'Clear student names from chosen list
Dim tbl As Range
Set tbl = Sheets("PrintTemplate").Range("V49:AF400")
tbl.ClearContents
End Sub
What I would like to do is to change the code (at the end) to (instead of printing to paper) save a word or pdf file (whichever is easier) of each of those students' sheets, that were created, to this location ... G:\Maths Dept\STUDENT RESULTS\2019\PDF Profile Copies
Would this be the only section of the code that needs to be changed ????
Code:
'Print all Sheets named with a 4-digit number
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "#####" Then
ws.Range("P22:U22").Font.Color = vbWhite
ws.Range("P22:U22").Interior.Color = vbWhite
ws.PageSetup.Orientation = xlLandscape
ws.PrintOut From:=1, To:=1
End If
Next ws
If so, is anyone able to help me change the code to what would be needed ..
Very kind regards,
Chris