Modify-Excel.ps1
<#PSScriptInfo .VERSION 1.0 .GUID 90051632-b87d-4f47-b2b0-1025908c13ea .AUTHOR standarduser .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES .PRIVATEDATA #> <# .DESCRIPTION Write to Excel daily tasks #> Param() <# .SYNOPSIS This function is used for updating, saving excel data at pre-defined intervals. .DESCRIPTION Used for updating certain excel cells with unicode-hardcoded characters in main PS code file. Script selects a random unicode-translated message to be written in the excel task list. .PARAMETER addSheet Switch option to add an extra worksheet to write your information on. .EXAMPLES PS> Modify-Excel <-- adds your scheduled data to your spreadsheet (dd/MM/yyyy and relevant comment) PS> Modify-Excel -addSheet <-- adds your scheduled data on additional worksheet in the end of main excel area #> Function Modify-Excel([switch]$addSheet) { $defaultdir = "$env:USERPROFILE\Documents\Timesheet_1709_2020.xlsx"; $xls = New-Object -ComObject Excel.Application; $xls.Visible = $false; $xlShiftDown = -4121; $fileModify = $xls.Workbooks.Open($defaultdir); # select latest/current working month .. $spreadSheet = $fileModify.ActiveSheet; # $fileModify.Worksheets | ?{ $_.Name -ilike "*2020" } | Select -Last 1 if ($addSheet) { Try { # Create an additional worksheet.. $Currentmonth = ([System.DateTime]::Now).ToLongDateString().Split(' ')[1]; $Nextmonth = ([System.DateTime]::Now.AddMonths(1)).ToLongDateString().Split(' ')[1]; $Currentyear = ([System.DateTime]::Now).ToLongDateString().Split(' ')[2]; $lastSheet = ($fileModify.Worksheets).Count(); Write-Host "Added worksheet #$($lastSheet + 1) to file.. after ws `'$(($fileModify.Worksheets | Select -Last 1).Name)`'" $lastwsheet = $fileModify.Worksheets | Select -Last 1; $addedsheet = $fileModify.Worksheets.Add($lastwsheet); $addedsheet.Name = "Days_$($Nextmonth)_$Currentyear"; $lastwsheet.Move($addedsheet); $addedsheet.Select(); $f=0; for ($r=3; $r -lt 34; $r++) { $valueDate = (([System.DateTime]::Now)).ToString("dd/MM/yyyy"); $addedSheet.Cells.Item($r,1) = (($valueDate -as [System.DateTime]).AddDays($f++)); } } Catch { Write-Warning "Error while adding to excel, duplicate sheet/error in name."; return $($null);} } # Create/Print daily input, UTF-16 encoded chars. # input 1 - unicode string, label in code [string]$el_syst_part1 += [Int[]]@(924,942,957,965,956,945) | %{$_ -as [char]}; [string]$el_syst_part2 += [Int[]]@(49) | %{$_ -as [char]}; # input 2 - unicode string, label in code [string]$el_dat_part1 += [Int[]]@(924,942,957,973,956,945) | %{$_ -as [char]}; [string]$el_dat_part2 += [Int[]]@(51) | %{$_ -as [char]}; # input 3 - unicode string, label in code [string]$an_dat_proc_part1 += [Int[]]@(931,951,956,949,943,969,963,951) | %{$_ -as [char]}; [string]$an_dat_proc_part2 += [Int[]]@(51,50) | %{$_ -as [char]}; # Create complete resulting strings.. [string]$el_syst = @($($el_syst_part1 -replace ' ',''),$($el_syst_part2 -replace ' ','')) -join ' '; [string]$el_dat = @($($el_dat_part1 -replace ' ',''),$($el_dat_part2 -replace ' ','')) -join ' '; [string]$an_dat_proc = @($($an_dat_proc_part1 -replace ' ',''),$($an_dat_proc_part2 -replace ' ','')) -join ' '; $dailyTask = [string[]]@($($el_syst), $($el_dat), $($an_dat_proc))[$(Get-Random -Maximum 3)]; $dayissued = $([System.DateTime]::Now.ToShortDateString().Split('/')[0] -as [int]); $spreadSheet.Cells.Item($($dayissued) + 2,3) = $dailyTask; $spreadSheet.Cells.Item($($dayissued) + 2,4) = $dailyTask; # Add to relevant cells. $spreadSheet.Columns.Item('C').columnWidth = 40; $spreadSheet.Columns.Item('D').columnWidth = 40; $fileModify.Save(); $fileModify.Close(); $xls.Quit(); } Modify-Excel #Add a new month, new daily task tab on excel. Modify-Excel -addSheet; Start-Process "$env:USERPROFILE\Documents\Timesheet_1709_2020.xlsx"; # SIG # Begin signature block # MIIEGAYJKoZIhvcNAQcCoIIECTCCBAUCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUnut52g64u/WgPrNfc8zmJ42a # iLigggIvMIICKzCCAdCgAwIBAgIQP671MxE0Op1P87qxbgk5QDAKBggqhkjOPQQD # AjBbMRMwEQYKCZImiZPyLGQBGRYDa29tMRUwEwYKCZImiZPyLGQBGRYFZXJyb3Ix # FTATBgNVBAsMDFVzZXJBY2NvdW50czEWMBQGA1UEAwwNQ2hyaXN0b3MgVGVzdDAe # Fw0yMDEyMjIxMTU2MzVaFw0yMTEyMjIxMjE2MzVaMFsxEzARBgoJkiaJk/IsZAEZ # FgNrb20xFTATBgoJkiaJk/IsZAEZFgVlcnJvcjEVMBMGA1UECwwMVXNlckFjY291 # bnRzMRYwFAYDVQQDDA1DaHJpc3RvcyBUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0D # AQcDQgAEvhilEJNgpX+c/IGwUJ1x03FS4iEXjpLqD0H2ROqYyqzNF3MbY6MNEuSI # pU8CcVR608lI+nHmuoib13jmfraLbKN2MHQwDgYDVR0PAQH/BAQDAgeAMBMGA1Ud # JQQMMAoGCCsGAQUFBwMDMC4GA1UdEQQnMCWgIwYKKwYBBAGCNxQCA6AVDBNjaHJp # c3Rlc3RAZXJyb3Iua29tMB0GA1UdDgQWBBSnqsSsh8Z1o6DpuYiG20a3dvu1IzAK # BggqhkjOPQQDAgNJADBGAiEA7yVon21IoGplLfBScCb6bDD+wlFkvpuvdFvx9H/R # GMkCIQClHwnAY0GT+4CCuxUv+J137OG2CHtrFH88WkVeA8ekITGCAVMwggFPAgEB # MG8wWzETMBEGCgmSJomT8ixkARkWA2tvbTEVMBMGCgmSJomT8ixkARkWBWVycm9y # MRUwEwYDVQQLDAxVc2VyQWNjb3VudHMxFjAUBgNVBAMMDUNocmlzdG9zIFRlc3QC # ED+u9TMRNDqdT/O6sW4JOUAwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAI # oAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIB # CzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFFdOPOA12JLdrGsqBaAd # 20FdjY/fMAsGByqGSM49AgEFAARHMEUCIQDNsT4t9/hVrFvintvMxYtbm0Tp4o4I # nF6G3GyALE/0LwIgCvmIp4hvqOT5uZjymaAJoJ+c5hRnu9EL5zpNSGoA7fI= # SIG # End signature block |