Macro SaveAs password from cell value
Hello,
I've looked all over the internet for a solution to my problem, but I can't find anything. I have a workbook which contains several sheets that are emailed to individual end users (each user has their own sheet). I have a macro that copies each sheet and emails based on the email within the sheet. What I want to do now is add a password to each created sheet based on a value that is in cell G3. So in the end everyone gets their own data that has a unique password.
Here is the code for my macro:
Sub Email_Each_Sheet()
'Working in 2000-2010
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
For Each sht In ActiveWorkbook.Sheets
If sht.Range("A60").Value Like "?*@?*.?*" Then
sht.Activate
SendTo = sht.Range("A60").Value
Set Source = Nothing
On Error Resume Next
Set Source = Range("A2:H46").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, " & _
"please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & "\"
TempFileName = sht.Range("F3").Value & " Productivity " & Format(Now, "mm-dd-yy")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = 56
Else
'You use Excel 2007-2010
FileExtStr = ".xls": FileFormatNum = 56
End If
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.to = SendTo
.CC = ""
.BCC = ""
.Subject = "subject"
.body = "body"
.attachments.Add Dest.FullName
'You can add other files also like this
'.Attachments.Add ("C:\test.txt")
.Display 'or use .Send
End With
On Error GoTo 0
.Close SaveChanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End If
Next
End Sub
Please help!
Sheet Protect
Here is your modified code...
.
.
.
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
.Protect .Range("G3") 'New Line
Application.CutCopyMode = False
End With
.
.
.
I ended up solving this
I ended up solving this problem by using code below:
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum, Password:=sht.Range("G3").Value
Thank you for your help!
OK, you wanted the password
OK, you wanted the password on workbook not sheet.