PoshCode Archive  Hex Artifact Content

Artifact e7b8c4cd6dcea96d490952b84654d6340da913b9a547933e6b5ab635ff8cc5cd:

  • File The-Old-Dogs-ExcelCookBo.ps1 — part of check-in [cc78f3ddf9] at 2018-06-10 13:03:29 on branch trunk — This file was uploaded by a PowerGUI Script Editor Add-on. (user: Kent Finkle size: 44069)

0000: ef bb bf 23 20 65 6e 63 6f 64 69 6e 67 3a 20 75  ...# encoding: u
0010: 74 66 2d 38 0d 0a 23 20 61 70 69 3a 20 70 6f 77  tf-8..# api: pow
0020: 65 72 73 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65  ershell..# title
0030: 3a 20 54 68 65 20 4f 6c 64 20 44 6f 67 73 20 45  : The Old Dogs E
0040: 78 63 65 6c 43 6f 6f 6b 42 6f 0d 0a 23 20 64 65  xcelCookBo..# de
0050: 73 63 72 69 70 74 69 6f 6e 3a 20 54 68 69 73 20  scription: This 
0060: 66 69 6c 65 20 77 61 73 20 75 70 6c 6f 61 64 65  file was uploade
0070: 64 20 62 79 20 61 20 50 6f 77 65 72 47 55 49 20  d by a PowerGUI 
0080: 53 63 72 69 70 74 20 45 64 69 74 6f 72 20 41 64  Script Editor Ad
0090: 64 2d 6f 6e 2e 0d 0a 23 20 76 65 72 73 69 6f 6e  d-on...# version
00a0: 3a 20 32 30 30 39 2e 30 31 0d 0a 23 20 74 79 70  : 2009.01..# typ
00b0: 65 3a 20 73 63 72 69 70 74 0d 0a 23 20 61 75 74  e: script..# aut
00c0: 68 6f 72 3a 20 4b 65 6e 74 20 46 69 6e 6b 6c 65  hor: Kent Finkle
00d0: 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30  ..# license: CC0
00e0: 0d 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 55 73  ..# function: Us
00f0: 69 6e 67 2d 43 75 6c 74 75 72 65 0d 0a 23 20 78  ing-Culture..# x
0100: 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 31 39  -poshcode-id: 19
0110: 37 33 0d 0a 23 20 78 2d 61 72 63 68 69 76 65 64  73..# x-archived
0120: 3a 20 32 30 31 30 2d 30 37 2d 31 38 54 30 39 3a  : 2010-07-18T09:
0130: 30 31 3a 30 39 0d 0a 23 0d 0a 23 0d 0a 23 0d 0a  01:09..#..#..#..
0140: 23 20 44 41 54 45 20 20 3a 20 36 2f 32 31 2f 32  # DATE  : 6/21/2
0150: 30 31 30 0d 0a 23 20 43 4f 4d 4d 45 4e 54 3a 20  010..# COMMENT: 
0160: 54 68 69 73 20 69 73 20 61 6e 20 75 70 64 61 74  This is an updat
0170: 65 64 20 56 65 72 73 69 6f 6e 20 6f 66 20 6d 79  ed Version of my
0180: 20 43 6f 6f 6b 20 42 6f 6f 6b 20 66 72 6f 6d 20   Cook Book from 
0190: 41 75 67 65 73 74 20 6f 66 20 32 30 30 38 0d 0a  Augest of 2008..
01a0: 23 0d 0a 23 20 0d 0a 23 3d 3d 3d 3d 3d 3d 3d 3d  #..# ..#========
01b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
01c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
01d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
01e0: 3d 3d 3d 3d 3d 3d 3d 0d 0a 23 20 41 6c 6c 20 65  =======..# All e
01f0: 72 72 6f 72 73 20 61 6e 64 20 6d 69 73 74 61 6b  rrors and mistak
0200: 65 73 20 61 72 65 20 6d 79 20 6f 77 6e 2e 20 54  es are my own. T
0210: 68 61 6e 6b 73 20 74 6f 20 61 6c 6c 20 77 68 6f  hanks to all who
0220: 20 68 61 76 65 20 68 65 6c 70 65 64 0d 0a 23 20   have helped..# 
0230: 61 6c 6f 6e 67 20 74 68 65 20 77 61 79 2e 0d 0a  along the way...
0240: 23 0d 0a 23 20 4f 6e 65 20 74 68 69 6e 67 20 49  #..# One thing I
0250: 20 77 6f 75 6c 64 20 61 64 64 20 69 73 20 74 68   would add is th
0260: 61 74 20 69 66 20 79 6f 75 20 61 72 65 20 75 73  at if you are us
0270: 69 6e 67 20 20 61 6e 79 74 68 69 6e 67 20 62 75  ing  anything bu
0280: 74 20 61 20 55 53 20 6c 6f 63 61 6c 65 20 76 65  t a US locale ve
0290: 72 73 69 6f 6e 20 6f 66 20 45 78 63 65 6c 20 73  rsion of Excel s
02a0: 6f 6d 65 20 6f 66 0d 0a 23 20 74 68 65 73 65 20  ome of..# these 
02b0: 73 63 72 69 70 74 73 20 77 6f 6e 27 74 20 77 6f  scripts won't wo
02c0: 72 6b 2c 20 65 73 70 65 63 69 61 6c 6c 79 20 61  rk, especially a
02d0: 64 64 69 6e 67 20 61 6e 64 20 73 61 76 69 6e 67  dding and saving
02e0: 20 77 6f 72 6b 62 6f 6f 6b 73 2e 0d 0a 23 0d 0a   workbooks...#..
02f0: 23 20 48 65 72 65 20 69 73 20 61 20 66 75 6e 63  # Here is a func
0300: 74 69 6f 6e 20 74 68 61 74 20 68 65 6c 70 73 20  tion that helps 
0310: 77 69 74 68 20 74 68 69 73 20 70 72 6f 62 6c 65  with this proble
0320: 6d 3a 0d 0a 23 0d 0a 23 20 46 72 6f 6d 3a 20 68  m:..#..# From: h
0330: 74 74 70 3a 2f 2f 62 6c 6f 67 73 2e 6d 73 64 6e  ttp://blogs.msdn
0340: 2e 63 6f 6d 2f 70 6f 77 65 72 73 68 65 6c 6c 2f  .com/powershell/
0350: 61 72 63 68 69 76 65 2f 32 30 30 36 2f 30 34 2f  archive/2006/04/
0360: 32 35 2f 35 38 33 32 33 35 2e 61 73 70 78 0d 0a  25/583235.aspx..
0370: 23 0d 0a 23 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  #..# ===========
0380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
03a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 46  ===========....F
03b0: 75 6e 63 74 69 6f 6e 20 55 73 69 6e 67 2d 43 75  unction Using-Cu
03c0: 6c 74 75 72 65 20 28 0d 0a 5b 53 79 73 74 65 6d  lture (..[System
03d0: 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 2e 43  .Globalization.C
03e0: 75 6c 74 75 72 65 49 6e 66 6f 5d 24 63 75 6c 74  ultureInfo]$cult
03f0: 75 72 65 2c 0d 0a 5b 53 63 72 69 70 74 42 6c 6f  ure,..[ScriptBlo
0400: 63 6b 5d 24 73 63 72 69 70 74 29 0d 0a 7b 0d 0a  ck]$script)..{..
0410: 20 20 20 20 24 4f 6c 64 43 75 6c 74 75 72 65 20      $OldCulture 
0420: 3d 20 5b 53 79 73 74 65 6d 2e 54 68 72 65 61 64  = [System.Thread
0430: 69 6e 67 2e 54 68 72 65 61 64 5d 3a 3a 43 75 72  ing.Thread]::Cur
0440: 72 65 6e 74 54 68 72 65 61 64 2e 43 75 72 72 65  rentThread.Curre
0450: 6e 74 43 75 6c 74 75 72 65 0d 0a 20 20 20 20 74  ntCulture..    t
0460: 72 61 70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rap..    {..    
0470: 5b 53 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e  [System.Threadin
0480: 67 2e 54 68 72 65 61 64 5d 3a 3a 43 75 72 72 65  g.Thread]::Curre
0490: 6e 74 54 68 72 65 61 64 2e 43 75 72 72 65 6e 74  ntThread.Current
04a0: 43 75 6c 74 75 72 65 20 3d 20 24 4f 6c 64 43 75  Culture = $OldCu
04b0: 6c 74 75 72 65 0d 0a 20 20 20 20 7d 0d 0a 20 20  lture..    }..  
04c0: 20 20 5b 53 79 73 74 65 6d 2e 54 68 72 65 61 64    [System.Thread
04d0: 69 6e 67 2e 54 68 72 65 61 64 5d 3a 3a 43 75 72  ing.Thread]::Cur
04e0: 72 65 6e 74 54 68 72 65 61 64 2e 43 75 72 72 65  rentThread.Curre
04f0: 6e 74 43 75 6c 74 75 72 65 20 3d 20 24 63 75 6c  ntCulture = $cul
0500: 74 75 72 65 0d 0a 20 20 20 20 24 45 78 65 63 75  ture..    $Execu
0510: 74 69 6f 6e 43 6f 6e 74 65 78 74 2e 49 6e 76 6f  tionContext.Invo
0520: 6b 65 43 6f 6d 6d 61 6e 64 2e 49 6e 76 6f 6b 65  keCommand.Invoke
0530: 53 63 72 69 70 74 28 24 73 63 72 69 70 74 29 0d  Script($script).
0540: 0a 20 20 20 20 5b 53 79 73 74 65 6d 2e 54 68 72  .    [System.Thr
0550: 65 61 64 69 6e 67 2e 54 68 72 65 61 64 5d 3a 3a  eading.Thread]::
0560: 43 75 72 72 65 6e 74 54 68 72 65 61 64 2e 43 75  CurrentThread.Cu
0570: 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d 20 24  rrentCulture = $
0580: 4f 6c 64 43 75 6c 74 75 72 65 0d 0a 7d 20 23 20  OldCulture..} # 
0590: 45 6e 64 20 46 75 6e 63 74 69 6f 6e 0d 0a 0d 0a  End Function....
05a0: 55 73 69 6e 67 2d 43 75 6c 74 75 72 65 20 65 6e  Using-Culture en
05b0: 2d 75 73 20 7b 0d 0a 24 78 6c 3d 20 4e 65 77 2d  -us {..$xl= New-
05c0: 4f 62 6a 65 63 74 20 2d 43 4f 4d 20 45 78 63 65  Object -COM Exce
05d0: 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 24  l.Application..$
05e0: 78 6c 2e 56 69 73 69 62 6c 65 20 3d 20 24 74 72  xl.Visible = $tr
05f0: 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41  ue..$xl.DisplayA
0600: 6c 65 72 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a  lerts = $False..
0610: 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 4f 70  $xl.Workbooks.Op
0620: 65 6e 28 22 43 3a 5c 53 63 72 69 70 74 73 5c 50  en("C:\Scripts\P
0630: 6f 77 65 72 53 68 65 6c 6c 5c 74 65 73 74 2e 78  owerShell\test.x
0640: 6c 73 22 29 0d 0a 23 24 78 6c 2e 51 75 69 74 28  ls")..#$xl.Quit(
0650: 29 0d 0a 23 5b 53 79 73 74 65 6d 2e 52 75 6e 74  )..#[System.Runt
0660: 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69  ime.InteropServi
0670: 63 65 73 2e 4d 61 72 73 68 61 6c 5d 3a 3a 52 65  ces.Marshal]::Re
0680: 6c 65 61 73 65 43 6f 6d 4f 62 6a 65 63 74 28 24  leaseComObject($
0690: 78 6c 29 0d 0a 7d 0d 0a 23 20 3d 3d 3d 3d 3d 3d  xl)..}..# ======
06a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06d0: 0d 0a 23 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ..#_____________
06e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
06f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0700: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0710: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 20 48 6f  __________..# Ho
0720: 77 20 64 6f 20 49 20 63 72 65 61 74 65 20 61 6e  w do I create an
0730: 20 45 78 63 65 6c 20 6f 62 6a 65 63 74 3f 20 0d   Excel object? .
0740: 0a 20 0d 0a 24 78 6c 20 3d 20 6e 65 77 2d 6f 62  . ..$xl = new-ob
0750: 6a 65 63 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20  ject -comobject 
0760: 65 78 63 65 6c 2e 61 70 70 6c 69 63 61 74 69 6f  excel.applicatio
0770: 6e 20 0d 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f  n ....# ________
0780: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0790: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
07a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
07b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
07c0: 20 0d 0a 23 48 6f 77 20 64 6f 20 49 20 6d 61 6b   ..#How do I mak
07d0: 65 20 45 78 63 65 6c 20 76 69 73 69 62 6c 65 3f  e Excel visible?
07e0: 0d 0a 0d 0a 24 78 6c 2e 56 69 73 69 62 6c 65 20  ....$xl.Visible 
07f0: 3d 20 24 74 72 75 65 0d 0a 0d 0a 23 20 5f 5f 5f  = $true....# ___
0800: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0810: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0820: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0830: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0840: 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20  _____..#..# How 
0850: 64 6f 20 49 20 61 64 64 20 61 20 77 6f 72 6b 62  do I add a workb
0860: 6f 6f 6b 3f 20 0d 0a 20 0d 0a 24 77 62 20 3d 20  ook? .. ..$wb = 
0870: 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 41 64  $xl.Workbooks.Ad
0880: 64 28 29 0d 0a 20 0d 0a 23 20 42 79 20 64 65 66  d().. ..# By def
0890: 61 75 6c 74 20 74 68 69 73 20 61 64 64 73 20 74  ault this adds t
08a0: 68 72 65 65 20 65 6d 70 74 79 20 77 6f 72 6b 73  hree empty works
08b0: 68 65 65 74 73 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f  heets..# _______
08c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
08d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
08e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
08f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0900: 5f 0d 0a 23 0d 0a 23 0d 0a 23 20 48 6f 77 20 64  _..#..#..# How d
0910: 6f 20 49 20 6f 70 65 6e 20 61 6e 20 65 78 69 73  o I open an exis
0920: 74 69 6e 67 20 57 6f 72 6b 62 6f 6f 6b 20 3f 0d  ting Workbook ?.
0930: 0a 23 0d 0a 24 78 6c 20 3d 20 4e 65 77 2d 4f 62  .#..$xl = New-Ob
0940: 6a 65 63 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20  ject -comobject 
0950: 45 78 63 65 6c 2e 41 70 70 6c 69 63 61 74 69 6f  Excel.Applicatio
0960: 6e 0d 0a 24 78 6c 2e 56 69 73 69 62 6c 65 20 3d  n..$xl.Visible =
0970: 20 24 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70   $true..$xl.Disp
0980: 6c 61 79 41 6c 65 72 74 73 20 3d 20 24 46 61 6c  layAlerts = $Fal
0990: 73 65 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 57 6f  se..$wb = $xl.Wo
09a0: 72 6b 62 6f 6f 6b 73 2e 4f 70 65 6e 28 22 43 3a  rkbooks.Open("C:
09b0: 5c 53 63 72 69 70 74 73 5c 70 6f 77 65 72 73 68  \Scripts\powersh
09c0: 65 6c 6c 5c 74 65 73 74 2e 78 6c 73 22 29 0d 0a  ell\test.xls")..
09d0: 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ..# ____________
09e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
09f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0a00: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0a10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d  ____________..#.
0a20: 0a 23 20 0d 0a 23 48 6f 77 20 64 6f 20 49 20 61  .# ..#How do I a
0a30: 64 64 20 61 20 77 6f 72 6b 73 68 65 65 74 20 74  dd a worksheet t
0a40: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 77 6f  o an existing wo
0a50: 72 6b 62 6f 6f 6b 3f 20 0d 0a 20 0d 0a 24 78 6c  rkbook? .. ..$xl
0a60: 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20 2d 63   = new-object -c
0a70: 6f 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61  omobject excel.a
0a80: 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e  pplication..$xl.
0a90: 56 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d  Visible = $true.
0aa0: 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72  .$xl.DisplayAler
0ab0: 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a 24 77 62  ts = $False..$wb
0ac0: 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73   = $xl.Workbooks
0ad0: 2e 4f 70 65 6e 28 22 43 3a 5c 53 63 72 69 70 74  .Open("C:\Script
0ae0: 73 5c 74 65 73 74 2e 78 6c 73 22 29 0d 0a 24 77  s\test.xls")..$w
0af0: 73 20 3d 20 24 78 6c 2e 53 68 65 65 74 73 2e 41  s = $xl.Sheets.A
0b00: 64 64 28 29 0d 0a 0d 0a 23 0d 0a 23 20 5f 5f 5f  dd()....#..# ___
0b10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0b20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0b30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0b40: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0b50: 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20  _____..#..# How 
0b60: 64 6f 20 49 20 61 63 74 69 76 61 74 65 20 61 20  do I activate a 
0b70: 61 20 77 6f 72 6b 73 68 65 65 74 3f 0d 0a 23 20  a worksheet?..# 
0b80: 43 72 65 61 74 65 20 45 78 63 65 6c 2e 41 70 70  Create Excel.App
0b90: 6c 69 63 61 74 69 6f 6e 20 6f 62 6a 65 63 74 0d  lication object.
0ba0: 0a 24 78 6c 20 3d 20 4e 65 77 2d 4f 62 6a 65 63  .$xl = New-Objec
0bb0: 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 45 78 63  t -comobject Exc
0bc0: 65 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  el.Application..
0bd0: 23 20 53 68 6f 77 20 45 78 63 65 6c 0d 0a 24 78  # Show Excel..$x
0be0: 6c 2e 76 69 73 69 62 6c 65 20 3d 20 24 74 72 75  l.visible = $tru
0bf0: 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c  e..$xl.DisplayAl
0c00: 65 72 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a 23  erts = $False..#
0c10: 20 4f 70 65 6e 20 61 20 77 6f 72 6b 62 6f 6f 6b   Open a workbook
0c20: 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 77 6f 72 6b  ..$wb = $xl.work
0c30: 62 6f 6f 6b 73 2e 6f 70 65 6e 28 22 43 3a 5c 53  books.open("C:\S
0c40: 63 72 69 70 74 73 5c 50 6f 77 65 72 53 68 65 6c  cripts\PowerShel
0c50: 6c 5c 74 65 73 74 2e 78 6c 73 22 29 0d 0a 23 20  l\test.xls")..# 
0c60: 47 65 74 20 73 68 65 65 74 73 0d 0a 24 77 73 31  Get sheets..$ws1
0c70: 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74   = $wb.worksheet
0c80: 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61  s | where {$_.na
0c90: 6d 65 20 2d 65 71 20 22 73 68 65 65 74 31 22 7d  me -eq "sheet1"}
0ca0: 20 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63   #<------- Selec
0cb0: 74 73 20 73 68 65 65 74 20 31 0d 0a 24 77 73 32  ts sheet 1..$ws2
0cc0: 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74   = $wb.worksheet
0cd0: 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61  s | where {$_.na
0ce0: 6d 65 20 2d 65 71 20 22 73 68 65 65 74 32 22 7d  me -eq "sheet2"}
0cf0: 20 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63   #<------- Selec
0d00: 74 73 20 73 68 65 65 74 20 32 0d 0a 24 77 73 33  ts sheet 2..$ws3
0d10: 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74   = $wb.worksheet
0d20: 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61  s | where {$_.na
0d30: 6d 65 20 2d 65 71 20 22 73 68 65 65 74 33 22 7d  me -eq "sheet3"}
0d40: 20 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63   #<------- Selec
0d50: 74 73 20 73 68 65 65 74 20 33 0d 0a 23 20 41 63  ts sheet 3..# Ac
0d60: 74 69 76 61 74 65 20 73 68 65 65 74 20 31 0d 0a  tivate sheet 1..
0d70: 24 77 73 31 2e 61 63 74 69 76 61 74 65 28 29 0d  $ws1.activate().
0d80: 0a 53 74 61 72 74 2d 53 6c 65 65 70 20 31 20 0d  .Start-Sleep 1 .
0d90: 0a 23 20 41 63 74 69 76 61 74 65 20 73 68 65 65  .# Activate shee
0da0: 74 20 32 0d 0a 24 77 73 32 2e 61 63 74 69 76 61  t 2..$ws2.activa
0db0: 74 65 28 29 0d 0a 53 74 61 72 74 2d 53 6c 65 65  te()..Start-Slee
0dc0: 70 20 31 20 0d 0a 23 20 41 63 74 69 76 61 74 65  p 1 ..# Activate
0dd0: 20 73 68 65 65 74 20 33 0d 0a 24 77 73 33 2e 61   sheet 3..$ws3.a
0de0: 63 74 69 76 61 74 65 28 29 0d 0a 23 20 5f 5f 5f  ctivate()..# ___
0df0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0e00: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0e10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0e20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a  ______________..
0e30: 23 20 48 6f 77 20 64 6f 20 49 20 63 68 61 6e 67  # How do I chang
0e40: 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61  e the value of a
0e50: 20 63 65 6c 6c 3f 20 0d 0a 20 0d 0a 24 77 73 31   cell? .. ..$ws1
0e60: 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31 29  .cells.Item(1,1)
0e70: 2e 56 61 6c 75 65 28 29 20 3d 20 22 78 22 20 0d  .Value() = "x" .
0e80: 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ...# ___________
0e90: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0ea0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0eb0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0ec0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23  _____________..#
0ed0: 0d 0a 23 20 48 6f 77 20 64 6f 20 49 20 46 69 6e  ..# How do I Fin
0ee0: 64 20 61 20 73 70 65 63 69 66 69 65 64 20 63 65  d a specified ce
0ef0: 6c 6c 3f 20 0d 0a 23 0d 0a 0d 0a 24 78 6c 43 65  ll? ..#....$xlCe
0f00: 6c 6c 54 79 70 65 4c 61 73 74 43 65 6c 6c 20 3d  llTypeLastCell =
0f10: 20 31 31 0d 0a 0d 0a 24 75 73 65 64 20 3d 20 24   11....$used = $
0f20: 77 73 2e 75 73 65 64 52 61 6e 67 65 20 0d 0a 24  ws.usedRange ..$
0f30: 6c 61 73 74 43 65 6c 6c 20 3d 20 24 75 73 65 64  lastCell = $used
0f40: 2e 53 70 65 63 69 61 6c 43 65 6c 6c 73 28 24 78  .SpecialCells($x
0f50: 6c 43 65 6c 6c 54 79 70 65 4c 61 73 74 43 65 6c  lCellTypeLastCel
0f60: 6c 29 20 0d 0a 24 72 6f 77 20 3d 20 24 6c 61 73  l) ..$row = $las
0f70: 74 43 65 6c 6c 2e 72 6f 77 20 0d 0a 0d 0a 66 6f  tCell.row ....fo
0f80: 72 20 28 24 69 20 3d 20 31 3b 20 24 69 20 2d 6c  r ($i = 1; $i -l
0f90: 65 20 24 72 6f 77 3b 20 24 69 2b 2b 29 20 7b 0d  e $row; $i++) {.
0fa0: 0a 49 66 20 28 24 77 73 31 2e 63 65 6c 6c 73 2e  .If ($ws1.cells.
0fb0: 49 74 65 6d 28 31 2c 32 29 2e 56 61 6c 75 65 28  Item(1,2).Value(
0fc0: 29 20 3d 20 22 79 22 29 20 7b 0d 0a 23 20 22 64  ) = "y") {..# "d
0fd0: 6f 20 73 6f 6d 65 74 68 69 6e 67 22 0d 0a 20 20  o something"..  
0fe0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 7d 0d 0a          }....}..
0ff0: 0d 0a 23 20 41 6e 64 20 61 6e 6f 74 68 65 72 20  ..# And another 
1000: 77 61 79 3a 0d 0a 23 0d 0a 24 6d 61 69 6e 52 6e  way:..#..$mainRn
1010: 67 2e 53 65 6c 65 63 74 28 29 0d 0a 24 6f 62 6a  g.Select()..$obj
1020: 53 65 61 72 63 68 20 3d 20 24 6d 61 69 6e 52 6e  Search = $mainRn
1030: 67 2e 46 69 6e 64 28 22 47 72 61 6e 64 20 54 6f  g.Find("Grand To
1040: 74 61 6c 22 29 0d 0a 24 6f 62 6a 53 65 61 72 63  tal")..$objSearc
1050: 68 2e 53 65 6c 65 63 74 28 29 0d 0a 0d 0a 23 20  h.Select()....# 
1060: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1070: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1080: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1090: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
10a0: 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48  ________..#..# H
10b0: 6f 77 20 64 6f 20 49 20 66 69 6e 64 20 61 6e 64  ow do I find and
10c0: 20 64 65 6c 65 74 65 20 65 6d 70 74 79 20 72 6f   delete empty ro
10d0: 77 73 20 69 6e 20 45 78 63 65 6c 3f 0d 0a 23 0d  ws in Excel?..#.
10e0: 0a 0d 0a 46 75 6e 63 74 69 6f 6e 20 44 65 6c 65  ...Function Dele
10f0: 74 65 45 6d 70 74 79 52 6f 77 73 20 7b 0d 0a 24  teEmptyRows {..$
1100: 75 73 65 64 20 3d 20 24 77 73 2e 75 73 65 64 52  used = $ws.usedR
1110: 61 6e 67 65 20 0d 0a 24 6c 61 73 74 43 65 6c 6c  ange ..$lastCell
1120: 20 3d 20 24 75 73 65 64 2e 53 70 65 63 69 61 6c   = $used.Special
1130: 43 65 6c 6c 73 28 24 78 6c 43 65 6c 6c 54 79 70  Cells($xlCellTyp
1140: 65 4c 61 73 74 43 65 6c 6c 29 20 0d 0a 24 72 6f  eLastCell) ..$ro
1150: 77 20 3d 20 24 6c 61 73 74 43 65 6c 6c 2e 72 6f  w = $lastCell.ro
1160: 77 20 0d 0a 0d 0a 66 6f 72 20 28 24 69 20 3d 20  w ....for ($i = 
1170: 31 3b 20 24 69 20 2d 6c 65 20 24 72 6f 77 3b 20  1; $i -le $row; 
1180: 24 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 49 66 20  $i++) {..    If 
1190: 28 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28  ($ws.Cells.Item(
11a0: 24 69 2c 20 31 29 2e 56 61 6c 75 65 28 29 20 2d  $i, 1).Value() -
11b0: 65 71 20 24 4e 75 6c 6c 29 20 7b 0d 0a 20 20 20  eq $Null) {..   
11c0: 20 20 20 20 20 24 52 61 6e 67 65 20 3d 20 24 77       $Range = $w
11d0: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 24 69 2c  s.Cells.Item($i,
11e0: 20 31 29 2e 45 6e 74 69 72 65 52 6f 77 0d 0a 20   1).EntireRow.. 
11f0: 20 20 20 20 20 20 20 24 52 61 6e 67 65 2e 44 65         $Range.De
1200: 6c 65 74 65 28 29 0d 0a 20 20 20 20 20 20 20 20  lete()..        
1210: 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 20 0d 0a 0d 0a  }..    }..} ....
1220: 24 78 6c 43 65 6c 6c 54 79 70 65 4c 61 73 74 43  $xlCellTypeLastC
1230: 65 6c 6c 20 3d 20 31 31 20 0d 0a 0d 0a 24 78 6c  ell = 11 ....$xl
1240: 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63   = New-Object -c
1250: 6f 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61  omobject excel.a
1260: 70 70 6c 69 63 61 74 69 6f 6e 20 0d 0a 24 78 6c  pplication ..$xl
1270: 2e 56 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65  .Visible = $true
1280: 20 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c   ..$xl.DisplayAl
1290: 65 72 74 73 20 3d 20 24 46 61 6c 73 65 20 0d 0a  erts = $False ..
12a0: 24 77 62 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f  $wb = $xl.Workbo
12b0: 6f 6b 73 2e 4f 70 65 6e 28 22 43 3a 5c 53 63 72  oks.Open("C:\Scr
12c0: 69 70 74 73 5c 54 65 73 74 2e 78 6c 73 22 29 20  ipts\Test.xls") 
12d0: 23 20 3c 2d 2d 20 43 68 61 6e 67 65 20 61 73 20  # <-- Change as 
12e0: 72 65 71 75 69 72 65 64 21 0d 0a 24 77 73 20 3d  required!..$ws =
12f0: 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74 73 20   $wb.worksheets 
1300: 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61 6d 65  | where {$_.name
1310: 20 2d 65 71 20 22 53 65 72 76 65 72 73 22 20 7d   -eq "Servers" }
1320: 20 23 20 3c 2d 2d 20 4f 72 20 53 68 65 65 74 31   # <-- Or Sheet1
1330: 20 6f 72 20 57 68 61 74 65 76 65 72 20 0d 0a 0d   or Whatever ...
1340: 0a 44 65 6c 65 74 65 45 6d 70 74 79 52 6f 77 73  .DeleteEmptyRows
1350: 20 20 20 23 20 3c c3 a2 ef bf bd ef bf bd 43 61     # <........Ca
1360: 6c 6c 20 46 75 6e 63 74 69 6f 6e 20 0d 0a 0d 0a  ll Function ....
1370: 20 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f   ..# ___________
1380: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1390: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
13a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
13b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 0d  _____________...
13c0: 0a 23 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20  .#..#..# How do 
13d0: 49 20 73 65 74 20 61 20 72 61 6e 67 65 20 77 69  I set a range wi
13e0: 74 68 20 76 61 72 69 61 62 6c 65 73 3f 20 0d 0a  th variables? ..
13f0: 20 0d 0a 24 77 73 31 2e 72 61 6e 67 65 28 22 61   ..$ws1.range("a
1400: 24 7b 53 75 6d 72 6f 77 7d 3a 62 24 53 75 6d 72  ${Sumrow}:b$Sumr
1410: 6f 77 22 29 2e 66 6f 6e 74 2e 62 6f 6c 64 20 3d  ow").font.bold =
1420: 20 22 74 72 75 65 22 20 0d 0a 0d 0a 23 20 73 65   "true" ....# se
1430: 70 61 72 61 74 65 20 74 68 65 20 3a 20 66 72 6f  parate the : fro
1440: 6d 20 74 68 65 20 24 20 77 69 74 68 20 7b 7d 20  m the $ with {} 
1450: 6f 6e 20 74 68 65 20 6c 65 66 74 20 68 61 6e 64  on the left hand
1460: 20 73 69 64 65 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f   side..# _______
1470: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1480: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1490: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
14a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
14b0: 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20 49  _..#..# How do I
14c0: 20 53 65 74 20 72 61 6e 67 65 20 74 6f 20 61 20   Set range to a 
14d0: 76 61 6c 75 65 3f 0d 0a 20 0d 0a 24 72 61 6e 67  value?.. ..$rang
14e0: 65 34 3d 24 77 73 2e 72 61 6e 67 65 28 22 33 3a  e4=$ws.range("3:
14f0: 33 22 29 0d 0a 24 72 61 6e 67 65 34 2e 63 65 6c  3")..$range4.cel
1500: 6c 73 3d 22 52 6f 77 20 33 22 0d 0a 0d 0a 23 20  ls="Row 3"....# 
1510: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1520: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1530: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1540: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1550: 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48  ________..#..# H
1560: 6f 77 20 64 6f 20 49 20 6c 69 73 74 20 74 68 65  ow do I list the
1570: 20 77 6f 72 6b 62 6f 6f 6b 27 73 20 6e 61 6d 65   workbook's name
1580: 3f 20 0d 0a 20 0d 0a 24 77 62 2e 4e 61 6d 65 0d  ? .. ..$wb.Name.
1590: 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ...# ___________
15a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
15b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
15c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
15d0: 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f  ___..#..# How do
15e0: 20 49 20 66 69 6e 64 20 74 68 65 20 6c 61 73 74   I find the last
15f0: 20 75 73 65 64 20 72 6f 77 20 6e 75 6d 62 65 72   used row number
1600: 3f 0d 0a 0d 0a 24 78 6c 43 65 6c 6c 54 79 70 65  ?....$xlCellType
1610: 4c 61 73 74 43 65 6c 6c 20 3d 20 31 31 0d 0a 24  LastCell = 11..$
1620: 75 73 65 64 20 3d 20 24 77 73 2e 75 73 65 64 52  used = $ws.usedR
1630: 61 6e 67 65 0d 0a 24 6c 61 73 74 43 65 6c 6c 20  ange..$lastCell 
1640: 3d 20 24 75 73 65 64 2e 53 70 65 63 69 61 6c 43  = $used.SpecialC
1650: 65 6c 6c 73 28 24 78 6c 43 65 6c 6c 54 79 70 65  ells($xlCellType
1660: 4c 61 73 74 43 65 6c 6c 29 0d 0a 24 6c 61 73 74  LastCell)..$last
1670: 72 6f 77 20 3d 20 24 6c 61 73 74 43 65 6c 6c 2e  row = $lastCell.
1680: 72 6f 77 20 0d 0a 0d 0a 23 20 4f 72 0d 0a 0d 0a  row ....# Or....
1690: 24 6d 61 69 6e 52 6e 67 20 3d 20 24 77 73 31 2e  $mainRng = $ws1.
16a0: 55 73 65 64 52 61 6e 67 65 2e 43 65 6c 6c 73 20  UsedRange.Cells 
16b0: 0d 0a 24 52 6f 77 43 6f 75 6e 74 20 3d 20 24 6d  ..$RowCount = $m
16c0: 61 69 6e 52 6e 67 2e 52 6f 77 73 2e 43 6f 75 6e  ainRng.Rows.Coun
16d0: 74 20 20 0d 0a 24 52 20 3d 20 24 52 6f 77 43 6f  t  ..$R = $RowCo
16e0: 75 6e 74 20 0d 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f  unt ....# ______
16f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1700: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1710: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1720: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1730: 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20  __..#..# How do 
1740: 49 20 66 69 6e 64 20 74 68 65 20 6c 61 73 74 20  I find the last 
1750: 75 73 65 64 20 63 6f 6c 75 6d 6e 20 6e 75 6d 62  used column numb
1760: 65 72 3f 20 0d 0a 23 54 68 69 73 20 77 6f 72 6b  er? ..#This work
1770: 73 20 66 6f 72 20 63 6f 6c 75 6d 6e 73 20 61 6e  s for columns an
1780: 64 20 72 6f 77 73 20 0d 0a 20 0d 0a 24 6d 61 69  d rows .. ..$mai
1790: 6e 52 6e 67 20 3d 20 24 77 73 31 2e 55 73 65 64  nRng = $ws1.Used
17a0: 52 61 6e 67 65 2e 43 65 6c 6c 73 20 0d 0a 24 43  Range.Cells ..$C
17b0: 6f 6c 43 6f 75 6e 74 20 3d 20 24 6d 61 69 6e 52  olCount = $mainR
17c0: 6e 67 2e 43 6f 6c 75 6d 6e 73 2e 43 6f 75 6e 74  ng.Columns.Count
17d0: 20 0d 0a 24 52 6f 77 43 6f 75 6e 74 20 3d 20 24   ..$RowCount = $
17e0: 6d 61 69 6e 52 6e 67 2e 52 6f 77 73 2e 43 6f 75  mainRng.Rows.Cou
17f0: 6e 74 20 20 0d 0a 24 78 52 6f 77 20 3d 20 24 52  nt  ..$xRow = $R
1800: 6f 77 43 6f 75 6e 74 0d 0a 24 78 43 6f 6c 20 3d  owCount..$xCol =
1810: 20 24 43 6f 6c 43 6f 75 6e 74 20 0d 0a 0d 0a 23   $ColCount ....#
1820: 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f   _______________
1830: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1840: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1850: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1860: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20  _________..#..# 
1870: 48 6f 77 20 64 6f 20 49 20 6c 6f 6f 70 20 74 68  How do I loop th
1880: 72 6f 75 67 68 20 61 20 72 61 6e 67 65 20 6f 66  rough a range of
1890: 20 63 65 6c 6c 73 20 62 79 20 72 6f 77 20 6e 75   cells by row nu
18a0: 6d 62 65 72 3f 20 0d 0a 20 0d 0a 24 78 6c 20 3d  mber? .. ..$xl =
18b0: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d   New-Object -com
18c0: 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70 70  object excel.app
18d0: 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69  lication..$xl.Vi
18e0: 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24  sible = $true..$
18f0: 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72 74 73  xl.DisplayAlerts
1900: 20 3d 20 24 46 61 6c 73 65 20 0d 0a 24 77 62 20   = $False ..$wb 
1910: 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e  = $xl.Workbooks.
1920: 41 64 64 28 29 0d 0a 24 77 73 20 3d 20 24 77 62  Add()..$ws = $wb
1930: 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49 74 65 6d  .Worksheets.Item
1940: 28 31 29 0d 0a 66 6f 72 20 28 24 72 6f 77 20 3d  (1)..for ($row =
1950: 20 31 3b 20 24 72 6f 77 20 2d 6c 74 20 31 31 3b   1; $row -lt 11;
1960: 20 24 72 6f 77 2b 2b 29 0d 0a 7b 0d 0a 20 20 20   $row++)..{..   
1970: 20 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28   $ws.Cells.Item(
1980: 24 72 6f 77 2c 31 29 20 3d 20 24 72 6f 77 0d 0a  $row,1) = $row..
1990: 7d 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  }..# ___________
19a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
19b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
19c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
19d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23  _____________..#
19e0: 0d 0a 23 20 48 6f 77 20 64 6f 20 49 20 67 65 74  ..# How do I get
19f0: 20 74 6f 64 61 79 27 73 20 64 61 74 65 20 61 6e   today's date an
1a00: 64 20 66 6f 72 6d 61 74 20 69 74 20 61 73 20 61  d format it as a
1a10: 20 73 74 72 69 6e 67 3f 20 0d 0a 20 0d 0a 24 6d   string? .. ..$m
1a20: 20 3d 20 28 67 65 74 2d 64 61 74 65 29 2e 6d 6f   = (get-date).mo
1a30: 6e 74 68 0d 0a 24 64 20 3d 20 28 67 65 74 2d 64  nth..$d = (get-d
1a40: 61 74 65 29 2e 64 61 79 0d 0a 24 79 20 3d 20 5b  ate).day..$y = [
1a50: 73 74 72 69 6e 67 5d 20 28 67 65 74 2d 64 61 74  string] (get-dat
1a60: 65 29 2e 79 65 61 72 0d 0a 24 79 20 3d 20 24 79  e).year..$y = $y
1a70: 2e 73 75 62 73 74 72 69 6e 67 28 24 79 2e 6c 65  .substring($y.le
1a80: 6e 67 74 68 20 2d 20 32 2c 20 32 29 0d 0a 24 66  ngth - 2, 2)..$f
1a90: 20 3d 20 22 43 3a 5c 53 63 72 69 70 74 73 5c 22   = "C:\Scripts\"
1aa0: 20 2b 20 24 6d 20 2b 20 22 2d 22 20 2b 20 24 64   + $m + "-" + $d
1ab0: 20 2b 20 22 2d 22 20 2b 20 24 79 20 2b 20 22 2e   + "-" + $y + ".
1ac0: 78 6c 73 78 22 0d 0a 24 77 62 2e 53 61 76 65 41  xlsx"..$wb.SaveA
1ad0: 73 28 24 46 29 20 23 20 43 3a 5c 53 63 72 69 70  s($F) # C:\Scrip
1ae0: 74 73 5c 36 2d 31 38 2d 31 30 2e 78 6c 73 78 20  ts\6-18-10.xlsx 
1af0: 0d 0a 0d 0a 23 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f  ....#..# _______
1b00: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1b10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1b20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1b30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1b40: 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20 49  _..#..# How do I
1b50: 20 77 72 69 74 65 20 61 20 6c 69 73 74 20 6f 66   write a list of
1b60: 20 66 69 6c 65 73 20 74 6f 20 45 78 63 65 6c 3f   files to Excel?
1b70: 20 0d 0a 20 0d 0a 24 78 6c 20 3d 20 6e 65 77 2d   .. ..$xl = new-
1b80: 6f 62 6a 65 63 74 20 2d 63 6f 6d 6f 62 6a 65 63  object -comobjec
1b90: 74 20 65 78 63 65 6c 2e 61 70 70 6c 69 63 61 74  t excel.applicat
1ba0: 69 6f 6e 0d 0a 24 78 6c 2e 56 69 73 69 62 6c 65  ion..$xl.Visible
1bb0: 20 3d 20 24 74 72 75 65 0d 0a 24 78 6c 2e 44 69   = $true..$xl.Di
1bc0: 73 70 6c 61 79 41 6c 65 72 74 73 20 3d 20 24 46  splayAlerts = $F
1bd0: 61 6c 73 65 20 0d 0a 24 77 62 20 3d 20 24 78 6c  alse ..$wb = $xl
1be0: 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 41 64 64 28 29  .Workbooks.Add()
1bf0: 0d 0a 24 77 73 20 3d 20 24 77 62 2e 57 6f 72 6b  ..$ws = $wb.Work
1c00: 73 68 65 65 74 73 2e 49 74 65 6d 28 31 29 0d 0a  sheets.Item(1)..
1c10: 24 72 6f 77 20 3d 20 31 0d 0a 24 73 20 3d 20 64  $row = 1..$s = d
1c20: 69 72 20 5a 3a 5c 4d 42 53 41 5f 52 65 70 6f 72  ir Z:\MBSA_Repor
1c30: 74 5c 53 63 61 6e 44 61 74 61 5c 2a 2e 6d 62 73  t\ScanData\*.mbs
1c40: 61 0d 0a 24 73 20 7c 20 66 6f 72 65 61 63 68 20  a..$s | foreach 
1c50: 2d 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20  -process {..    
1c60: 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 24  $ws.Cells.Item($
1c70: 72 6f 77 2c 31 29 20 3d 20 24 5f 3b 0d 0a 20 20  row,1) = $_;..  
1c80: 20 20 24 72 6f 77 2b 2b 0d 0a 7d 0d 0a 0d 0a 23    $row++..}....#
1c90: 0d 0a 23 20 74 68 69 73 20 74 61 6b 65 73 20 61  ..# this takes a
1ca0: 20 6c 6f 6e 67 20 66 69 6c 65 20 6e 61 6d 65 20   long file name 
1cb0: 77 69 74 68 20 73 70 61 63 65 73 20 61 6e 64 20  with spaces and 
1cc0: 73 70 6c 69 74 73 20 69 74 20 75 70 2c 0d 0a 23  splits it up,..#
1cd0: 20 49 74 20 74 68 65 6e 20 70 69 63 6b 73 20 6f   It then picks o
1ce0: 75 74 20 74 68 65 20 33 72 64 20 65 6c 65 6d 65  ut the 3rd eleme
1cf0: 6e 74 20 61 6e 64 20 77 72 69 74 65 73 20 69 74  nt and writes it
1d00: 20 6f 75 74 2e 0d 0a 23 20 54 68 65 20 33 72 64   out...# The 3rd
1d10: 20 65 6c 65 6d 65 6e 74 20 69 73 20 5b 32 5d 20   element is [2] 
1d20: 62 65 63 61 75 73 65 20 74 68 65 20 66 69 72 73  because the firs
1d30: 74 20 6f 6e 65 20 69 73 20 5b 30 5d 2e 0d 0a 23  t one is [0]...#
1d40: 20 73 61 6d 70 6c 65 20 66 69 6c 65 20 6e 61 6d   sample file nam
1d50: 65 3a 20 41 44 2d 44 6f 6d 20 2d 20 33 49 44 43  e: AD-Dom - 3IDC
1d60: 54 30 30 31 20 28 35 2d 32 31 2d 32 30 31 30 20  T001 (5-21-2010 
1d70: 34 2d 32 38 20 50 4d 29 2e 6d 62 73 61 20 0d 0a  4-28 PM).mbsa ..
1d80: 20 0d 0a 24 78 6c 20 3d 20 6e 65 77 2d 6f 62 6a   ..$xl = new-obj
1d90: 65 63 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 65  ect -comobject e
1da0: 78 63 65 6c 2e 61 70 70 6c 69 63 61 74 69 6f 6e  xcel.application
1db0: 0d 0a 24 78 6c 2e 56 69 73 69 62 6c 65 20 3d 20  ..$xl.Visible = 
1dc0: 24 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c  $true..$xl.Displ
1dd0: 61 79 41 6c 65 72 74 73 20 3d 20 24 46 61 6c 73  ayAlerts = $Fals
1de0: 65 20 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 57 6f  e ..$wb = $xl.Wo
1df0: 72 6b 62 6f 6f 6b 73 2e 41 64 64 28 29 0d 0a 24  rkbooks.Add()..$
1e00: 77 73 20 3d 20 24 77 62 2e 57 6f 72 6b 73 68 65  ws = $wb.Workshe
1e10: 65 74 73 2e 49 74 65 6d 28 31 29 0d 0a 24 72 6f  ets.Item(1)..$ro
1e20: 77 20 3d 20 31 0d 0a 64 69 72 20 5a 3a 5c 4d 42  w = 1..dir Z:\MB
1e30: 53 41 5f 52 65 70 6f 72 74 5c 53 63 61 6e 44 61  SA_Report\ScanDa
1e40: 74 61 5c 2a 2e 6d 62 73 61 20 7c 0d 0a 46 6f 72  ta\*.mbsa |..For
1e50: 45 61 63 68 2d 4f 62 6a 65 63 74 20 7b 0d 0a 24  Each-Object {..$
1e60: 46 69 6c 65 4e 61 6d 65 20 3d 20 24 5f 2e 6e 61  FileName = $_.na
1e70: 6d 65 0d 0a 24 4e 20 3d 20 24 46 69 6c 65 4e 61  me..$N = $FileNa
1e80: 6d 65 2e 74 6f 73 74 72 69 6e 67 28 29 0d 0a 24  me.tostring()..$
1e90: 45 20 3d 20 24 4e 2e 73 70 6c 69 74 28 29 0d 0a  E = $N.split()..
1ea0: 24 46 20 3d 20 24 45 5b 32 5d 0d 0a 24 77 73 2e  $F = $E[2]..$ws.
1eb0: 43 65 6c 6c 73 2e 49 74 65 6d 28 24 72 6f 77 2c  Cells.Item($row,
1ec0: 31 29 20 3d 20 24 46 3b 0d 0a 20 20 20 20 24 72  1) = $F;..    $r
1ed0: 6f 77 2b 2b 0d 0a 7d 0d 0a 23 4f 72 20 66 6f 72  ow++..}..#Or for
1ee0: 20 74 68 65 20 77 68 6f 6c 65 20 66 69 6c 65 20   the whole file 
1ef0: 6e 61 6d 65 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e  name..$ws.Cells.
1f00: 49 74 65 6d 28 24 72 6f 77 2c 31 29 20 3d 20 24  Item($row,1) = $
1f10: 5f 3b 0d 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f  _;....# ________
1f20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1f30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1f40: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1f50: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1f60: 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20 49 20  ..#..# How do I 
1f70: 77 72 69 74 65 20 61 20 6c 69 73 74 20 6f 66 20  write a list of 
1f80: 70 72 6f 63 65 73 73 65 73 20 74 6f 20 45 78 63  processes to Exc
1f90: 65 6c 3f 20 0d 0a 20 0d 0a 66 75 6e 63 74 69 6f  el? .. ..functio
1fa0: 6e 20 52 65 6c 65 61 73 65 2d 52 65 66 20 28 24  n Release-Ref ($
1fb0: 72 65 66 29 20 7b 0d 0a 23 5b 53 79 73 74 65 6d  ref) {..#[System
1fc0: 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70  .Runtime.Interop
1fd0: 73 65 72 76 69 63 65 73 2e 4d 61 72 73 68 61 6c  services.Marshal
1fe0: 5d 3a 3a 52 65 6c 65 61 73 65 43 6f 6d 4f 62 6a  ]::ReleaseComObj
1ff0: 65 63 74 28 24 78 6c 29 0d 0a 5b 53 79 73 74 65  ect($xl)..[Syste
2000: 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f  m.Runtime.Intero
2010: 70 53 65 72 76 69 63 65 73 2e 4d 61 72 73 68 61  pServices.Marsha
2020: 6c 5d 3a 3a 52 65 6c 65 61 73 65 43 6f 6d 4f 62  l]::ReleaseComOb
2030: 6a 65 63 74 28 24 72 65 66 29 0d 0a 5b 53 79 73  ject($ref)..[Sys
2040: 74 65 6d 2e 47 43 5d 3a 3a 43 6f 6c 6c 65 63 74  tem.GC]::Collect
2050: 28 29 0d 0a 5b 53 79 73 74 65 6d 2e 47 43 5d 3a  ()..[System.GC]:
2060: 3a 57 61 69 74 46 6f 72 50 65 6e 64 69 6e 67 46  :WaitForPendingF
2070: 69 6e 61 6c 69 7a 65 72 73 28 29 0d 0a 7d 0d 0a  inalizers()..}..
2080: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # --------------
2090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20b0: 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 78 6c 20 3d 20 4e  -------..$xl = N
20c0: 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d 6f 62  ew-Object -comob
20d0: 6a 65 63 74 20 45 78 63 65 6c 2e 41 70 70 6c 69  ject Excel.Appli
20e0: 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69 73 69  cation..$xl.Visi
20f0: 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24 78 6c  ble = $true..$xl
2100: 2e 44 69 73 70 6c 61 79 41 6c 65 72 74 73 20 3d  .DisplayAlerts =
2110: 20 24 46 61 6c 73 65 20 0d 0a 24 77 62 20 3d 20   $False ..$wb = 
2120: 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 41 64  $xl.Workbooks.Ad
2130: 64 28 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e 57  d()..$ws = $wb.W
2140: 6f 72 6b 73 68 65 65 74 73 2e 49 74 65 6d 28 31  orksheets.Item(1
2150: 29 0d 0a 24 72 61 6e 67 65 20 3d 20 24 77 73 2e  )..$range = $ws.
2160: 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31 29 0d  Cells.Item(1,1).
2170: 0a 24 72 6f 77 20 3d 20 31 0d 0a 24 73 20 3d 20  .$row = 1..$s = 
2180: 47 65 74 2d 50 72 6f 63 65 73 73 20 7c 20 53 65  Get-Process | Se
2190: 6c 65 63 74 2d 4f 62 6a 65 63 74 20 6e 61 6d 65  lect-Object name
21a0: 0d 0a 24 73 20 7c 20 66 6f 72 65 61 63 68 20 2d  ..$s | foreach -
21b0: 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20 24  process {..    $
21c0: 72 61 6e 67 65 20 3d 20 24 77 73 2e 43 65 6c 6c  range = $ws.Cell
21d0: 73 2e 49 74 65 6d 28 24 72 6f 77 2c 31 29 3b 0d  s.Item($row,1);.
21e0: 0a 20 20 20 20 24 72 61 6e 67 65 2e 56 61 6c 75  .    $range.Valu
21f0: 65 20 3d 20 24 5f 2e 4e 61 6d 65 3b 0d 0a 20 20  e = $_.Name;..  
2200: 20 20 24 72 6f 77 2b 2b 20 7d 20 0d 0a 24 77 62    $row++ } ..$wb
2210: 2e 53 61 76 65 41 73 28 22 43 3a 5c 53 63 72 69  .SaveAs("C:\Scri
2220: 70 74 73 5c 47 65 74 5f 50 72 6f 63 65 73 73 2e  pts\Get_Process.
2230: 78 6c 73 22 29 0d 0a 52 65 6c 65 61 73 65 2d 52  xls")..Release-R
2240: 65 66 20 24 72 61 6e 67 65 0d 0a 52 65 6c 65 61  ef $range..Relea
2250: 73 65 2d 52 65 66 20 24 77 73 0d 0a 52 65 6c 65  se-Ref $ws..Rele
2260: 61 73 65 2d 52 65 66 20 24 77 62 0d 0a 24 78 6c  ase-Ref $wb..$xl
2270: 2e 51 75 69 74 28 29 0d 0a 52 65 6c 65 61 73 65  .Quit()..Release
2280: 2d 52 65 66 20 24 78 6c 0d 0a 23 2a 2a 2a 46 6f  -Ref $xl..#***Fo
2290: 72 20 61 20 72 65 6d 6f 74 65 20 6d 61 63 68 69  r a remote machi
22a0: 6e 65 20 74 72 79 0d 0a 24 73 74 72 43 6f 6d 70  ne try..$strComp
22b0: 75 74 65 72 20 3d 20 28 72 65 6d 6f 74 65 20 6d  uter = (remote m
22c0: 61 63 68 69 6e 65 20 6e 61 6d 65 29 0d 0a 24 50  achine name)..$P
22d0: 20 3d 20 67 77 6d 69 20 77 69 6e 33 32 5f 70 72   = gwmi win32_pr
22e0: 6f 63 65 73 73 20 2d 63 6f 6d 70 20 24 73 74 72  ocess -comp $str
22f0: 43 6f 6d 70 75 74 65 72 0d 0a 0d 0a 23 20 5f 5f  Computer....# __
2300: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2310: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2320: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2330: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2340: 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77  ______..#..# How
2350: 20 64 6f 20 49 20 77 72 69 74 65 20 74 68 65 20   do I write the 
2360: 63 6f 6d 6d 61 6e 64 20 68 69 73 74 6f 72 79 20  command history 
2370: 74 6f 20 45 78 63 65 6c 3f 20 0d 0a 20 0d 0a 66  to Excel? .. ..f
2380: 75 6e 63 74 69 6f 6e 20 52 65 6c 65 61 73 65 2d  unction Release-
2390: 52 65 66 20 28 24 72 65 66 29 20 7b 0d 0a 23 5b  Ref ($ref) {..#[
23a0: 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49  System.Runtime.I
23b0: 6e 74 65 72 6f 70 73 65 72 76 69 63 65 73 2e 4d  nteropservices.M
23c0: 61 72 73 68 61 6c 5d 3a 3a 52 65 6c 65 61 73 65  arshal]::Release
23d0: 43 6f 6d 4f 62 6a 65 63 74 28 24 78 6c 29 0d 0a  ComObject($xl)..
23e0: 5b 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e  [System.Runtime.
23f0: 49 6e 74 65 72 6f 70 53 65 72 76 69 63 65 73 2e  InteropServices.
2400: 4d 61 72 73 68 61 6c 5d 3a 3a 52 65 6c 65 61 73  Marshal]::Releas
2410: 65 43 6f 6d 4f 62 6a 65 63 74 28 24 72 65 66 29  eComObject($ref)
2420: 0d 0a 5b 53 79 73 74 65 6d 2e 47 43 5d 3a 3a 43  ..[System.GC]::C
2430: 6f 6c 6c 65 63 74 28 29 0d 0a 5b 53 79 73 74 65  ollect()..[Syste
2440: 6d 2e 47 43 5d 3a 3a 57 61 69 74 46 6f 72 50 65  m.GC]::WaitForPe
2450: 6e 64 69 6e 67 46 69 6e 61 6c 69 7a 65 72 73 28  ndingFinalizers(
2460: 29 0d 0a 7d 0d 0a 0d 0a 24 78 6c 20 3d 20 4e 65  )..}....$xl = Ne
2470: 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d 6f 62 6a  w-Object -comobj
2480: 65 63 74 20 45 78 63 65 6c 2e 41 70 70 6c 69 63  ect Excel.Applic
2490: 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69 73 69 62  ation..$xl.Visib
24a0: 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24 78 6c 2e  le = $true..$xl.
24b0: 44 69 73 70 6c 61 79 41 6c 65 72 74 73 20 3d 20  DisplayAlerts = 
24c0: 24 46 61 6c 73 65 20 0d 0a 24 77 62 20 3d 20 24  $False ..$wb = $
24d0: 65 78 63 65 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e  excel.Workbooks.
24e0: 41 64 64 28 29 0d 0a 24 77 73 20 3d 20 24 77 6f  Add()..$ws = $wo
24f0: 72 6b 62 6f 6f 6b 2e 57 6f 72 6b 73 68 65 65 74  rkbook.Worksheet
2500: 73 2e 49 74 65 6d 28 31 29 0d 0a 24 72 61 6e 67  s.Item(1)..$rang
2510: 65 20 3d 20 24 77 6f 72 6b 73 68 65 65 74 2e 43  e = $worksheet.C
2520: 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31 29 0d 0a  ells.Item(1,1)..
2530: 24 72 6f 77 20 3d 20 31 0d 0a 24 73 20 3d 20 47  $row = 1..$s = G
2540: 65 74 2d 48 69 73 74 6f 72 79 20 7c 20 53 65 6c  et-History | Sel
2550: 65 63 74 2d 4f 62 6a 65 63 74 20 43 6f 6d 6d 61  ect-Object Comma
2560: 6e 64 4c 69 6e 65 20 24 73 20 7c 20 66 6f 72 65  ndLine $s | fore
2570: 61 63 68 20 2d 70 72 6f 63 65 73 73 20 7b 20 60  ach -process { `
2580: 0d 0a 24 72 61 6e 67 65 20 3d 20 24 77 6f 72 6b  ..$range = $work
2590: 73 68 65 65 74 2e 43 65 6c 6c 73 2e 49 74 65 6d  sheet.Cells.Item
25a0: 28 24 72 6f 77 2c 31 29 3b 20 60 0d 0a 24 72 61  ($row,1); `..$ra
25b0: 6e 67 65 2e 56 61 6c 75 65 20 3d 20 24 5f 2e 43  nge.Value = $_.C
25c0: 6f 6d 6d 61 6e 64 4c 69 6e 65 3b 20 60 0d 0a 24  ommandLine; `..$
25d0: 72 6f 77 2b 2b 20 7d 0d 0a 24 78 6c 2e 44 69 73  row++ }..$xl.Dis
25e0: 70 6c 61 79 41 6c 65 72 74 73 20 3d 20 24 46 61  playAlerts = $Fa
25f0: 6c 73 65 0d 0a 24 77 62 2e 53 61 76 65 41 73 28  lse..$wb.SaveAs(
2600: 22 43 3a 5c 53 63 72 69 70 74 73 5c 47 65 74 5f  "C:\Scripts\Get_
2610: 43 6f 6d 6d 61 6e 64 4c 69 6e 65 2e 78 6c 73 22  CommandLine.xls"
2620: 29 0d 0a 52 65 6c 65 61 73 65 2d 52 65 66 20 24  )..Release-Ref $
2630: 72 61 6e 67 65 0d 0a 52 65 6c 65 61 73 65 2d 52  range..Release-R
2640: 65 66 20 24 77 73 0d 0a 52 65 6c 65 61 73 65 2d  ef $ws..Release-
2650: 52 65 66 20 24 77 62 0d 0a 24 78 6c 2e 51 75 69  Ref $wb..$xl.Qui
2660: 74 28 29 0d 0a 52 65 6c 65 61 73 65 2d 52 65 66  t()..Release-Ref
2670: 20 24 78 6c 0d 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f   $xl....# ______
2680: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2690: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
26a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
26b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
26c0: 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 43 61 6e  __..#..# How Can
26d0: 20 49 20 43 6f 6e 76 65 72 74 20 61 20 54 69 6c   I Convert a Til
26e0: 64 65 2d 44 65 6c 69 6d 69 74 65 64 20 46 69 6c  de-Delimited Fil
26f0: 65 20 74 6f 20 4d 69 63 72 6f 73 6f 66 74 20 45  e to Microsoft E
2700: 78 63 65 6c 20 46 6f 72 6d 61 74 3f 0d 0a 23 20  xcel Format?..# 
2710: 53 63 72 69 70 74 20 6e 61 6d 65 3a 20 43 6f 6e  Script name: Con
2720: 76 65 72 74 54 69 6c 64 65 2e 70 73 31 0d 0a 23  vertTilde.ps1..#
2730: 20 43 72 65 61 74 65 64 20 6f 6e 3a 20 32 30 30   Created on: 200
2740: 37 2d 30 31 2d 30 36 0d 0a 23 20 41 75 74 68 6f  7-01-06..# Autho
2750: 72 3a 20 4b 65 6e 74 20 46 69 6e 6b 6c 65 0d 0a  r: Kent Finkle..
2760: 23 20 50 75 72 70 6f 73 65 3a 20 48 6f 77 20 43  # Purpose: How C
2770: 61 6e 20 49 20 43 6f 6e 76 65 72 74 20 61 20 54  an I Convert a T
2780: 69 6c 64 65 2d 44 65 6c 69 6d 69 74 65 64 20 46  ilde-Delimited F
2790: 69 6c 65 20 74 6f 20 4d 69 63 72 6f 73 6f 66 74  ile to Microsoft
27a0: 20 45 78 63 65 6c 20 46 6f 72 6d 61 74 3f 20 0d   Excel Format? .
27b0: 0a 20 0d 0a 24 73 20 3d 20 67 63 20 43 3a 5c 53  . ..$s = gc C:\S
27c0: 63 72 69 70 74 73 5c 54 65 73 74 2e 74 78 74 0d  cripts\Test.txt.
27d0: 0a 24 73 20 3d 20 24 73 20 2d 72 65 70 6c 61 63  .$s = $s -replac
27e0: 65 28 22 7e 22 2c 22 60 74 22 29 0d 0a 24 73 20  e("~","`t")..$s 
27f0: 7c 20 73 63 20 43 3a 5c 53 63 72 69 70 74 73 5c  | sc C:\Scripts\
2800: 54 65 73 74 2e 74 78 74 0d 0a 24 78 6c 20 3d 20  Test.txt..$xl = 
2810: 6e 65 77 2d 6f 62 6a 65 63 74 20 2d 63 6f 6d 6f  new-object -como
2820: 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70 70 6c  bject excel.appl
2830: 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69 73  ication..$xl.Vis
2840: 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24 78  ible = $true..$x
2850: 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72 74 73 20  l.DisplayAlerts 
2860: 3d 20 24 46 61 6c 73 65 0d 0a 24 77 62 20 3d 20  = $False..$wb = 
2870: 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 4f 70  $xl.Workbooks.Op
2880: 65 6e 28 22 43 3a 5c 53 63 72 69 70 74 73 5c 54  en("C:\Scripts\T
2890: 65 73 74 2e 74 78 74 22 29 0d 0a 0d 0a 23 20 5f  est.txt")....# _
28a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
28b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
28c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
28d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
28e0: 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f  _______..#..# Ho
28f0: 77 20 63 61 6e 20 49 20 61 64 64 20 56 61 6c 69  w can I add Vali
2900: 64 61 74 69 6f 6e 20 74 6f 20 61 6e 20 45 78 63  dation to an Exc
2910: 65 6c 20 57 6f 72 6b 73 68 65 65 74 3f 0d 0a 23  el Worksheet?..#
2920: 0d 0a 23 20 24 63 6f 6d 6d 65 6e 74 73 20 3d 20  ..# $comments = 
2930: 40 27 0d 0a 23 20 53 63 72 69 70 74 20 6e 61 6d  @'..# Script nam
2940: 65 3a 20 41 64 64 2d 56 61 6c 69 64 61 74 69 6f  e: Add-Validatio
2950: 6e 2e 70 73 31 0d 0a 23 20 43 72 65 61 74 65 64  n.ps1..# Created
2960: 20 6f 6e 3a 20 57 65 64 6e 65 73 64 61 79 2c 20   on: Wednesday, 
2970: 53 65 70 74 65 6d 62 65 72 20 31 39 2c 20 32 30  September 19, 20
2980: 30 37 0d 0a 23 20 41 75 74 68 6f 72 3a 20 4b 65  07..# Author: Ke
2990: 6e 74 20 46 69 6e 6b 6c 65 0d 0a 23 20 50 75 72  nt Finkle..# Pur
29a0: 70 6f 73 65 3a 20 48 6f 77 20 63 61 6e 20 49 20  pose: How can I 
29b0: 75 73 65 20 57 69 6e 64 6f 77 73 20 50 6f 77 65  use Windows Powe
29c0: 72 73 68 65 6c 6c 20 74 6f 20 41 64 64 20 56 61  rshell to Add Va
29d0: 6c 69 64 61 74 69 6f 6e 20 74 6f 20 61 6e 0d 0a  lidation to an..
29e0: 23 20 45 78 63 65 6c 20 57 6f 72 6b 73 68 65 65  # Excel Workshee
29f0: 74 3f 0d 0a 23 20 27 40 0d 0a 23 2d 2d 2d 2d 2d  t?..# '@..#-----
2a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a30: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 52 65 6c  ....function Rel
2a40: 65 61 73 65 2d 52 65 66 20 28 24 72 65 66 29 20  ease-Ref ($ref) 
2a50: 7b 0d 0a 28 5b 53 79 73 74 65 6d 2e 52 75 6e 74  {..([System.Runt
2a60: 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69  ime.InteropServi
2a70: 63 65 73 2e 4d 61 72 73 68 61 6c 5d 3a 3a 52 65  ces.Marshal]::Re
2a80: 6c 65 61 73 65 43 6f 6d 4f 62 6a 65 63 74 28 0d  leaseComObject(.
2a90: 0a 5b 53 79 73 74 65 6d 2e 5f 5f 43 6f 6d 4f 62  .[System.__ComOb
2aa0: 6a 65 63 74 5d 24 72 65 66 29 20 2d 67 74 20 30  ject]$ref) -gt 0
2ab0: 29 0d 0a 5b 53 79 73 74 65 6d 2e 47 43 5d 3a 3a  )..[System.GC]::
2ac0: 43 6f 6c 6c 65 63 74 28 29 0d 0a 5b 53 79 73 74  Collect()..[Syst
2ad0: 65 6d 2e 47 43 5d 3a 3a 57 61 69 74 46 6f 72 50  em.GC]::WaitForP
2ae0: 65 6e 64 69 6e 67 46 69 6e 61 6c 69 7a 65 72 73  endingFinalizers
2af0: 28 29 0d 0a 7d 20 23 20 45 6e 64 20 46 75 6e 63  ()..} # End Func
2b00: 74 69 6f 6e 20 0d 0a 24 78 6c 56 61 6c 69 64 61  tion ..$xlValida
2b10: 74 65 57 68 6f 6c 65 4e 75 6d 62 65 72 20 3d 20  teWholeNumber = 
2b20: 31 0d 0a 24 78 6c 56 61 6c 69 64 41 6c 65 72 74  1..$xlValidAlert
2b30: 53 74 6f 70 20 3d 20 31 0d 0a 24 78 6c 42 65 74  Stop = 1..$xlBet
2b40: 77 65 65 6e 20 3d 20 31 0d 0a 24 78 6c 20 3d 20  ween = 1..$xl = 
2b50: 6e 65 77 2d 6f 62 6a 65 63 74 20 2d 63 6f 6d 6f  new-object -como
2b60: 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70 70 6c  bject excel.appl
2b70: 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69 73  ication..$xl.Vis
2b80: 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24 78  ible = $true..$x
2b90: 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72 74 73 20  l.DisplayAlerts 
2ba0: 3d 20 24 46 61 6c 73 65 20 0d 0a 24 77 62 20 3d  = $False ..$wb =
2bb0: 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 41   $xl.Workbooks.A
2bc0: 64 64 28 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e  dd()..$ws = $wb.
2bd0: 57 6f 72 6b 73 68 65 65 74 73 2e 49 74 65 6d 28  Worksheets.Item(
2be0: 31 29 0d 0a 24 72 20 3d 20 24 77 73 2e 52 61 6e  1)..$r = $ws.Ran
2bf0: 67 65 28 22 65 35 22 29 0d 0a 24 72 2e 56 61 6c  ge("e5")..$r.Val
2c00: 69 64 61 74 69 6f 6e 2e 41 64 64 28 24 78 6c 56  idation.Add($xlV
2c10: 61 6c 69 64 61 74 65 57 68 6f 6c 65 4e 75 6d 62  alidateWholeNumb
2c20: 65 72 2c 24 78 6c 56 61 6c 69 64 41 6c 65 72 74  er,$xlValidAlert
2c30: 53 74 6f 70 2c 20 24 78 6c 42 65 74 77 65 65 6e  Stop, $xlBetween
2c40: 2c 20 22 35 22 2c 20 22 31 30 22 29 0d 0a 24 72  , "5", "10")..$r
2c50: 2e 56 61 6c 69 64 61 74 69 6f 6e 2e 49 6e 70 75  .Validation.Inpu
2c60: 74 54 69 74 6c 65 20 3d 20 22 49 6e 74 65 67 65  tTitle = "Intege
2c70: 72 73 22 0d 0a 24 72 2e 56 61 6c 69 64 61 74 69  rs"..$r.Validati
2c80: 6f 6e 2e 45 72 72 6f 72 54 69 74 6c 65 20 3d 20  on.ErrorTitle = 
2c90: 22 49 6e 74 65 67 65 72 73 22 0d 0a 24 72 2e 56  "Integers"..$r.V
2ca0: 61 6c 69 64 61 74 69 6f 6e 2e 49 6e 70 75 74 4d  alidation.InputM
2cb0: 65 73 73 61 67 65 20 3d 20 22 45 6e 74 65 72 20  essage = "Enter 
2cc0: 61 6e 20 69 6e 74 65 67 65 72 20 66 72 6f 6d 20  an integer from 
2cd0: 66 69 76 65 20 74 6f 20 74 65 6e 22 0d 0a 24 72  five to ten"..$r
2ce0: 2e 56 61 6c 69 64 61 74 69 6f 6e 2e 45 72 72 6f  .Validation.Erro
2cf0: 72 4d 65 73 73 61 67 65 20 3d 20 22 59 6f 75 20  rMessage = "You 
2d00: 6d 75 73 74 20 65 6e 74 65 72 20 61 20 6e 75 6d  must enter a num
2d10: 62 65 72 20 66 72 6f 6d 20 66 69 76 65 20 74 6f  ber from five to
2d20: 20 74 65 6e 22 20 0d 0a 24 61 20 3d 20 52 65 6c   ten" ..$a = Rel
2d30: 65 61 73 65 2d 52 65 66 20 24 72 0d 0a 24 61 20  ease-Ref $r..$a 
2d40: 3d 20 52 65 6c 65 61 73 65 2d 52 65 66 20 24 77  = Release-Ref $w
2d50: 73 0d 0a 24 61 20 3d 20 52 65 6c 65 61 73 65 2d  s..$a = Release-
2d60: 52 65 66 20 24 77 62 0d 0a 24 61 20 3d 20 52 65  Ref $wb..$a = Re
2d70: 6c 65 61 73 65 2d 52 65 66 20 24 78 6c 0d 0a 0d  lease-Ref $xl...
2d80: 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  .# _____________
2d90: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2da0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2db0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2dc0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a  ___________..#..
2dd0: 23 20 48 6f 77 20 64 6f 20 49 20 61 64 64 20 61  # How do I add a
2de0: 20 43 68 61 72 74 20 74 6f 20 61 6e 20 45 78 63   Chart to an Exc
2df0: 65 6c 20 57 6f 72 6b 73 68 65 65 74 3f 20 0d 0a  el Worksheet? ..
2e00: 20 0d 0a 24 78 72 6f 77 20 3d 20 31 0d 0a 24 79   ..$xrow = 1..$y
2e10: 72 6f 77 20 3d 20 38 0d 0a 24 78 6c 20 3d 20 4e  row = 8..$xl = N
2e20: 65 77 2d 4f 62 6a 65 63 74 20 2d 63 20 65 78 63  ew-Object -c exc
2e30: 65 6c 2e 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a  el.application..
2e40: 24 78 6c 2e 76 69 73 69 62 6c 65 20 3d 20 24 74  $xl.visible = $t
2e50: 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79  rue..$xl.Display
2e60: 41 6c 65 72 74 73 20 3d 20 24 46 61 6c 73 65 20  Alerts = $False 
2e70: 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 77 6f 72 6b  ..$wb = $xl.work
2e80: 62 6f 6f 6b 73 2e 61 64 64 28 29 0d 0a 24 77 73  books.add()..$ws
2e90: 20 3d 20 24 77 62 2e 73 68 65 65 74 73 2e 69 74   = $wb.sheets.it
2ea0: 65 6d 28 31 29 0d 0a 31 2e 2e 38 20 7c 20 25 20  em(1)..1..8 | % 
2eb0: 7b 20 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d  { $ws.Cells.Item
2ec0: 28 31 2c 24 5f 29 20 3d 20 24 5f 20 7d 0d 0a 31  (1,$_) = $_ }..1
2ed0: 2e 2e 38 20 7c 20 25 20 7b 20 24 77 73 2e 43 65  ..8 | % { $ws.Ce
2ee0: 6c 6c 73 2e 49 74 65 6d 28 32 2c 24 5f 29 20 3d  lls.Item(2,$_) =
2ef0: 20 39 2d 24 5f 20 7d 0d 0a 24 72 61 6e 67 65 20   9-$_ }..$range 
2f00: 3d 20 24 77 73 2e 72 61 6e 67 65 28 22 61 24 7b  = $ws.range("a${
2f10: 78 72 6f 77 7d 3a 68 24 79 72 6f 77 22 29 0d 0a  xrow}:h$yrow")..
2f20: 24 72 61 6e 67 65 2e 61 63 74 69 76 61 74 65 0d  $range.activate.
2f30: 0a 23 20 63 72 65 61 74 65 20 61 6e 64 20 61 73  .# create and as
2f40: 73 69 67 6e 20 74 68 65 20 63 68 61 72 74 20 74  sign the chart t
2f50: 6f 20 61 20 76 61 72 69 61 62 6c 65 0d 0a 24 63  o a variable..$c
2f60: 68 20 3d 20 24 78 6c 2e 63 68 61 72 74 73 2e 61  h = $xl.charts.a
2f70: 64 64 28 29 20 20 20 23 20 54 68 69 73 20 77 69  dd()   # This wi
2f80: 6c 6c 20 6f 70 65 6e 20 61 20 6e 65 77 20 73 68  ll open a new sh
2f90: 65 65 74 0d 0a 24 63 68 20 3d 20 24 77 73 2e 73  eet..$ch = $ws.s
2fa0: 68 61 70 65 73 2e 61 64 64 43 68 61 72 74 28 29  hapes.addChart()
2fb0: 2e 63 68 61 72 74 20 23 20 54 68 69 73 20 77 69  .chart # This wi
2fc0: 6c 6c 20 70 75 74 20 74 68 65 20 43 68 61 72 74  ll put the Chart
2fd0: 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
2fe0: 20 57 6f 72 6b 53 68 65 65 74 0d 0a 24 63 68 2e   WorkSheet..$ch.
2ff0: 63 68 61 72 74 54 79 70 65 20 3d 20 35 38 0d 0a  chartType = 58..
3000: 24 63 68 2e 73 65 74 53 6f 75 72 63 65 44 61 74  $ch.setSourceDat
3010: 61 28 24 72 61 6e 67 65 29 0d 0a 24 63 68 2e 65  a($range)..$ch.e
3020: 78 70 6f 72 74 28 22 43 3a 5c 74 65 73 74 2e 6a  xport("C:\test.j
3030: 70 67 22 29 0d 0a 24 78 6c 2e 71 75 69 74 28 29  pg")..$xl.quit()
3040: 20 0d 0a 23 20 65 78 63 65 6c 20 68 61 73 20 34   ..# excel has 4
3050: 38 20 63 68 61 72 74 20 73 74 79 6c 65 73 2c 20  8 chart styles, 
3060: 79 6f 75 20 63 61 6e 20 63 79 63 6c 65 20 74 68  you can cycle th
3070: 72 6f 75 67 68 20 61 6c 6c 0d 0a 31 2e 2e 34 38  rough all..1..48
3080: 20 7c 20 25 20 7b 24 63 68 2e 63 68 61 72 74 53   | % {$ch.chartS
3090: 74 79 6c 65 20 3d 20 24 5f 3b 20 24 78 6c 2e 73  tyle = $_; $xl.s
30a0: 70 65 65 63 68 2e 73 70 65 61 6b 28 22 53 74 79  peech.speak("Sty
30b0: 6c 65 20 24 5f 22 29 3b 20 73 6c 65 65 70 20 31  le $_"); sleep 1
30c0: 7d 0d 0a 24 63 68 2e 63 68 61 72 74 53 74 79 6c  }..$ch.chartStyl
30d0: 65 20 3d 20 32 37 20 20 20 20 20 20 23 20 3c 2d  e = 27      # <-
30e0: 2d 20 75 73 65 20 74 68 65 20 6f 6e 65 20 79 6f  - use the one yo
30f0: 75 20 6c 69 6b 65 20 0d 0a 0d 0a 23 20 41 6e 64  u like ....# And
3100: 20 61 6e 6f 74 68 65 72 20 43 68 61 72 74 20 73   another Chart s
3110: 61 6d 70 6c 65 3a 0d 0a 0d 0a 46 75 6e 63 74 69  ample:....Functi
3120: 6f 6e 20 58 4c 63 68 61 72 74 73 20 7b 0d 0a 24  on XLcharts {..$
3130: 78 6c 43 6f 6c 75 6d 6e 43 6c 75 73 74 65 72 65  xlColumnClustere
3140: 64 20 3d 20 35 31 0d 0a 24 78 6c 43 6f 6c 75 6d  d = 51..$xlColum
3150: 6e 73 20 3d 20 32 0d 0a 24 78 6c 4c 6f 63 61 74  ns = 2..$xlLocat
3160: 69 6f 6e 41 73 4f 62 6a 65 63 74 20 3d 20 32 0d  ionAsObject = 2.
3170: 0a 24 78 6c 43 61 74 65 67 6f 72 79 20 3d 20 31  .$xlCategory = 1
3180: 0d 0a 24 78 6c 50 72 69 6d 61 72 79 20 3d 20 31  ..$xlPrimary = 1
3190: 0d 0a 24 78 6c 56 61 6c 75 65 20 3d 20 32 0d 0a  ..$xlValue = 2..
31a0: 24 78 6c 52 6f 77 73 20 3d 20 31 0d 0a 24 78 6c  $xlRows = 1..$xl
31b0: 4c 6f 63 61 74 69 6f 6e 41 73 4e 65 77 53 68 65  LocationAsNewShe
31c0: 65 74 20 3d 20 31 0d 0a 24 78 6c 52 69 67 68 74  et = 1..$xlRight
31d0: 20 3d 20 2d 34 31 35 32 0d 0a 24 78 6c 42 75 69   = -4152..$xlBui
31e0: 6c 74 49 6e 20 3d 32 31 0d 0a 24 78 6c 43 61 74  ltIn =21..$xlCat
31f0: 65 67 6f 72 79 20 3d 20 31 20 0d 0a 24 78 6c 20  egory = 1 ..$xl 
3200: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f  = New-Object -co
3210: 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70  mobject excel.ap
3220: 70 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56  plication..$xl.V
3230: 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a  isible = $true..
3240: 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72 74  $xl.DisplayAlert
3250: 73 20 3d 20 24 46 61 6c 73 65 20 0d 0a 24 77 62  s = $False ..$wb
3260: 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73   = $xl.Workbooks
3270: 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d 20 24 77  .Add()..$ws = $w
3280: 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49 74 65  b.Worksheets.Ite
3290: 6d 28 31 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e  m(1)..$ws = $wb.
32a0: 53 68 65 65 74 73 2e 41 64 64 28 29 0d 0a 24 77  Sheets.Add()..$w
32b0: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 20  s.Cells.Item(1, 
32c0: 32 29 20 3d 20 20 22 4a 61 6e 22 0d 0a 24 77 73  2) =  "Jan"..$ws
32d0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 20 33  .Cells.Item(1, 3
32e0: 29 20 3d 20 20 22 46 65 62 22 0d 0a 24 77 73 2e  ) =  "Feb"..$ws.
32f0: 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 20 34 29  Cells.Item(1, 4)
3300: 20 3d 20 20 22 4d 61 72 22 0d 0a 24 77 73 2e 43   =  "Mar"..$ws.C
3310: 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 20 31 29 20  ells.Item(2, 1) 
3320: 3d 20 20 22 4a 6f 68 6e 22 0d 0a 24 77 73 2e 43  =  "John"..$ws.C
3330: 65 6c 6c 73 2e 49 74 65 6d 28 33 2c 20 31 29 20  ells.Item(3, 1) 
3340: 3d 20 20 22 4d 61 65 22 0d 0a 24 77 73 2e 43 65  =  "Mae"..$ws.Ce
3350: 6c 6c 73 2e 49 74 65 6d 28 34 2c 20 31 29 20 3d  lls.Item(4, 1) =
3360: 20 20 22 41 6c 22 0d 0a 24 77 73 2e 43 65 6c 6c    "Al"..$ws.Cell
3370: 73 2e 49 74 65 6d 28 32 2c 20 32 29 20 3d 20 20  s.Item(2, 2) =  
3380: 31 30 30 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49  100..$ws.Cells.I
3390: 74 65 6d 28 32 2c 20 33 29 20 3d 20 20 32 30 30  tem(2, 3) =  200
33a0: 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d  ..$ws.Cells.Item
33b0: 28 32 2c 20 34 29 20 3d 20 20 33 30 30 0d 0a 24  (2, 4) =  300..$
33c0: 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 33 2c  ws.Cells.Item(3,
33d0: 20 32 29 20 3d 20 20 34 30 30 0d 0a 24 77 73 2e   2) =  400..$ws.
33e0: 43 65 6c 6c 73 2e 49 74 65 6d 28 33 2c 20 33 29  Cells.Item(3, 3)
33f0: 20 3d 20 20 35 30 30 0d 0a 24 77 73 2e 43 65 6c   =  500..$ws.Cel
3400: 6c 73 2e 49 74 65 6d 28 33 2c 20 34 29 20 3d 20  ls.Item(3, 4) = 
3410: 20 36 30 30 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e   600..$ws.Cells.
3420: 49 74 65 6d 28 34 2c 20 32 29 20 3d 20 20 39 30  Item(4, 2) =  90
3430: 30 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65  0..$ws.Cells.Ite
3440: 6d 28 34 2c 20 33 29 20 3d 20 20 38 30 30 0d 0a  m(4, 3) =  800..
3450: 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 34  $ws.Cells.Item(4
3460: 2c 20 34 29 20 3d 20 20 37 30 30 20 0d 0a 24 52  , 4) =  700 ..$R
3470: 61 6e 67 65 20 3d 20 24 77 73 2e 72 61 6e 67 65  ange = $ws.range
3480: 28 22 41 31 3a 44 34 22 29 0d 0a 24 63 68 20 3d  ("A1:D4")..$ch =
3490: 20 24 78 6c 2e 63 68 61 72 74 73 2e 61 64 64 28   $xl.charts.add(
34a0: 29 0d 0a 24 63 68 2e 63 68 61 72 74 54 79 70 65  )..$ch.chartType
34b0: 20 3d 20 35 38 0d 0a 24 63 68 2e 6e 61 6d 65 20   = 58..$ch.name 
34c0: 3d 22 42 61 72 20 43 68 61 72 74 22 0d 0a 24 63  ="Bar Chart"..$c
34d0: 68 2e 54 61 62 2e 43 6f 6c 6f 72 49 6e 64 65 78  h.Tab.ColorIndex
34e0: 20 3d 20 33 0d 0a 24 63 68 2e 73 65 74 53 6f 75   = 3..$ch.setSou
34f0: 72 63 65 44 61 74 61 28 24 52 61 6e 67 65 29 0d  rceData($Range).
3500: 0a 5b 76 6f 69 64 5d 24 63 68 2e 4c 6f 63 61 74  .[void]$ch.Locat
3510: 69 6f 6e 2c 20 24 78 6c 4c 6f 63 61 74 69 6f 6e  ion, $xlLocation
3520: 41 73 4f 62 6a 65 63 74 2c 20 22 42 61 72 20 43  AsObject, "Bar C
3530: 68 61 72 74 22 0d 0a 24 63 68 2e 48 61 73 54 69  hart"..$ch.HasTi
3540: 74 6c 65 20 3d 20 24 46 61 6c 73 65 0d 0a 24 63  tle = $False..$c
3550: 68 2e 41 78 65 73 28 24 78 6c 43 61 74 65 67 6f  h.Axes($xlCatego
3560: 72 79 2c 20 24 78 6c 50 72 69 6d 61 72 79 29 2e  ry, $xlPrimary).
3570: 48 61 73 54 69 74 6c 65 20 3d 20 24 46 61 6c 73  HasTitle = $Fals
3580: 65 0d 0a 24 63 68 2e 41 78 65 73 28 24 78 6c 56  e..$ch.Axes($xlV
3590: 61 6c 75 65 2c 20 24 78 6c 50 72 69 6d 61 72 79  alue, $xlPrimary
35a0: 29 2e 48 61 73 54 69 74 6c 65 20 3d 20 24 46 61  ).HasTitle = $Fa
35b0: 6c 73 65 20 0d 0a 24 63 68 32 20 3d 20 24 78 6c  lse ..$ch2 = $xl
35c0: 2e 43 68 61 72 74 73 2e 41 64 64 28 29 20 7c 20  .Charts.Add() | 
35d0: 4f 75 74 2d 4e 75 6c 6c 0d 0a 24 63 68 32 2e 48  Out-Null..$ch2.H
35e0: 61 73 54 69 74 6c 65 20 3d 20 24 74 72 75 65 0d  asTitle = $true.
35f0: 0a 24 63 68 32 2e 43 68 61 72 74 54 69 74 6c 65  .$ch2.ChartTitle
3600: 2e 54 65 78 74 20 3d 20 22 53 61 6c 65 73 22 0d  .Text = "Sales".
3610: 0a 24 63 68 32 2e 41 78 65 73 28 24 78 6c 43 61  .$ch2.Axes($xlCa
3620: 74 65 67 6f 72 79 29 2e 48 61 73 54 69 74 6c 65  tegory).HasTitle
3630: 20 3d 20 24 74 72 75 65 0d 0a 24 63 68 32 2e 41   = $true..$ch2.A
3640: 78 65 73 28 24 78 6c 43 61 74 65 67 6f 72 79 29  xes($xlCategory)
3650: 2e 41 78 69 73 54 69 74 6c 65 2e 54 65 78 74 20  .AxisTitle.Text 
3660: 3d 20 22 31 73 74 20 51 75 61 72 74 65 72 22 0d  = "1st Quarter".
3670: 0a 24 63 68 32 2e 41 78 65 73 28 24 78 6c 56 61  .$ch2.Axes($xlVa
3680: 6c 75 65 29 2e 48 61 73 54 69 74 6c 65 20 3d 20  lue).HasTitle = 
3690: 24 54 72 75 65 0d 0a 24 63 68 32 2e 41 78 65 73  $True..$ch2.Axes
36a0: 28 24 78 6c 56 61 6c 75 65 29 2e 41 78 69 73 54  ($xlValue).AxisT
36b0: 69 74 6c 65 2e 54 65 78 74 20 3d 20 22 44 6f 6c  itle.Text = "Dol
36c0: 6c 61 72 73 22 0d 0a 5b 76 6f 69 64 5d 24 63 68  lars"..[void]$ch
36d0: 32 2e 41 78 65 73 28 24 78 6c 56 61 6c 75 65 29  2.Axes($xlValue)
36e0: 2e 53 65 6c 65 63 74 0d 0a 24 63 68 32 2e 6e 61  .Select..$ch2.na
36f0: 6d 65 20 3d 22 43 6f 6c 75 6d 6e 73 20 77 69 74  me ="Columns wit
3700: 68 20 44 65 70 74 68 22 0d 0a 24 63 68 32 2e 54  h Depth"..$ch2.T
3710: 61 62 2e 43 6f 6c 6f 72 49 6e 64 65 78 20 3d 20  ab.ColorIndex = 
3720: 35 0d 0a 5b 76 6f 69 64 5d 24 77 73 2e 63 65 6c  5..[void]$ws.cel
3730: 6c 73 2e 65 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e  ls.entireColumn.
3740: 41 75 74 6f 66 69 74 28 29 0d 0a 7d 20 23 20 45  Autofit()..} # E
3750: 6e 64 20 46 75 6e 63 74 69 6f 6e 0d 0a 23 20 5f  nd Function..# _
3760: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3770: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3780: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3790: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
37a0: 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f  _______..#..# Ho
37b0: 77 20 64 6f 20 49 20 4d 6f 76 65 20 61 6e 64 20  w do I Move and 
37c0: 72 65 73 69 7a 65 20 61 20 63 68 61 72 74 20 69  resize a chart i
37d0: 6e 20 61 6e 20 45 78 63 65 6c 20 57 6f 72 6b 73  n an Excel Works
37e0: 68 65 65 74 3f 20 0d 0a 0d 0a 24 78 6c 20 3d 20  heet? ....$xl = 
37f0: 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d 6f  New-Object -como
3800: 62 6a 65 63 74 20 45 78 63 65 6c 2e 41 70 70 6c  bject Excel.Appl
3810: 69 63 61 74 69 6f 6e 09 23 20 4f 70 65 6e 73 20  ication.# Opens 
3820: 45 78 63 65 6c 20 61 6e 64 20 33 20 65 6d 70 74  Excel and 3 empt
3830: 79 20 57 6f 72 6b 73 68 65 65 74 73 0d 0a 23 20  y Worksheets..# 
3840: 53 68 6f 77 20 45 78 63 65 6c 0d 0a 24 78 6c 2e  Show Excel..$xl.
3850: 76 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d  visible = $true.
3860: 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72  .$xl.DisplayAler
3870: 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a 23 20 4f  ts = $False..# O
3880: 70 65 6e 20 61 20 77 6f 72 6b 62 6f 6f 6b 0d 0a  pen a workbook..
3890: 24 77 62 20 3d 20 24 78 6c 2e 77 6f 72 6b 62 6f  $wb = $xl.workbo
38a0: 6f 6b 73 2e 61 64 64 28 29 20 0d 0a 23 43 72 65  oks.add() ..#Cre
38b0: 61 74 65 20 57 6f 72 6b 73 68 65 65 74 73 0d 0a  ate Worksheets..
38c0: 24 77 73 20 3d 20 24 77 62 2e 57 6f 72 6b 73 68  $ws = $wb.Worksh
38d0: 65 65 74 73 2e 49 74 65 6d 28 31 29 0d 0a 31 2e  eets.Item(1)..1.
38e0: 2e 38 20 7c 20 25 20 7b 20 24 77 73 2e 43 65 6c  .8 | % { $ws.Cel
38f0: 6c 73 2e 49 74 65 6d 28 31 2c 24 5f 29 20 3d 20  ls.Item(1,$_) = 
3900: 24 5f 20 7d 09 09 09 23 20 61 64 64 73 20 73 6f  $_ }...# adds so
3910: 6d 65 20 64 61 74 61 0d 0a 31 2e 2e 38 20 7c 20  me data..1..8 | 
3920: 25 20 7b 20 24 77 73 2e 43 65 6c 6c 73 2e 49 74  % { $ws.Cells.It
3930: 65 6d 28 32 2c 24 5f 29 20 3d 20 39 2d 24 5f 20  em(2,$_) = 9-$_ 
3940: 7d 09 09 23 20 61 64 64 73 20 73 6f 6d 65 20 64  }..# adds some d
3950: 61 74 61 0d 0a 23 20 3c 20 2d 2d 2d 2d 2d 20 54  ata..# < ----- T
3960: 68 69 73 20 69 73 20 74 68 65 20 67 6f 6f 64 20  his is the good 
3970: 70 61 72 74 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  part -----------
3980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
39a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e 0d 0a 24  ------------>..$
39b0: 72 61 6e 67 65 20 3d 20 24 77 73 2e 72 61 6e 67  range = $ws.rang
39c0: 65 28 22 61 24 7b 78 72 6f 77 7d 3a 68 24 79 72  e("a${xrow}:h$yr
39d0: 6f 77 22 29 09 09 09 23 20 73 65 74 73 20 74 68  ow")...# sets th
39e0: 65 20 44 61 74 61 20 72 61 6e 67 65 20 77 65 20  e Data range we 
39f0: 77 61 6e 74 20 74 6f 20 63 68 61 72 74 0d 0a 23  want to chart..#
3a00: 20 63 72 65 61 74 65 20 61 6e 64 20 61 73 73 69   create and assi
3a10: 67 6e 20 74 68 65 20 63 68 61 72 74 20 74 6f 20  gn the chart to 
3a20: 61 20 76 61 72 69 61 62 6c 65 0d 0a 23 24 63 68  a variable..#$ch
3a30: 20 3d 20 24 78 6c 2e 63 68 61 72 74 73 2e 61 64   = $xl.charts.ad
3a40: 64 28 29 09 09 09 09 09 09 09 23 20 54 68 69 73  d().......# This
3a50: 20 77 69 6c 6c 20 6f 70 65 6e 20 61 20 6e 65 77   will open a new
3a60: 20 73 68 65 65 74 0d 0a 24 63 68 20 3d 20 24 77   sheet..$ch = $w
3a70: 73 2e 73 68 61 70 65 73 2e 61 64 64 43 68 61 72  s.shapes.addChar
3a80: 74 28 29 2e 63 68 61 72 74 09 09 09 09 23 20 54  t().chart....# T
3a90: 68 69 73 20 77 69 6c 6c 20 70 75 74 20 74 68 65  his will put the
3aa0: 20 43 68 61 72 74 20 69 6e 20 74 68 65 20 73 65   Chart in the se
3ab0: 6c 65 63 74 65 64 20 57 6f 72 6b 53 68 65 65 74  lected WorkSheet
3ac0: 0d 0a 24 63 68 2e 63 68 61 72 74 54 79 70 65 20  ..$ch.chartType 
3ad0: 3d 20 35 38 09 09 09 09 09 09 09 09 23 20 53 65  = 58........# Se
3ae0: 6c 65 63 74 20 43 68 61 72 74 20 54 79 70 65 0d  lect Chart Type.
3af0: 0a 24 63 68 2e 73 65 74 53 6f 75 72 63 65 44 61  .$ch.setSourceDa
3b00: 74 61 28 24 72 61 6e 67 65 29 09 09 09 09 09 09  ta($range)......
3b10: 23 20 43 72 65 61 74 65 20 74 68 65 20 43 68 61  # Create the Cha
3b20: 72 74 0d 0a 24 52 6e 67 54 6f 43 6f 76 65 72 20  rt..$RngToCover 
3b30: 3d 20 24 77 73 2e 52 61 6e 67 65 28 22 44 35 3a  = $ws.Range("D5:
3b40: 4a 31 39 22 29 09 09 09 09 23 20 54 68 69 73 20  J19")....# This 
3b50: 69 73 20 77 68 65 72 65 20 77 65 20 77 61 6e 74  is where we want
3b60: 20 74 68 65 20 63 68 61 72 74 0d 0a 24 43 68 74   the chart..$Cht
3b70: 4f 62 20 3d 20 24 63 68 2e 50 61 72 65 6e 74 09  Ob = $ch.Parent.
3b80: 09 09 09 09 09 09 09 23 20 54 68 69 73 20 73 65  .......# This se
3b90: 6c 65 63 74 73 20 74 68 65 20 63 75 72 65 6e 74  lects the curent
3ba0: 20 43 68 61 72 74 0d 0a 24 43 68 74 4f 62 2e 54   Chart..$ChtOb.T
3bb0: 6f 70 20 3d 20 24 52 6e 67 54 6f 43 6f 76 65 72  op = $RngToCover
3bc0: 2e 54 6f 70 09 09 09 09 09 23 20 54 68 69 73 20  .Top.....# This 
3bd0: 6d 6f 76 65 73 20 69 74 20 75 70 20 74 6f 20 72  moves it up to r
3be0: 6f 77 20 35 0d 0a 24 43 68 74 4f 62 2e 4c 65 66  ow 5..$ChtOb.Lef
3bf0: 74 20 3d 20 24 52 6e 67 54 6f 43 6f 76 65 72 2e  t = $RngToCover.
3c00: 4c 65 66 74 09 09 09 09 09 23 20 61 6e 64 20 74  Left.....# and t
3c10: 6f 20 63 6f 6c 75 6d 6e 20 44 20 0d 0a 24 43 68  o column D ..$Ch
3c20: 74 4f 62 2e 48 65 69 67 68 74 20 3d 20 24 52 6e  tOb.Height = $Rn
3c30: 67 54 6f 43 6f 76 65 72 2e 48 65 69 67 68 74 09  gToCover.Height.
3c40: 09 09 09 23 20 72 65 73 69 7a 65 20 54 68 69 73  ...# resize This
3c50: 20 73 65 74 73 20 74 68 65 20 68 65 69 67 68 74   sets the height
3c60: 20 6f 66 20 79 6f 75 72 20 63 68 61 72 74 20 74   of your chart t
3c70: 6f 20 52 6f 77 73 20 35 20 2d 20 31 39 0d 0a 24  o Rows 5 - 19..$
3c80: 43 68 74 4f 62 2e 57 69 64 74 68 20 3d 20 24 52  ChtOb.Width = $R
3c90: 6e 67 54 6f 43 6f 76 65 72 2e 57 69 64 74 68 09  ngToCover.Width.
3ca0: 09 09 09 23 20 72 65 73 69 7a 65 20 54 68 69 73  ...# resize This
3cb0: 20 73 65 74 73 20 74 68 65 20 77 69 64 74 68 20   sets the width 
3cc0: 74 6f 20 43 6f 6c 75 6d 6e 73 20 44 20 2d 20 4a  to Columns D - J
3cd0: 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ..# ____________
3ce0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3cf0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3d00: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3d10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d  ____________..#.
3d20: 0a 23 20 48 6f 77 20 64 6f 20 49 20 73 6f 72 74  .# How do I sort
3d30: 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61 6e 20   a column in an 
3d40: 45 78 63 65 6c 20 57 6f 72 6b 73 68 65 65 74 3f  Excel Worksheet?
3d50: 20 0d 0a 20 0d 0a 24 78 6c 53 75 6d 6d 61 72 79   .. ..$xlSummary
3d60: 41 62 6f 76 65 20 3d 20 30 0d 0a 24 78 6c 53 6f  Above = 0..$xlSo
3d70: 72 74 56 61 6c 75 65 73 20 3d 20 24 78 6c 50 69  rtValues = $xlPi
3d80: 6e 59 69 6e 20 3d 20 31 0d 0a 24 78 6c 41 73 63  nYin = 1..$xlAsc
3d90: 65 6e 64 69 6e 67 20 3d 20 31 0d 0a 24 78 6c 44  ending = 1..$xlD
3da0: 65 73 63 65 6e 64 69 6e 67 20 3d 20 32 0d 0a 24  escending = 2..$
3db0: 78 6c 59 65 73 20 3d 20 31 20 0d 0a 24 78 6c 20  xlYes = 1 ..$xl 
3dc0: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f  = New-Object -co
3dd0: 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70  mobject excel.ap
3de0: 70 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56  plication..$xl.V
3df0: 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a  isible = $true..
3e00: 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65 72 74  $xl.DisplayAlert
3e10: 73 20 3d 20 24 46 61 6c 73 65 20 0d 0a 24 77 62  s = $False ..$wb
3e20: 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73   = $xl.Workbooks
3e30: 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d 20 24 77  .Add()..$ws = $w
3e40: 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49 74 65  b.Worksheets.Ite
3e50: 6d 28 31 29 20 0d 0a 23 20 6f 6e 65 2d 63 6f 6c  m(1) ..# one-col
3e60: 75 6d 6e 20 73 6f 72 74 0d 0a 24 72 20 3d 20 24  umn sort..$r = $
3e70: 77 73 2e 55 73 65 64 52 61 6e 67 65 0d 0a 24 72  ws.UsedRange..$r
3e80: 32 20 3d 20 24 77 73 2e 52 61 6e 67 65 28 22 42  2 = $ws.Range("B
3e90: 32 22 29 20 23 20 53 6f 72 74 73 20 6f 6e 20 43  2") # Sorts on C
3ea0: 6f 6c 75 6d 6e 20 42 20 61 6e 64 20 6c 65 61 76  olumn B and leav
3eb0: 65 73 20 48 65 61 64 65 72 20 61 6c 6f 6e 65 20  es Header alone 
3ec0: 0d 0a 24 61 20 3d 20 24 72 2e 73 6f 72 74 28 24  ..$a = $r.sort($
3ed0: 72 32 2c 20 24 78 6c 41 73 63 65 6e 64 69 6e 67  r2, $xlAscending
3ee0: 29 20 0d 0a 23 20 74 77 6f 2d 63 6f 6c 75 6d 6e  ) ..# two-column
3ef0: 20 73 6f 72 74 0d 0a 24 72 20 3d 20 24 77 73 2e   sort..$r = $ws.
3f00: 55 73 65 64 52 61 6e 67 65 0d 0a 24 72 32 20 3d  UsedRange..$r2 =
3f10: 20 24 77 73 2e 52 61 6e 67 65 28 22 42 32 22 29   $ws.Range("B2")
3f20: 0d 0a 24 72 33 20 3d 20 24 77 73 2e 52 61 6e 67  ..$r3 = $ws.Rang
3f30: 65 28 22 45 32 22 29 0d 0a 24 61 20 3d 20 24 72  e("E2")..$a = $r
3f40: 2e 73 6f 72 74 28 24 72 32 2c 20 24 78 6c 41 73  .sort($r2, $xlAs
3f50: 63 65 6e 64 69 6e 67 2c 20 24 72 33 2c 24 6e 75  cending, $r3,$nu
3f60: 6c 6c 2c 20 24 78 6c 41 73 63 65 6e 64 69 6e 67  ll, $xlAscending
3f70: 29 20 0d 0a 23 20 74 68 72 65 65 2d 63 6f 6c 75  ) ..# three-colu
3f80: 6d 6e 20 73 6f 72 74 0d 0a 24 72 20 3d 20 24 77  mn sort..$r = $w
3f90: 73 31 2e 55 73 65 64 52 61 6e 67 65 0d 0a 24 72  s1.UsedRange..$r
3fa0: 32 20 3d 20 24 77 73 31 2e 52 61 6e 67 65 28 22  2 = $ws1.Range("
3fb0: 42 32 22 29 0d 0a 24 72 33 20 3d 20 24 77 73 31  B2")..$r3 = $ws1
3fc0: 2e 52 61 6e 67 65 28 22 45 32 22 29 0d 0a 24 72  .Range("E2")..$r
3fd0: 34 20 3d 20 24 77 73 31 2e 52 61 6e 67 65 28 22  4 = $ws1.Range("
3fe0: 43 32 22 29 20 0d 0a 24 61 20 3d 20 24 72 2e 53  C2") ..$a = $r.S
3ff0: 6f 72 74 28 24 72 32 2c 24 78 6c 44 65 73 63 65  ort($r2,$xlDesce
4000: 6e 64 69 6e 67 2c 24 72 33 2c 24 6e 75 6c 6c 2c  nding,$r3,$null,
4010: 24 78 6c 41 73 63 65 6e 64 69 6e 67 2c 20 60 0d  $xlAscending, `.
4020: 0a 24 72 34 2c 24 78 6c 41 73 63 65 6e 64 69 6e  .$r4,$xlAscendin
4030: 67 2c 24 78 6c 59 65 73 29 0d 0a 0d 0a 23 2d 2d  g,$xlYes)....#--
4040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4070: 2d 2d 2d 0d 0a 23 20 48 6f 77 20 64 6f 20 49 20  ---..# How do I 
4080: 75 73 65 20 78 6c 43 6f 6e 73 74 61 6e 74 73 3f  use xlConstants?
4090: 20 0d 0a 20 0d 0a 24 78 6c 41 75 74 6f 6d 61 74   .. ..$xlAutomat
40a0: 69 63 3d 2d 34 31 30 35 0d 0a 24 78 6c 42 6f 74  ic=-4105..$xlBot
40b0: 74 6f 6d 20 3d 20 2d 34 31 30 37 0d 0a 24 78 6c  tom = -4107..$xl
40c0: 43 65 6e 74 65 72 20 3d 20 2d 34 31 30 38 0d 0a  Center = -4108..
40d0: 24 78 6c 43 6f 6e 74 65 78 74 20 3d 20 2d 35 30  $xlContext = -50
40e0: 30 32 0d 0a 24 78 6c 43 6f 6e 74 69 6e 75 6f 75  02..$xlContinuou
40f0: 73 3d 31 0d 0a 24 78 6c 44 69 61 67 6f 6e 61 6c  s=1..$xlDiagonal
4100: 44 6f 77 6e 3d 35 0d 0a 24 78 6c 44 69 61 67 6f  Down=5..$xlDiago
4110: 6e 61 6c 55 70 3d 36 0d 0a 24 78 6c 45 64 67 65  nalUp=6..$xlEdge
4120: 42 6f 74 74 6f 6d 3d 39 0d 0a 24 78 6c 45 64 67  Bottom=9..$xlEdg
4130: 65 4c 65 66 74 3d 37 0d 0a 24 78 6c 45 64 67 65  eLeft=7..$xlEdge
4140: 52 69 67 68 74 3d 31 30 0d 0a 24 78 6c 45 64 67  Right=10..$xlEdg
4150: 65 54 6f 70 3d 38 0d 0a 24 78 6c 49 6e 73 69 64  eTop=8..$xlInsid
4160: 65 48 6f 72 69 7a 6f 6e 74 61 6c 3d 31 32 0d 0a  eHorizontal=12..
4170: 24 78 6c 49 6e 73 69 64 65 56 65 72 74 69 63 61  $xlInsideVertica
4180: 6c 3d 31 31 0d 0a 24 78 6c 4e 6f 6e 65 3d 2d 34  l=11..$xlNone=-4
4190: 31 34 32 0d 0a 24 78 6c 54 68 69 6e 3d 32 20 0d  142..$xlThin=2 .
41a0: 0a 24 78 6c 20 3d 20 6e 65 77 2d 6f 62 6a 65 63  .$xl = new-objec
41b0: 74 20 2d 63 6f 6d 20 65 78 63 65 6c 2e 61 70 70  t -com excel.app
41c0: 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 76 69  lication..$xl.vi
41d0: 73 69 62 6c 65 3d 24 74 72 75 65 0d 0a 24 77 62  sible=$true..$wb
41e0: 20 3d 20 24 78 6c 2e 77 6f 72 6b 62 6f 6f 6b 73   = $xl.workbooks
41f0: 2e 6f 70 65 6e 28 22 64 3a 5c 62 6f 6f 6b 31 2e  .open("d:\book1.
4200: 78 6c 73 22 29 0d 0a 24 77 73 20 3d 20 24 77 62  xls")..$ws = $wb
4210: 2e 77 6f 72 6b 73 68 65 65 74 73 20 7c 20 77 68  .worksheets | wh
4220: 65 72 65 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65 71  ere {$_.name -eq
4230: 20 22 73 68 65 65 74 31 22 7d 0d 0a 24 73 65 6c   "sheet1"}..$sel
4240: 65 63 74 69 6f 6e 20 3d 20 24 77 73 2e 72 61 6e  ection = $ws.ran
4250: 67 65 28 22 41 31 3a 44 31 22 29 0d 0a 24 73 65  ge("A1:D1")..$se
4260: 6c 65 63 74 69 6f 6e 2e 73 65 6c 65 63 74 28 29  lection.select()
4270: 20 0d 0a 24 73 65 6c 65 63 74 69 6f 6e 2e 48 6f   ..$selection.Ho
4280: 72 69 7a 6f 6e 74 61 6c 41 6c 69 67 6e 6d 65 6e  rizontalAlignmen
4290: 74 20 3d 20 24 78 6c 43 65 6e 74 65 72 0d 0a 24  t = $xlCenter..$
42a0: 73 65 6c 65 63 74 69 6f 6e 2e 56 65 72 74 69 63  selection.Vertic
42b0: 61 6c 41 6c 69 67 6e 6d 65 6e 74 20 3d 20 24 78  alAlignment = $x
42c0: 6c 42 6f 74 74 6f 6d 0d 0a 24 73 65 6c 65 63 74  lBottom..$select
42d0: 69 6f 6e 2e 57 72 61 70 54 65 78 74 20 3d 20 24  ion.WrapText = $
42e0: 66 61 6c 73 65 0d 0a 24 73 65 6c 65 63 74 69 6f  false..$selectio
42f0: 6e 2e 4f 72 69 65 6e 74 61 74 69 6f 6e 20 3d 20  n.Orientation = 
4300: 30 0d 0a 24 73 65 6c 65 63 74 69 6f 6e 2e 41 64  0..$selection.Ad
4310: 64 49 6e 64 65 6e 74 20 3d 20 24 66 61 6c 73 65  dIndent = $false
4320: 0d 0a 24 73 65 6c 65 63 74 69 6f 6e 2e 49 6e 64  ..$selection.Ind
4330: 65 6e 74 4c 65 76 65 6c 20 3d 20 30 0d 0a 24 73  entLevel = 0..$s
4340: 65 6c 65 63 74 69 6f 6e 2e 53 68 72 69 6e 6b 54  election.ShrinkT
4350: 6f 46 69 74 20 3d 20 24 66 61 6c 73 65 0d 0a 24  oFit = $false..$
4360: 73 65 6c 65 63 74 69 6f 6e 2e 52 65 61 64 69 6e  selection.Readin
4370: 67 4f 72 64 65 72 20 3d 20 24 78 6c 43 6f 6e 74  gOrder = $xlCont
4380: 65 78 74 0d 0a 24 73 65 6c 65 63 74 69 6f 6e 2e  ext..$selection.
4390: 4d 65 72 67 65 43 65 6c 6c 73 20 3d 20 24 66 61  MergeCells = $fa
43a0: 6c 73 65 0d 0a 24 73 65 6c 65 63 74 69 6f 6e 2e  lse..$selection.
43b0: 42 6f 72 64 65 72 73 2e 49 74 65 6d 28 24 78 6c  Borders.Item($xl
43c0: 49 6e 73 69 64 65 48 6f 72 69 7a 6f 6e 74 61 6c  InsideHorizontal
43d0: 29 2e 57 65 69 67 68 74 20 3d 20 24 78 6c 54 68  ).Weight = $xlTh
43e0: 69 6e 20 0d 0a 20 0d 0a 23 23 20 59 6f 75 20 63  in .. ..## You c
43f0: 61 6e 20 61 6c 73 6f 20 74 72 79 20 74 68 69 73  an also try this
4400: 20 74 6f 20 63 65 6e 74 65 72 20 61 20 63 6f 6c   to center a col
4410: 75 6d 6e 3a 20 0d 0a 20 0d 0a 5b 72 65 66 6c 65  umn: .. ..[refle
4420: 63 74 69 6f 6e 2e 61 73 73 65 6d 62 6c 79 5d 3a  ction.assembly]:
4430: 3a 6c 6f 61 64 57 69 74 68 50 61 72 74 69 61 6c  :loadWithPartial
4440: 6e 61 6d 65 28 22 4d 69 63 72 6f 73 6f 66 74 2e  name("Microsoft.
4450: 4f 66 66 69 63 65 2e 49 6e 74 65 72 6f 70 2e 45  Office.Interop.E
4460: 78 63 65 6c 22 29 20 7c 0d 0a 4f 75 74 2d 4e 75  xcel") |..Out-Nu
4470: 6c 6c 0d 0a 24 78 6c 43 6f 6e 73 74 61 6e 74 73  ll..$xlConstants
4480: 20 3d 20 22 6d 69 63 72 6f 73 6f 66 74 2e 6f 66   = "microsoft.of
4490: 66 69 63 65 2e 69 6e 74 65 72 6f 70 2e 65 78 63  fice.interop.exc
44a0: 65 6c 2e 43 6f 6e 73 74 61 6e 74 73 22 20 2d 61  el.Constants" -a
44b0: 73 20 5b 74 79 70 65 5d 20 0d 0a 20 0d 0a 24 77  s [type] .. ..$w
44c0: 73 2e 63 6f 6c 75 6d 6e 73 2e 69 74 65 6d 28 22  s.columns.item("
44d0: 46 22 29 2e 48 6f 72 69 7a 6f 6e 74 61 6c 41 6c  F").HorizontalAl
44e0: 69 67 6e 6d 65 6e 74 20 3d 20 24 78 6c 43 6f 6e  ignment = $xlCon
44f0: 73 74 61 6e 74 73 3a 3a 78 6c 43 65 6e 74 65 72  stants::xlCenter
4500: 0d 0a 24 77 73 2e 63 6f 6c 75 6d 6e 73 2e 69 74  ..$ws.columns.it
4510: 65 6d 28 22 4b 22 29 2e 48 6f 72 69 7a 6f 6e 74  em("K").Horizont
4520: 61 6c 41 6c 69 67 6e 6d 65 6e 74 20 3d 20 24 78  alAlignment = $x
4530: 6c 43 6f 6e 73 74 61 6e 74 73 3a 3a 78 6c 43 65  lConstants::xlCe
4540: 6e 74 65 72 0d 0a 0d 0a 20 0d 0a 23 20 54 68 65  nter.... ..# The
4550: 20 6e 65 78 74 20 66 6f 75 72 20 6c 69 6e 65 73   next four lines
4560: 20 6f 66 20 63 6f 64 65 20 63 72 65 61 74 65 20   of code create 
4570: 66 6f 75 72 20 65 6e 75 6d 65 72 61 74 69 6f 6e  four enumeration
4580: 20 74 79 70 65 73 2e 0d 0a 23 20 45 6e 75 6d 65   types...# Enume
4590: 72 61 74 69 6f 6e 20 74 79 70 65 73 20 61 72 65  ration types are
45a0: 20 75 73 65 64 20 74 6f 20 74 65 6c 6c 20 45 78   used to tell Ex
45b0: 63 65 6c 20 77 68 69 63 68 20 76 61 6c 75 65 73  cel which values
45c0: 20 61 72 65 20 61 6c 6c 6f 77 65 64 0d 0a 23 20   are allowed..# 
45d0: 66 6f 72 20 73 70 65 63 69 66 69 63 20 74 79 70  for specific typ
45e0: 65 73 20 6f 66 20 6f 70 74 69 6f 6e 73 2e 20 41  es of options. A
45f0: 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20 78 6c  s an example, xl
4600: 4c 69 6e 65 53 74 79 6c 65 20 65 6e 75 6d 65 72  LineStyle enumer
4610: 61 74 69 6f 6e 0d 0a 23 20 69 73 20 75 73 65 64  ation..# is used
4620: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68   to determine th
4630: 65 20 6b 69 6e 64 20 6f 66 20 6c 69 6e 65 20 74  e kind of line t
4640: 6f 20 64 72 61 77 3a 20 64 6f 75 62 6c 65 2c 20  o draw: double, 
4650: 64 61 73 68 65 64 2c 20 61 6e 64 20 73 6f 20 6f  dashed, and so o
4660: 6e 2e 0d 0a 23 20 54 68 65 73 65 20 65 6e 75 6d  n...# These enum
4670: 65 72 61 74 69 6f 6e 20 76 61 6c 75 65 73 20 61  eration values a
4680: 72 65 20 64 6f 63 75 6d 65 6e 74 65 64 20 6f 6e  re documented on
4690: 20 4d 53 44 4e 2e 0d 0a 23 20 54 6f 20 6d 61 6b   MSDN...# To mak
46a0: 65 20 74 68 65 20 63 6f 64 65 20 65 61 73 69 65  e the code easie
46b0: 72 20 74 6f 20 72 65 61 64 2c 20 77 65 20 63 72  r to read, we cr
46c0: 65 61 74 65 20 73 68 6f 72 74 63 75 74 20 61 6c  eate shortcut al
46d0: 69 61 73 65 73 20 66 6f 72 20 65 61 63 68 0d 0a  iases for each..
46e0: 23 20 6f 66 20 74 68 65 20 66 6f 75 72 20 65 6e  # of the four en
46f0: 75 6d 65 72 61 74 69 6f 6e 20 74 79 70 65 73 20  umeration types 
4700: 77 65 20 77 69 6c 6c 20 62 65 20 75 73 69 6e 67  we will be using
4710: 2e 0d 0a 23 20 45 73 73 65 6e 74 69 61 6c 6c 79  ...# Essentially
4720: 2c 20 77 65 27 72 65 20 63 61 73 74 69 6e 67 20  , we're casting 
4730: 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 72 65  a string that re
4740: 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61 6d  presents the nam
4750: 65 20 6f 66 20 74 68 65 0d 0a 23 20 65 6e 75 6d  e of the..# enum
4760: 65 72 61 74 69 6f 6e 20 74 6f 20 61 20 5b 74 79  eration to a [ty
4770: 70 65 5d 2e 20 54 68 69 73 20 74 65 63 68 6e 69  pe]. This techni
4780: 71 75 65 20 69 73 20 61 63 74 75 61 6c 6c 79 20  que is actually 
4790: 61 20 70 72 65 74 74 79 20 63 6f 6f 6c 20 74 72  a pretty cool tr
47a0: 69 63 6b 3a 0d 0a 23 20 68 74 74 70 3a 2f 2f 74  ick:..# http://t
47b0: 65 63 68 6e 65 74 2e 6d 69 63 72 6f 73 6f 66 74  echnet.microsoft
47c0: 2e 63 6f 6d 2f 65 6e 2d 75 73 2f 6d 61 67 61 7a  .com/en-us/magaz
47d0: 69 6e 65 2f 32 30 30 39 2e 30 31 2e 68 65 79 73  ine/2009.01.heys
47e0: 63 72 69 70 74 69 6e 67 67 75 79 2e 61 73 70 78  criptingguy.aspx
47f0: 20 0d 0a 20 0d 0a 24 6c 69 6e 65 53 74 79 6c 65   .. ..$lineStyle
4800: 20 3d 20 22 6d 69 63 72 6f 73 6f 66 74 2e 6f 66   = "microsoft.of
4810: 66 69 63 65 2e 69 6e 74 65 72 6f 70 2e 65 78 63  fice.interop.exc
4820: 65 6c 2e 78 6c 4c 69 6e 65 53 74 79 6c 65 22 20  el.xlLineStyle" 
4830: 2d 61 73 20 5b 74 79 70 65 5d 0d 0a 24 63 6f 6c  -as [type]..$col
4840: 6f 72 49 6e 64 65 78 20 3d 20 22 6d 69 63 72 6f  orIndex = "micro
4850: 73 6f 66 74 2e 6f 66 66 69 63 65 2e 69 6e 74 65  soft.office.inte
4860: 72 6f 70 2e 65 78 63 65 6c 2e 78 6c 43 6f 6c 6f  rop.excel.xlColo
4870: 72 49 6e 64 65 78 22 20 2d 61 73 20 5b 74 79 70  rIndex" -as [typ
4880: 65 5d 0d 0a 24 62 6f 72 64 65 72 57 65 69 67 68  e]..$borderWeigh
4890: 74 20 3d 20 22 6d 69 63 72 6f 73 6f 66 74 2e 6f  t = "microsoft.o
48a0: 66 66 69 63 65 2e 69 6e 74 65 72 6f 70 2e 65 78  ffice.interop.ex
48b0: 63 65 6c 2e 78 6c 42 6f 72 64 65 72 57 65 69 67  cel.xlBorderWeig
48c0: 68 74 22 20 2d 61 73 20 5b 74 79 70 65 5d 0d 0a  ht" -as [type]..
48d0: 24 63 68 61 72 74 54 79 70 65 20 3d 20 22 6d 69  $chartType = "mi
48e0: 63 72 6f 73 6f 66 74 2e 6f 66 66 69 63 65 2e 69  crosoft.office.i
48f0: 6e 74 65 72 6f 70 2e 65 78 63 65 6c 2e 78 6c 43  nterop.excel.xlC
4900: 68 61 72 74 54 79 70 65 22 20 2d 61 73 20 5b 74  hartType" -as [t
4910: 79 70 65 5d 20 0d 0a 0d 0a 46 6f 72 28 24 62 20  ype] ....For($b 
4920: 3d 20 31 20 3b 20 24 62 20 2d 6c 65 20 32 20 3b  = 1 ; $b -le 2 ;
4930: 20 24 62 2b 2b 29 0d 0a 7b 0d 0a 24 77 73 2e 63   $b++)..{..$ws.c
4940: 65 6c 6c 73 2e 69 74 65 6d 28 31 2c 24 62 29 2e  ells.item(1,$b).
4950: 66 6f 6e 74 2e 62 6f 6c 64 20 3d 20 24 74 72 75  font.bold = $tru
4960: 65 0d 0a 24 77 73 2e 63 65 6c 6c 73 2e 69 74 65  e..$ws.cells.ite
4970: 6d 28 31 2c 24 62 29 2e 62 6f 72 64 65 72 73 2e  m(1,$b).borders.
4980: 4c 69 6e 65 53 74 79 6c 65 20 3d 20 24 6c 69 6e  LineStyle = $lin
4990: 65 53 74 79 6c 65 3a 3a 78 6c 44 61 73 68 44 6f  eStyle::xlDashDo
49a0: 74 0d 0a 24 77 73 2e 63 65 6c 6c 73 2e 69 74 65  t..$ws.cells.ite
49b0: 6d 28 31 2c 24 62 29 2e 62 6f 72 64 65 72 73 2e  m(1,$b).borders.
49c0: 43 6f 6c 6f 72 49 6e 64 65 78 20 3d 20 24 63 6f  ColorIndex = $co
49d0: 6c 6f 72 49 6e 64 65 78 3a 3a 78 6c 43 6f 6c 6f  lorIndex::xlColo
49e0: 72 49 6e 64 65 78 41 75 74 6f 6d 61 74 69 63 0d  rIndexAutomatic.
49f0: 0a 24 77 73 2e 63 65 6c 6c 73 2e 69 74 65 6d 28  .$ws.cells.item(
4a00: 31 2c 24 62 29 2e 62 6f 72 64 65 72 73 2e 77 65  1,$b).borders.we
4a10: 69 67 68 74 20 3d 20 24 62 6f 72 64 65 72 57 65  ight = $borderWe
4a20: 69 67 68 74 3a 3a 78 6c 4d 65 64 69 75 6d 0d 0a  ight::xlMedium..
4a30: 7d 0d 0a 24 77 6f 72 6b 62 6f 6f 6b 2e 41 63 74  }..$workbook.Act
4a40: 69 76 65 43 68 61 72 74 2e 63 68 61 72 74 54 79  iveChart.chartTy
4a50: 70 65 20 3d 20 24 63 68 61 72 74 54 79 70 65 3a  pe = $chartType:
4a60: 3a 78 6c 33 44 50 69 65 45 78 70 6c 6f 64 65 64  :xl3DPieExploded
4a70: 0d 0a 24 77 6f 72 6b 62 6f 6f 6b 2e 41 63 74 69  ..$workbook.Acti
4a80: 76 65 43 68 61 72 74 2e 53 65 74 53 6f 75 72 63  veChart.SetSourc
4a90: 65 44 61 74 61 28 24 72 61 6e 67 65 29 20 0d 0a  eData($range) ..
4aa0: 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ..# ____________
4ab0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4ac0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4ad0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4ae0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d  ____________..#.
4af0: 0a 23 20 48 6f 77 20 64 6f 20 49 20 75 73 65 20  .# How do I use 
4b00: 61 75 74 6f 66 69 6c 6c 20 69 6e 20 65 78 63 65  autofill in exce
4b10: 6c 3f 0d 0a 20 0d 0a 24 78 6c 46 69 6c 6c 57 65  l?.. ..$xlFillWe
4b20: 65 6b 64 61 79 73 20 3d 20 36 20 0d 0a 24 78 6c  ekdays = 6 ..$xl
4b30: 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63   = New-Object -c
4b40: 6f 6d 20 65 78 63 65 6c 2e 61 70 70 6c 69 63 61  om excel.applica
4b50: 74 69 6f 6e 0d 0a 24 78 6c 2e 76 69 73 69 62 6c  tion..$xl.visibl
4b60: 65 3d 24 74 72 75 65 0d 0a 24 77 62 20 3d 20 24  e=$true..$wb = $
4b70: 78 6c 2e 77 6f 72 6b 62 6f 6f 6b 73 2e 61 64 64  xl.workbooks.add
4b80: 28 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e 77 6f  ()..$ws = $wb.wo
4b90: 72 6b 73 68 65 65 74 73 20 7c 20 77 68 65 72 65  rksheets | where
4ba0: 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65 71 20 22 73   {$_.name -eq "s
4bb0: 68 65 65 74 31 22 7d 0d 0a 24 72 61 6e 67 65 31  heet1"}..$range1
4bc0: 3d 20 24 77 73 2e 72 61 6e 67 65 28 22 41 31 22  = $ws.range("A1"
4bd0: 29 0d 0a 24 72 61 6e 67 65 31 2e 76 61 6c 75 65  )..$range1.value
4be0: 28 29 20 3d 20 28 67 65 74 2d 64 61 74 65 29 2e  () = (get-date).
4bf0: 74 6f 53 74 72 69 6e 67 28 22 64 22 29 0d 0a 24  toString("d")..$
4c00: 72 61 6e 67 65 32 20 3d 20 24 77 73 2e 72 61 6e  range2 = $ws.ran
4c10: 67 65 28 22 41 31 3a 41 32 35 22 29 0d 0a 24 72  ge("A1:A25")..$r
4c20: 61 6e 67 65 31 2e 41 75 74 6f 46 69 6c 6c 28 24  ange1.AutoFill($
4c30: 72 61 6e 67 65 32 2c 24 78 6c 46 69 6c 6c 57 65  range2,$xlFillWe
4c40: 65 6b 64 61 79 73 29 0d 0a 24 72 61 6e 67 65 31  ekdays)..$range1
4c50: 2e 65 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e 41 75  .entireColumn.Au
4c60: 74 6f 66 69 74 28 29 20 0d 0a 23 20 41 6e 6f 74  tofit() ..# Anot
4c70: 68 65 72 20 65 78 61 6d 70 6c 65 3a 0d 0a 24 78  her example:..$x
4c80: 6c 43 65 6c 6c 54 79 70 65 4c 61 73 74 43 65 6c  lCellTypeLastCel
4c90: 6c 20 3d 20 31 31 0d 0a 24 78 6c 20 3d 20 6e 65  l = 11..$xl = ne
4ca0: 77 2d 6f 62 6a 65 63 74 20 2d 63 6f 6d 20 65 78  w-object -com ex
4cb0: 63 65 6c 2e 61 70 70 6c 69 63 61 74 69 6f 6e 0d  cel.application.
4cc0: 0a 24 78 6c 2e 76 69 73 69 62 6c 65 3d 24 74 72  .$xl.visible=$tr
4cd0: 75 65 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 77 6f  ue..$wb = $xl.wo
4ce0: 72 6b 62 6f 6f 6b 73 2e 61 64 64 28 29 0d 0a 24  rkbooks.add()..$
4cf0: 77 73 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65  ws = $wb.workshe
4d00: 65 74 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e  ets | where {$_.
4d10: 6e 61 6d 65 20 2d 65 71 20 22 73 68 65 65 74 31  name -eq "sheet1
4d20: 22 7d 20 0d 0a 24 75 73 65 64 20 3d 20 24 77 73  "} ..$used = $ws
4d30: 2e 75 73 65 64 52 61 6e 67 65 0d 0a 24 6c 61 73  .usedRange..$las
4d40: 74 43 65 6c 6c 20 3d 20 24 75 73 65 64 2e 53 70  tCell = $used.Sp
4d50: 65 63 69 61 6c 43 65 6c 6c 73 28 24 78 6c 43 65  ecialCells($xlCe
4d60: 6c 6c 54 79 70 65 4c 61 73 74 43 65 6c 6c 29 0d  llTypeLastCell).
4d70: 0a 24 6c 61 73 74 72 6f 77 20 3d 20 24 6c 61 73  .$lastrow = $las
4d80: 74 43 65 6c 6c 2e 72 6f 77 20 0d 0a 24 77 73 2e  tCell.row ..$ws.
4d90: 43 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 31 29 2e  Cells.Item(2,1).
4da0: 46 6f 72 6d 75 6c 61 52 31 43 31 20 3d 20 22 3d  FormulaR1C1 = "=
4db0: 43 4f 4e 43 41 54 45 4e 41 54 45 28 43 5b 2b 31  CONCATENATE(C[+1
4dc0: 5d 2c 43 5b 2b 32 5d 2c 43 5b 2b 33 5d 29 22 0d  ],C[+2],C[+3])".
4dd0: 0a 24 72 61 6e 67 65 31 3d 20 24 77 73 2e 72 61  .$range1= $ws.ra
4de0: 6e 67 65 28 22 41 32 22 29 0d 0a 24 72 20 3d 20  nge("A2")..$r = 
4df0: 24 77 73 2e 52 61 6e 67 65 28 22 41 32 3a 41 24  $ws.Range("A2:A$
4e00: 6c 61 73 74 72 6f 77 22 29 0d 0a 24 72 61 6e 67  lastrow")..$rang
4e10: 65 31 2e 41 75 74 6f 46 69 6c 6c 28 24 72 29 20  e1.AutoFill($r) 
4e20: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69  | Out-Null..[voi
4e30: 64 5d 24 72 61 6e 67 65 31 2e 65 6e 74 69 72 65  d]$range1.entire
4e40: 43 6f 6c 75 6d 6e 2e 41 75 74 6f 66 69 74 28 29  Column.Autofit()
4e50: 20 0d 0a 24 77 62 2e 63 6c 6f 73 65 28 29 0d 0a   ..$wb.close()..
4e60: 24 78 6c 2e 71 75 69 74 28 29 0d 0a 0d 0a 23 20  $xl.quit()....# 
4e70: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4e80: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4e90: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4ea0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
4eb0: 5f 5f 5f 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48  ________..#..# H
4ec0: 6f 77 20 74 6f 20 67 65 74 20 61 20 72 61 6e 67  ow to get a rang
4ed0: 65 20 61 6e 64 20 66 6f 72 6d 61 74 20 69 74 20  e and format it 
4ee0: 69 6e 20 65 78 63 65 6c 3f 0d 0a 20 0d 0a 23 20  in excel?.. ..# 
4ef0: 67 65 74 2d 65 78 63 65 6c 72 61 6e 67 65 2e 70  get-excelrange.p
4f00: 73 31 0d 0a 23 20 6f 70 65 6e 73 20 61 6e 20 65  s1..# opens an e
4f10: 78 69 73 74 69 6e 67 20 77 6f 72 6b 62 6f 6f 6b  xisting workbook
4f20: 20 69 6e 20 45 78 63 65 6c 20 32 30 30 37 2c 20   in Excel 2007, 
4f30: 75 73 69 6e 67 20 50 6f 77 65 72 53 68 65 6c 6c  using PowerShell
4f40: 0d 0a 23 20 61 6e 64 20 74 75 72 6e 73 20 61 20  ..# and turns a 
4f50: 72 61 6e 67 65 20 62 6f 6c 64 20 23 20 54 68 6f  range bold # Tho
4f60: 6d 61 73 20 4c 65 65 20 2d 20 74 2e 2e 2e 40 70  mas Lee - t...@p
4f70: 73 70 2e 63 6f 2e 75 6b 0d 0a 23 20 43 72 65 61  sp.co.uk..# Crea
4f80: 74 65 20 62 61 73 65 20 6f 62 6a 65 63 74 0d 0a  te base object..
4f90: 24 78 6c 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74  $xl = new-object
4fa0: 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 45 78 63 65   -comobject Exce
4fb0: 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 20 0d 0a  l.Application ..
4fc0: 23 20 6d 61 6b 65 20 45 78 63 65 6c 20 76 69 73  # make Excel vis
4fd0: 69 62 6c 65 0d 0a 24 78 6c 2e 76 69 73 69 62 6c  ible..$xl.visibl
4fe0: 65 20 3d 20 24 74 72 75 65 0d 0a 24 78 6c 2e 44  e = $true..$xl.D
4ff0: 69 73 70 6c 61 79 41 6c 65 72 74 73 20 3d 20 24  isplayAlerts = $
5000: 46 61 6c 73 65 20 0d 0a 23 20 6f 70 65 6e 20 61  False ..# open a
5010: 20 77 6f 72 6b 62 6f 6f 6b 0d 0a 24 77 62 20 3d   workbook..$wb =
5020: 20 24 78 6c 2e 77 6f 72 6b 62 6f 6f 6b 73 2e 6f   $xl.workbooks.o
5030: 70 65 6e 28 22 43 3a 5c 53 63 72 69 70 74 73 5c  pen("C:\Scripts\
5040: 70 6f 77 65 72 73 68 65 6c 6c 5c 74 65 73 74 2e  powershell\test.
5050: 78 6c 73 22 29 20 0d 0a 20 0d 0a 23 20 47 65 74  xls") .. ..# Get
5060: 20 73 68 65 65 74 31 0d 0a 24 77 73 20 3d 20 24   sheet1..$ws = $
5070: 77 62 2e 77 6f 72 6b 73 68 65 65 74 73 20 7c 20  wb.worksheets | 
5080: 77 68 65 72 65 20 7b 24 5f 2e 6e 61 6d 65 20 2d  where {$_.name -
5090: 65 71 20 22 73 68 65 65 74 31 22 7d 20 0d 0a 20  eq "sheet1"} .. 
50a0: 0d 0a 23 20 4d 61 6b 65 20 41 31 2d 42 31 20 62  ..# Make A1-B1 b
50b0: 6f 6c 64 0d 0a 24 72 61 6e 67 65 20 3d 20 24 77  old..$range = $w
50c0: 73 2e 72 61 6e 67 65 28 22 41 31 3a 42 31 22 29  s.range("A1:B1")
50d0: 0d 0a 24 72 61 6e 67 65 2e 66 6f 6e 74 2e 62 6f  ..$range.font.bo
50e0: 6c 64 20 3d 20 22 74 72 75 65 22 20 0d 0a 20 0d  ld = "true" .. .
50f0: 0a 23 20 4d 61 6b 65 20 41 32 2d 42 32 20 69 74  .# Make A2-B2 it
5100: 61 6c 69 63 0d 0a 24 72 61 6e 67 65 32 20 3d 20  alic..$range2 = 
5110: 24 77 73 2e 72 61 6e 67 65 28 22 41 32 3a 42 32  $ws.range("A2:B2
5120: 22 29 0d 0a 24 72 61 6e 67 65 32 2e 66 6f 6e 74  ")..$range2.font
5130: 2e 69 74 61 6c 69 63 20 3d 20 22 74 72 75 65 22  .italic = "true"
5140: 20 0d 0a 20 0d 0a 23 20 53 65 74 20 72 61 6e 67   .. ..# Set rang
5150: 65 20 74 6f 20 61 20 76 61 6c 75 65 0d 0a 24 72  e to a value..$r
5160: 61 6e 67 65 34 3d 24 77 73 2e 72 61 6e 67 65 28  ange4=$ws.range(
5170: 22 33 3a 33 22 29 0d 0a 24 72 61 6e 67 65 34 2e  "3:3")..$range4.
5180: 63 65 6c 6c 73 3d 22 52 6f 77 20 33 22 0d 0a 0d  cells="Row 3"...
5190: 0a 23 20 53 65 74 20 72 61 6e 67 65 20 74 6f 20  .# Set range to 
51a0: 61 20 46 6f 6e 74 20 73 69 7a 65 0d 0a 24 72 61  a Font size..$ra
51b0: 6e 67 65 33 3d 24 77 73 2e 72 61 6e 67 65 28 22  nge3=$ws.range("
51c0: 41 32 3a 42 32 22 29 0d 0a 24 52 61 6e 67 65 33  A2:B2")..$Range3
51d0: 2e 66 6f 6e 74 2e 73 69 7a 65 3d 32 34 20 0d 0a  .font.size=24 ..
51e0: 0d 0a 23 20 6e 6f 77 20 66 6f 72 6d 61 74 20 61  ..# now format a
51f0: 6e 20 65 6e 74 69 72 65 20 72 6f 77 0d 0a 0d 0a  n entire row....
5200: 24 72 61 6e 67 65 34 3d 24 77 73 2e 72 61 6e 67  $range4=$ws.rang
5210: 65 28 22 33 3a 33 22 29 0d 0a 0d 0a 24 72 61 6e  e("3:3")....$ran
5220: 67 65 34 2e 66 6f 6e 74 2e 69 74 61 6c 69 63 3d  ge4.font.italic=
5230: 22 24 74 72 75 65 22 0d 0a 24 72 61 6e 67 65 34  "$true"..$range4
5240: 2e 66 6f 6e 74 2e 62 6f 6c 64 3d 24 74 72 75 65  .font.bold=$true
5250: 0d 0a 24 72 61 6e 67 65 34 2e 66 6f 6e 74 2e 73  ..$range4.font.s
5260: 69 7a 65 3d 31 30 0d 0a 24 72 61 6e 67 65 34 2e  ize=10..$range4.
5270: 66 6f 6e 74 2e 6e 61 6d 65 3d 22 43 6f 6d 69 63  font.name="Comic
5280: 20 53 61 6e 73 20 4d 53 22 20 0d 0a 23 20 6e 6f   Sans MS" ..# no
5290: 77 20 66 6f 72 6d 61 74 20 61 20 52 61 6e 67 65  w format a Range
52a0: 20 6f 66 20 63 65 6c 6c 73 0d 0a 24 77 73 2e 52   of cells..$ws.R
52b0: 61 6e 67 65 28 22 44 31 3a 46 35 22 29 2e 4e 75  ange("D1:F5").Nu
52c0: 6d 62 65 72 46 6f 72 6d 61 74 20 3d 20 22 23 2c  mberFormat = "#,
52d0: 23 23 30 2e 30 30 22 0d 0a 0d 0a 23 20 5f 5f 5f  ##0.00"....# ___
52e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
52f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5300: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5310: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5320: 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f  ___..#..# How do
5330: 20 49 20 61 64 64 20 61 20 63 6f 6d 6d 65 6e 74   I add a comment
5340: 20 74 6f 20 61 20 63 65 6c 6c 20 69 6e 20 45 78   to a cell in Ex
5350: 63 65 6c 3f 20 0d 0a 20 0d 0a 24 78 6c 20 3d 20  cel? .. ..$xl = 
5360: 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d 20  New-Object -com 
5370: 45 78 63 65 6c 2e 41 70 70 6c 69 63 61 74 69 6f  Excel.Applicatio
5380: 6e 0d 0a 24 78 6c 2e 76 69 73 69 62 6c 65 20 3d  n..$xl.visible =
5390: 20 24 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70   $true..$xl.Disp
53a0: 6c 61 79 41 6c 65 72 74 73 20 3d 20 24 46 61 6c  layAlerts = $Fal
53b0: 73 65 20 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 57  se ..$wb = $xl.W
53c0: 6f 72 6b 62 6f 6f 6b 73 2e 41 64 64 28 29 0d 0a  orkbooks.Add()..
53d0: 24 77 73 20 3d 20 24 77 62 2e 57 6f 72 6b 73 68  $ws = $wb.Worksh
53e0: 65 65 74 73 2e 49 74 65 6d 28 31 29 0d 0a 24 77  eets.Item(1)..$w
53f0: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31  s.Cells.Item(1,1
5400: 29 20 3d 20 c3 a2 ef bf bd ef bf bd 41 20 76 61  ) = ........A va
5410: 6c 75 65 20 69 6e 20 63 65 6c 6c 20 41 31 2e c3  lue in cell A1..
5420: a2 ef bf bd ef bf bd 0d 0a 5b 76 6f 69 64 5d 24  .........[void]$
5430: 77 73 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 41  ws.Range("A1").A
5440: 64 64 43 6f 6d 6d 65 6e 74 28 29 0d 0a 5b 76 6f  ddComment()..[vo
5450: 69 64 5d 24 77 73 2e 52 61 6e 67 65 28 22 41 31  id]$ws.Range("A1
5460: 22 29 2e 63 6f 6d 6d 65 6e 74 2e 56 69 73 69 62  ").comment.Visib
5470: 6c 65 20 3d 20 24 46 61 6c 73 65 0d 0a 5b 76 6f  le = $False..[vo
5480: 69 64 5d 24 77 73 2e 52 61 6e 67 65 28 22 41 31  id]$ws.Range("A1
5490: 22 29 2e 43 6f 6d 6d 65 6e 74 2e 74 65 78 74 28  ").Comment.text(
54a0: 22 4f 6c 64 44 6f 67 3a 20 60 72 20 74 68 69 73  "OldDog: `r this
54b0: 20 69 73 20 61 20 63 6f 6d 6d 65 6e 74 22 29 0d   is a comment").
54c0: 0a 5b 76 6f 69 64 5d 24 77 73 2e 52 61 6e 67 65  .[void]$ws.Range
54d0: 28 22 41 32 22 29 2e 53 65 6c 65 63 74 20 0d 0a  ("A2").Select ..
54e0: 0d 0a 23 20 54 68 65 20 27 72 20 61 64 64 73 20  ..# The 'r adds 
54f0: 61 20 6c 69 6e 65 20 66 65 65 64 20 61 66 74 65  a line feed afte
5500: 72 20 74 68 65 20 63 6f 6d 6d 65 6e 74 27 73 20  r the comment's 
5510: 61 75 74 68 6f 72 2e 20 54 68 69 73 20 69 73 20  author. This is 
5520: 72 65 71 75 69 72 65 64 21 0d 0a 23 20 5f 5f 5f  required!..# ___
5530: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5540: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5550: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5560: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
5570: 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20  _____..#..# How 
5580: 64 6f 20 49 20 63 6f 70 79 20 61 6e 64 20 50 61  do I copy and Pa
5590: 73 74 65 20 69 6e 20 45 78 63 65 6c 20 28 73 70  ste in Excel (sp
55a0: 65 63 69 61 6c 29 3f 0d 0a 0d 0a 24 78 6c 20 3d  ecial)?....$xl =
55b0: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d   New-Object -com
55c0: 6f 62 6a 65 63 74 20 45 78 63 65 6c 2e 41 70 70  object Excel.App
55d0: 6c 69 63 61 74 69 6f 6e 0d 0a 23 20 53 68 6f 77  lication..# Show
55e0: 20 45 78 63 65 6c 0d 0a 24 78 6c 2e 76 69 73 69   Excel..$xl.visi
55f0: 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24 78 6c  ble = $true..$xl
5600: 2e 44 69 73 70 6c 61 79 41 6c 65 72 74 73 20 3d  .DisplayAlerts =
5610: 20 24 46 61 6c 73 65 20 0d 0a 24 77 62 20 3d 20   $False ..$wb = 
5620: 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b 73 2e 41 64  $xl.Workbooks.Ad
5630: 64 28 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e 57  d()..$ws = $wb.W
5640: 6f 72 6b 73 68 65 65 74 73 2e 49 74 65 6d 28 31  orksheets.Item(1
5650: 29 20 0d 0a 24 78 6c 50 61 73 74 65 56 61 6c 75  ) ..$xlPasteValu
5660: 65 73 20 3d 20 2d 34 31 36 33 20 20 20 20 20 20  es = -4163      
5670: 20 20 20 20 23 20 56 61 6c 75 65 73 20 6f 6e 6c      # Values onl
5680: 79 2c 20 6e 6f 74 20 66 6f 72 6d 75 6c 61 73 0d  y, not formulas.
5690: 0a 24 78 6c 43 65 6c 6c 54 79 70 65 4c 61 73 74  .$xlCellTypeLast
56a0: 43 65 6c 6c 20 3d 20 31 31 20 20 20 20 20 20 20  Cell = 11       
56b0: 20 23 20 74 6f 20 66 69 6e 64 20 6c 61 73 74 20   # to find last 
56c0: 75 73 65 64 20 63 65 6c 6c 0d 0a 24 75 73 65 64  used cell..$used
56d0: 20 3d 20 24 77 73 2e 75 73 65 64 52 61 6e 67 65   = $ws.usedRange
56e0: 0d 0a 24 6c 61 73 74 43 65 6c 6c 20 3d 20 24 75  ..$lastCell = $u
56f0: 73 65 64 2e 53 70 65 63 69 61 6c 43 65 6c 6c 73  sed.SpecialCells
5700: 28 24 78 6c 43 65 6c 6c 54 79 70 65 4c 61 73 74  ($xlCellTypeLast
5710: 43 65 6c 6c 29 0d 0a 24 72 6f 77 20 3d 20 24 6c  Cell)..$row = $l
5720: 61 73 74 43 65 6c 6c 2e 72 6f 77 0d 0a 24 72 61  astCell.row..$ra
5730: 6e 67 65 20 3d 20 24 77 73 2e 55 73 65 64 52 61  nge = $ws.UsedRa
5740: 6e 67 65 0d 0a 5b 76 6f 69 64 5d 24 77 73 2e 52  nge..[void]$ws.R
5750: 61 6e 67 65 28 22 41 38 3a 46 24 72 6f 77 22 29  ange("A8:F$row")
5760: 2e 43 6f 70 79 28 29 0d 0a 5b 76 6f 69 64 5d 24  .Copy()..[void]$
5770: 77 73 2e 52 61 6e 67 65 28 22 41 38 22 29 2e 50  ws.Range("A8").P
5780: 61 73 74 65 53 70 65 63 69 61 6c 28 2d 34 31 36  asteSpecial(-416
5790: 33 29 20 0d 0a 0d 0a 23 20 5f 5f 5f 5f 5f 5f 5f  3) ....# _______
57a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
57b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
57c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
57d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
57e0: 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f  ___..#..# How do
57f0: 20 49 20 41 64 64 20 57 6f 72 6b 73 68 65 65 74   I Add Worksheet
5800: 73 2c 20 6e 61 6d 65 20 74 68 65 6d 20 61 6e 64  s, name them and
5810: 20 73 61 76 65 20 61 73 20 74 6f 64 61 79 27 73   save as today's
5820: 20 64 61 74 65 3f 20 0d 0a 23 2a 2a 2a 2a 2a 2a   date? ..#******
5830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5840: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5850: 2a 2a 2a 2a 20 0d 0a 23 20 67 65 74 20 74 6f 64  **** ..# get tod
5860: 61 79 27 73 20 64 61 74 65 20 61 6e 64 20 66 6f  ay's date and fo
5870: 72 6d 61 74 20 69 74 20 61 73 20 61 20 73 74 72  rmat it as a str
5880: 69 6e 67 2e 20 0d 0a 20 0d 0a 24 6d 20 3d 20 28  ing. .. ..$m = (
5890: 67 65 74 2d 64 61 74 65 29 2e 6d 6f 6e 74 68 0d  get-date).month.
58a0: 0a 24 64 20 3d 20 28 67 65 74 2d 64 61 74 65 29  .$d = (get-date)
58b0: 2e 64 61 79 0d 0a 24 79 20 3d 20 5b 73 74 72 69  .day..$y = [stri
58c0: 6e 67 5d 20 28 67 65 74 2d 64 61 74 65 29 2e 79  ng] (get-date).y
58d0: 65 61 72 0d 0a 24 79 20 3d 20 24 79 2e 73 75 62  ear..$y = $y.sub
58e0: 73 74 72 69 6e 67 28 24 79 2e 6c 65 6e 67 74 68  string($y.length
58f0: 20 2d 20 32 2c 20 32 29 0d 0a 24 66 20 3d 20 22   - 2, 2)..$f = "
5900: 43 3a 5c 53 63 72 69 70 74 73 5c 22 20 2b 20 24  C:\Scripts\" + $
5910: 6d 20 2b 20 22 2d 22 20 2b 20 24 64 20 2b 20 22  m + "-" + $d + "
5920: 2d 22 20 2b 20 24 79 20 2b 20 22 2e 78 6c 73 78  -" + $y + ".xlsx
5930: 22 20 0d 0a 23 20 43 72 65 61 74 65 20 45 78 63  " ..# Create Exc
5940: 65 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 20 6f  el.Application o
5950: 62 6a 65 63 74 0d 0a 24 78 6c 20 3d 20 4e 65 77  bject..$xl = New
5960: 2d 4f 62 6a 65 63 74 20 2d 63 6f 6d 6f 62 6a 65  -Object -comobje
5970: 63 74 20 45 78 63 65 6c 2e 41 70 70 6c 69 63 61  ct Excel.Applica
5980: 74 69 6f 6e 0d 0a 23 20 53 68 6f 77 20 45 78 63  tion..# Show Exc
5990: 65 6c 0d 0a 24 78 6c 2e 76 69 73 69 62 6c 65 20  el..$xl.visible 
59a0: 3d 20 24 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73  = $true..$xl.Dis
59b0: 70 6c 61 79 41 6c 65 72 74 73 20 3d 20 24 46 61  playAlerts = $Fa
59c0: 6c 73 65 20 0d 0a 24 77 62 20 3d 20 24 78 6c 2e  lse ..$wb = $xl.
59d0: 57 6f 72 6b 62 6f 6f 6b 73 2e 41 64 64 28 29 0d  Workbooks.Add().
59e0: 0a 24 77 73 20 3d 20 24 77 62 2e 57 6f 72 6b 73  .$ws = $wb.Works
59f0: 68 65 65 74 73 2e 49 74 65 6d 28 31 29 20 0d 0a  heets.Item(1) ..
5a00: 23 20 74 68 69 73 20 77 69 6c 6c 20 61 64 64 20  # this will add 
5a10: 39 20 73 68 65 65 74 73 20 74 6f 20 74 68 65 20  9 sheets to the 
5a20: 64 65 66 61 75 6c 74 20 33 20 66 6f 72 20 61 20  default 3 for a 
5a30: 74 6f 74 61 6c 20 6f 66 20 31 32 20 73 68 65 65  total of 12 shee
5a40: 74 73 20 0d 0a 66 6f 72 20 28 24 69 20 3d 20 30  ts ..for ($i = 0
5a50: 3b 20 24 69 20 2d 6c 65 20 38 3b 20 24 69 2b 2b  ; $i -le 8; $i++
5a60: 29 20 7b 0d 0a 24 77 73 20 3d 20 24 77 62 2e 53  ) {..$ws = $wb.S
5a70: 68 65 65 74 73 2e 41 64 64 28 29 20 7d 20 0d 0a  heets.Add() } ..
5a80: 23 20 4e 6f 77 20 77 65 20 6e 61 6d 65 20 6f 75  # Now we name ou
5a90: 72 20 6e 65 77 20 73 68 65 65 74 73 20 0d 0a 24  r new sheets ..$
5aa0: 78 6c 2e 57 6f 72 6b 73 68 65 65 74 73 2e 69 74  xl.Worksheets.it
5ab0: 65 6d 28 31 29 2e 6e 61 6d 65 20 3d 20 22 4a 61  em(1).name = "Ja
5ac0: 6e 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68 65 65  n"..$xl.Workshee
5ad0: 74 73 2e 69 74 65 6d 28 32 29 2e 6e 61 6d 65 20  ts.item(2).name 
5ae0: 3d 20 22 46 65 62 22 0d 0a 24 78 6c 2e 57 6f 72  = "Feb"..$xl.Wor
5af0: 6b 73 68 65 65 74 73 2e 69 74 65 6d 28 33 29 2e  ksheets.item(3).
5b00: 6e 61 6d 65 20 3d 20 22 4d 61 72 22 0d 0a 24 78  name = "Mar"..$x
5b10: 6c 2e 57 6f 72 6b 73 68 65 65 74 73 2e 69 74 65  l.Worksheets.ite
5b20: 6d 28 34 29 2e 6e 61 6d 65 20 3d 20 22 41 70 72  m(4).name = "Apr
5b30: 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68 65 65 74  "..$xl.Worksheet
5b40: 73 2e 69 74 65 6d 28 35 29 2e 6e 61 6d 65 20 3d  s.item(5).name =
5b50: 20 22 4d 61 79 22 0d 0a 24 78 6c 2e 57 6f 72 6b   "May"..$xl.Work
5b60: 73 68 65 65 74 73 2e 69 74 65 6d 28 36 29 2e 6e  sheets.item(6).n
5b70: 61 6d 65 20 3d 20 22 4a 75 6e 65 22 0d 0a 24 78  ame = "June"..$x
5b80: 6c 2e 57 6f 72 6b 73 68 65 65 74 73 2e 69 74 65  l.Worksheets.ite
5b90: 6d 28 37 29 2e 6e 61 6d 65 20 3d 20 22 4a 75 6c  m(7).name = "Jul
5ba0: 79 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68 65 65  y"..$xl.Workshee
5bb0: 74 73 2e 69 74 65 6d 28 38 29 2e 6e 61 6d 65 20  ts.item(8).name 
5bc0: 3d 20 22 41 75 67 22 0d 0a 24 78 6c 2e 57 6f 72  = "Aug"..$xl.Wor
5bd0: 6b 73 68 65 65 74 73 2e 69 74 65 6d 28 39 29 2e  ksheets.item(9).
5be0: 6e 61 6d 65 20 3d 20 22 53 65 70 74 22 0d 0a 24  name = "Sept"..$
5bf0: 78 6c 2e 57 6f 72 6b 73 68 65 65 74 73 2e 69 74  xl.Worksheets.it
5c00: 65 6d 28 31 30 29 2e 6e 61 6d 65 20 3d 20 22 4f  em(10).name = "O
5c10: 63 74 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68 65  ct"..$xl.Workshe
5c20: 65 74 73 2e 69 74 65 6d 28 31 31 29 2e 6e 61 6d  ets.item(11).nam
5c30: 65 20 3d 20 22 4e 6f 76 22 0d 0a 24 78 6c 2e 57  e = "Nov"..$xl.W
5c40: 6f 72 6b 73 68 65 65 74 73 2e 69 74 65 6d 28 31  orksheets.item(1
5c50: 32 29 2e 6e 61 6d 65 20 3d 20 22 44 65 63 22 20  2).name = "Dec" 
5c60: 0d 0a 23 20 61 6e 64 20 68 65 72 65 20 77 65 20  ..# and here we 
5c70: 73 61 76 65 20 69 74 20 0d 0a 24 77 62 2e 53 61  save it ..$wb.Sa
5c80: 76 65 41 73 28 24 46 29 20 0d 0a 0d 0a 23 2a 2a  veAs($F) ....#**
5c90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5ca0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5cb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 23 20 48 6f 77  *********..# How
5cc0: 20 64 6f 20 49 20 66 69 6e 64 20 64 75 70 6c 69   do I find dupli
5cd0: 63 61 74 65 20 65 6e 74 72 69 65 73 20 69 6e 20  cate entries in 
5ce0: 45 78 63 65 6c 3f 0d 0a 23 20 54 68 69 73 20 46  Excel?..# This F
5cf0: 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 73 20  unction creates 
5d00: 61 20 73 70 72 65 61 64 73 68 65 65 74 20 77 69  a spreadsheet wi
5d10: 74 68 20 73 6f 6d 65 0d 0a 23 20 64 75 70 6c 69  th some..# dupli
5d20: 63 61 74 65 20 6e 61 6d 65 73 20 61 6e 64 20 74  cate names and t
5d30: 68 65 6e 20 68 69 67 68 6c 69 67 68 74 73 20 74  hen highlights t
5d40: 68 65 20 44 75 70 73 20 69 6e 20 42 6c 75 65 0d  he Dups in Blue.
5d50: 0a 20 0d 0a 46 75 6e 63 74 69 6f 6e 20 58 4c 46  . ..Function XLF
5d60: 69 6e 64 44 75 70 73 20 7b 0d 0a 24 78 6c 45 78  indDups {..$xlEx
5d70: 70 72 65 73 73 69 6f 6e 20 3d 20 32 0d 0a 24 78  pression = 2..$x
5d80: 6c 50 61 73 74 65 46 6f 72 6d 61 74 73 20 3d 20  lPasteFormats = 
5d90: 2d 34 31 32 32 0d 0a 24 78 6c 4e 6f 6e 65 20 3d  -4122..$xlNone =
5da0: 20 2d 34 31 34 32 0d 0a 24 78 6c 54 6f 52 69 67   -4142..$xlToRig
5db0: 68 74 20 3d 20 2d 34 31 36 31 0d 0a 24 78 6c 54  ht = -4161..$xlT
5dc0: 6f 4c 65 66 74 20 3d 20 2d 34 31 35 39 0d 0a 24  oLeft = -4159..$
5dd0: 78 6c 44 6f 77 6e 20 3d 20 2d 34 31 32 31 0d 0a  xlDown = -4121..
5de0: 24 78 6c 53 68 69 66 74 54 6f 52 69 67 68 74 20  $xlShiftToRight 
5df0: 3d 20 2d 34 31 36 31 0d 0a 24 78 6c 46 69 6c 6c  = -4161..$xlFill
5e00: 44 65 66 61 75 6c 74 20 3d 20 30 0d 0a 24 78 6c  Default = 0..$xl
5e10: 53 75 6d 6d 61 72 79 41 62 6f 76 65 20 3d 20 30  SummaryAbove = 0
5e20: 0d 0a 24 78 6c 53 6f 72 74 56 61 6c 75 65 73 20  ..$xlSortValues 
5e30: 3d 20 24 78 6c 50 69 6e 59 69 6e 20 3d 20 31 0d  = $xlPinYin = 1.
5e40: 0a 24 78 6c 41 73 63 65 6e 64 69 6e 67 20 3d 20  .$xlAscending = 
5e50: 31 0d 0a 24 78 6c 44 65 73 63 65 6e 64 69 6e 67  1..$xlDescending
5e60: 20 3d 20 32 0d 0a 24 78 6c 59 65 73 20 3d 20 31   = 2..$xlYes = 1
5e70: 0d 0a 24 78 6c 54 6f 70 54 6f 42 6f 74 74 6f 6d  ..$xlTopToBottom
5e80: 20 3d 20 31 0d 0a 24 78 6c 50 61 73 74 65 56 61   = 1..$xlPasteVa
5e90: 6c 75 65 73 20 3d 20 2d 34 31 36 33 20 20 20 20  lues = -4163    
5ea0: 20 20 20 20 20 20 23 20 56 61 6c 75 65 73 20 6f        # Values o
5eb0: 6e 6c 79 2c 20 6e 6f 74 20 66 6f 72 6d 75 6c 61  nly, not formula
5ec0: 73 0d 0a 24 78 6c 43 65 6c 6c 54 79 70 65 4c 61  s..$xlCellTypeLa
5ed0: 73 74 43 65 6c 6c 20 3d 20 31 31 20 20 20 20 20  stCell = 11     
5ee0: 20 20 20 23 20 74 6f 20 66 69 6e 64 20 6c 61 73     # to find las
5ef0: 74 20 75 73 65 64 20 63 65 6c 6c 20 0d 0a 24 78  t used cell ..$x
5f00: 6c 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20 2d  l = new-object -
5f10: 63 6f 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e  comobject excel.
5f20: 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c  application..$xl
5f30: 2e 56 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65  .Visible = $true
5f40: 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65  ..$xl.DisplayAle
5f50: 72 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a 24 77  rts = $False..$w
5f60: 62 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f 6b  b = $xl.Workbook
5f70: 73 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d 20 24  s.Add()..$ws = $
5f80: 77 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49 74  wb.Worksheets.It
5f90: 65 6d 28 31 29 0d 0a 24 77 73 2e 6e 61 6d 65 20  em(1)..$ws.name 
5fa0: 3d 20 22 43 6f 6e 63 61 74 65 6e 61 74 65 22 20  = "Concatenate" 
5fb0: 0d 0a 24 77 73 2e 54 61 62 2e 43 6f 6c 6f 72 49  ..$ws.Tab.ColorI
5fc0: 6e 64 65 78 20 3d 20 34 20 0d 0a 24 77 73 2e 43  ndex = 4 ..$ws.C
5fd0: 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31 29 20 3d  ells.Item(1,1) =
5fe0: 20 22 46 69 72 73 74 4e 61 6d 65 22 0d 0a 24 77   "FirstName"..$w
5ff0: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 32  s.Cells.Item(1,2
6000: 29 20 3d 20 22 4d 49 22 0d 0a 24 77 73 2e 43 65  ) = "MI"..$ws.Ce
6010: 6c 6c 73 2e 49 74 65 6d 28 31 2c 33 29 20 3d 20  lls.Item(1,3) = 
6020: 22 4c 61 73 74 4e 61 6d 65 22 0d 0a 24 77 73 2e  "LastName"..$ws.
6030: 43 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 31 29 20  Cells.Item(2,1) 
6040: 3d 20 22 4a 65 73 73 65 22 0d 0a 24 77 73 2e 43  = "Jesse"..$ws.C
6050: 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 32 29 20 3d  ells.Item(2,2) =
6060: 20 22 4c 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e   "L"..$ws.Cells.
6070: 49 74 65 6d 28 32 2c 33 29 20 3d 20 22 52 6f 62  Item(2,3) = "Rob
6080: 65 72 74 73 22 0d 0a 24 77 73 2e 43 65 6c 6c 73  erts"..$ws.Cells
6090: 2e 49 74 65 6d 28 33 2c 31 29 20 3d 20 22 4d 61  .Item(3,1) = "Ma
60a0: 72 79 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49  ry"..$ws.Cells.I
60b0: 74 65 6d 28 33 2c 32 29 20 3d 20 22 53 22 0d 0a  tem(3,2) = "S"..
60c0: 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 33  $ws.Cells.Item(3
60d0: 2c 33 29 20 3d 20 22 54 61 6c 62 65 72 74 22 0d  ,3) = "Talbert".
60e0: 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28  .$ws.Cells.Item(
60f0: 34 2c 31 29 20 3d 20 22 42 65 6e 22 0d 0a 24 77  4,1) = "Ben"..$w
6100: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 34 2c 32  s.Cells.Item(4,2
6110: 29 20 3d 20 22 4e 22 0d 0a 24 77 73 2e 43 65 6c  ) = "N"..$ws.Cel
6120: 6c 73 2e 49 74 65 6d 28 34 2c 33 29 20 3d 20 22  ls.Item(4,3) = "
6130: 53 6d 69 74 68 22 0d 0a 24 77 73 2e 43 65 6c 6c  Smith"..$ws.Cell
6140: 73 2e 49 74 65 6d 28 35 2c 31 29 20 3d 20 22 45  s.Item(5,1) = "E
6150: 64 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74  d"..$ws.Cells.It
6160: 65 6d 28 35 2c 32 29 20 3d 20 22 53 22 0d 0a 24  em(5,2) = "S"..$
6170: 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 35 2c  ws.Cells.Item(5,
6180: 33 29 20 3d 20 22 54 75 72 6e 65 72 22 0d 0a 24  3) = "Turner"..$
6190: 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 36 2c  ws.Cells.Item(6,
61a0: 31 29 20 3d 20 22 4d 61 72 79 22 0d 0a 24 77 73  1) = "Mary"..$ws
61b0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 36 2c 32 29  .Cells.Item(6,2)
61c0: 20 3d 20 22 53 22 0d 0a 24 77 73 2e 43 65 6c 6c   = "S"..$ws.Cell
61d0: 73 2e 49 74 65 6d 28 36 2c 33 29 20 3d 20 22 54  s.Item(6,3) = "T
61e0: 61 6c 62 65 72 74 22 0d 0a 24 77 73 2e 43 65 6c  albert"..$ws.Cel
61f0: 6c 73 2e 49 74 65 6d 28 37 2c 31 29 20 3d 20 22  ls.Item(7,1) = "
6200: 4a 65 73 73 65 22 0d 0a 24 77 73 2e 43 65 6c 6c  Jesse"..$ws.Cell
6210: 73 2e 49 74 65 6d 28 37 2c 32 29 20 3d 20 22 4c  s.Item(7,2) = "L
6220: 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65  "..$ws.Cells.Ite
6230: 6d 28 37 2c 33 29 20 3d 20 22 52 6f 62 65 72 74  m(7,3) = "Robert
6240: 73 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74  s"..$ws.Cells.It
6250: 65 6d 28 38 2c 31 29 20 3d 20 22 4a 6f 65 22 0d  em(8,1) = "Joe".
6260: 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28  .$ws.Cells.Item(
6270: 38 2c 32 29 20 3d 20 22 4c 22 0d 0a 24 77 73 2e  8,2) = "L"..$ws.
6280: 43 65 6c 6c 73 2e 49 74 65 6d 28 38 2c 33 29 20  Cells.Item(8,3) 
6290: 3d 20 22 53 6d 69 74 68 22 0d 0a 24 77 73 2e 43  = "Smith"..$ws.C
62a0: 65 6c 6c 73 2e 49 74 65 6d 28 39 2c 31 29 20 3d  ells.Item(9,1) =
62b0: 20 22 42 65 6e 22 0d 0a 24 77 73 2e 43 65 6c 6c   "Ben"..$ws.Cell
62c0: 73 2e 49 74 65 6d 28 39 2c 32 29 20 3d 20 22 41  s.Item(9,2) = "A
62d0: 22 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74 65  "..$ws.Cells.Ite
62e0: 6d 28 39 2c 33 29 20 3d 20 22 53 6d 69 74 68 22  m(9,3) = "Smith"
62f0: 20 0d 0a 24 75 73 65 64 20 3d 20 24 77 73 2e 75   ..$used = $ws.u
6300: 73 65 64 52 61 6e 67 65 0d 0a 24 6c 61 73 74 43  sedRange..$lastC
6310: 65 6c 6c 20 3d 20 24 75 73 65 64 2e 53 70 65 63  ell = $used.Spec
6320: 69 61 6c 43 65 6c 6c 73 28 24 78 6c 43 65 6c 6c  ialCells($xlCell
6330: 54 79 70 65 4c 61 73 74 43 65 6c 6c 29 0d 0a 24  TypeLastCell)..$
6340: 6c 61 73 74 72 6f 77 20 3d 20 24 6c 61 73 74 43  lastrow = $lastC
6350: 65 6c 6c 2e 72 6f 77 20 0d 0a 24 72 61 6e 67 65  ell.row ..$range
6360: 34 3d 24 77 73 2e 72 61 6e 67 65 28 22 32 3a 32  4=$ws.range("2:2
6370: 22 29 0d 0a 24 72 61 6e 67 65 34 2e 53 65 6c 65  ")..$range4.Sele
6380: 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ct() | Out-Null.
6390: 0a 24 78 6c 2e 41 63 74 69 76 65 57 69 6e 64 6f  .$xl.ActiveWindo
63a0: 77 2e 46 72 65 65 7a 65 50 61 6e 65 73 20 3d 20  w.FreezePanes = 
63b0: 24 74 72 75 65 0d 0a 24 77 73 2e 63 65 6c 6c 73  $true..$ws.cells
63c0: 2e 45 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e 41 75  .EntireColumn.Au
63d0: 74 6f 46 69 74 28 29 20 7c 20 4f 75 74 2d 4e 75  toFit() | Out-Nu
63e0: 6c 6c 0d 0a 24 72 61 6e 67 65 31 20 3d 20 24 77  ll..$range1 = $w
63f0: 73 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 45 6e  s.Range("A1").En
6400: 74 69 72 65 43 6f 6c 75 6d 6e 0d 0a 24 72 61 6e  tireColumn..$ran
6410: 67 65 31 2e 49 6e 73 65 72 74 28 24 78 6c 53 68  ge1.Insert($xlSh
6420: 69 66 74 54 6f 52 69 67 68 74 29 20 7c 20 4f 75  iftToRight) | Ou
6430: 74 2d 4e 75 6c 6c 0d 0a 24 72 61 6e 67 65 31 2e  t-Null..$range1.
6440: 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e  Select() | Out-N
6450: 75 6c 6c 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49  ull..$ws.Cells.I
6460: 74 65 6d 28 31 2c 20 31 29 20 3d 20 22 43 6f 6e  tem(1, 1) = "Con
6470: 63 61 74 22 0d 0a 24 72 32 20 3d 20 24 77 73 2e  cat"..$r2 = $ws.
6480: 52 61 6e 67 65 28 22 41 32 22 29 0d 0a 24 72 32  Range("A2")..$r2
6490: 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d  .Select() | Out-
64a0: 4e 75 6c 6c 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e  Null..$ws.Cells.
64b0: 49 74 65 6d 28 32 2c 31 29 2e 46 6f 72 6d 75 6c  Item(2,1).Formul
64c0: 61 52 31 43 31 20 3d 20 22 3d 43 4f 4e 43 41 54  aR1C1 = "=CONCAT
64d0: 45 4e 41 54 45 28 43 5b 2b 31 5d 2c 43 5b 2b 32  ENATE(C[+1],C[+2
64e0: 5d 2c 43 5b 2b 33 5d 29 22 0d 0a 24 72 61 6e 67  ],C[+3])"..$rang
64f0: 65 31 3d 20 24 77 73 2e 72 61 6e 67 65 28 22 41  e1= $ws.range("A
6500: 32 22 29 0d 0a 24 72 20 3d 20 24 77 73 2e 52 61  2")..$r = $ws.Ra
6510: 6e 67 65 28 22 41 32 3a 41 24 6c 61 73 74 72 6f  nge("A2:A$lastro
6520: 77 22 29 0d 0a 24 72 61 6e 67 65 31 2e 41 75 74  w")..$range1.Aut
6530: 6f 46 69 6c 6c 28 24 72 29 20 7c 20 4f 75 74 2d  oFill($r) | Out-
6540: 4e 75 6c 6c 0d 0a 24 72 61 6e 67 65 2e 45 6e 74  Null..$range.Ent
6550: 69 72 65 43 6f 6c 75 6d 6e 2e 41 75 74 6f 46 69  ireColumn.AutoFi
6560: 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t() | Out-Null..
6570: 24 73 65 6c 65 63 74 20 3d 20 24 72 61 6e 67 65  $select = $range
6580: 31 2e 53 70 65 63 69 61 6c 43 65 6c 6c 73 28 31  1.SpecialCells(1
6590: 31 29 2e 53 65 6c 65 63 74 28 29 20 20 7c 20 4f  1).Select()  | O
65a0: 75 74 2d 4e 75 6c 6c 0d 0a 24 77 73 2e 52 61 6e  ut-Null..$ws.Ran
65b0: 67 65 28 22 41 32 3a 41 24 6c 61 73 74 72 6f 77  ge("A2:A$lastrow
65c0: 22 29 2e 43 6f 70 79 28 29 7c 20 4f 75 74 2d 4e  ").Copy()| Out-N
65d0: 75 6c 6c 0d 0a 24 77 73 31 20 3d 20 24 77 62 2e  ull..$ws1 = $wb.
65e0: 53 68 65 65 74 73 2e 41 64 64 28 29 0d 0a 24 77  Sheets.Add()..$w
65f0: 73 31 2e 6e 61 6d 65 20 3d 20 22 46 69 6e 64 44  s1.name = "FindD
6600: 75 70 73 22 0d 0a 24 77 73 31 20 3d 20 24 77 62  ups"..$ws1 = $wb
6610: 2e 77 6f 72 6b 73 68 65 65 74 73 20 7c 20 77 68  .worksheets | wh
6620: 65 72 65 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65 71  ere {$_.name -eq
6630: 20 22 46 69 6e 64 44 75 70 73 22 7d 0d 0a 24 77   "FindDups"}..$w
6640: 73 31 2e 54 61 62 2e 43 6f 6c 6f 72 49 6e 64 65  s1.Tab.ColorInde
6650: 78 20 3d 20 35 0d 0a 24 77 73 31 2e 53 65 6c 65  x = 5..$ws1.Sele
6660: 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ct() | Out-Null.
6670: 0a 5b 76 6f 69 64 5d 24 77 73 31 2e 52 61 6e 67  .[void]$ws1.Rang
6680: 65 28 22 41 32 22 29 2e 50 61 73 74 65 53 70 65  e("A2").PasteSpe
6690: 63 69 61 6c 28 2d 34 31 36 33 29 0d 0a 24 77 73  cial(-4163)..$ws
66a0: 31 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 53 65  1.Range("A1").Se
66b0: 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c  lect() | Out-Nul
66c0: 6c 20 0d 0a 24 6f 62 6a 52 61 6e 67 65 20 3d 20  l ..$objRange = 
66d0: 24 78 6c 2e 52 61 6e 67 65 28 22 42 31 22 29 2e  $xl.Range("B1").
66e0: 45 6e 74 69 72 65 43 6f 6c 75 6d 6e 0d 0a 5b 76  EntireColumn..[v
66f0: 6f 69 64 5d 20 24 6f 62 6a 52 61 6e 67 65 2e 49  oid] $objRange.I
6700: 6e 73 65 72 74 28 24 78 6c 53 68 69 66 74 54 6f  nsert($xlShiftTo
6710: 52 69 67 68 74 29 20 0d 0a 24 77 73 31 2e 43 65  Right) ..$ws1.Ce
6720: 6c 6c 73 2e 49 74 65 6d 28 31 2c 20 32 29 20 3d  lls.Item(1, 2) =
6730: 20 22 44 75 70 73 22 0d 0a 24 72 61 6e 67 65 20   "Dups"..$range 
6740: 3d 20 24 77 73 2e 72 61 6e 67 65 28 22 42 31 3a  = $ws.range("B1:
6750: 44 24 6c 61 73 74 72 6f 77 22 29 0d 0a 24 72 61  D$lastrow")..$ra
6760: 6e 67 65 2e 63 6f 70 79 28 29 20 7c 20 4f 75 74  nge.copy() | Out
6770: 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69 64 5d 24 77 73  -Null..[void]$ws
6780: 31 2e 52 61 6e 67 65 28 22 43 31 22 29 2e 50 61  1.Range("C1").Pa
6790: 73 74 65 53 70 65 63 69 61 6c 28 2d 34 31 36 33  steSpecial(-4163
67a0: 29 20 0d 0a 24 77 73 31 2e 43 65 6c 6c 73 2e 49  ) ..$ws1.Cells.I
67b0: 74 65 6d 28 32 2c 32 29 2e 46 6f 72 6d 75 6c 61  tem(2,2).Formula
67c0: 52 31 43 31 20 3d 20 22 3d 43 4f 55 4e 54 49 46  R1C1 = "=COUNTIF
67d0: 28 43 5b 2d 31 5d 2c 52 43 5b 2d 31 5d 29 3e 31  (C[-1],RC[-1])>1
67e0: 22 0d 0a 24 72 61 6e 67 65 31 3d 20 24 77 73 31  "..$range1= $ws1
67f0: 2e 72 61 6e 67 65 28 22 42 32 22 29 0d 0a 24 72  .range("B2")..$r
6800: 61 6e 67 65 32 20 3d 20 24 77 73 31 2e 72 61 6e  ange2 = $ws1.ran
6810: 67 65 28 22 42 32 3a 42 24 6c 61 73 74 72 6f 77  ge("B2:B$lastrow
6820: 22 29 0d 0a 5b 76 6f 69 64 5d 24 72 61 6e 67 65  ")..[void]$range
6830: 31 2e 41 75 74 6f 46 69 6c 6c 28 24 72 61 6e 67  1.AutoFill($rang
6840: 65 32 2c 24 78 6c 46 69 6c 6c 44 65 66 61 75 6c  e2,$xlFillDefaul
6850: 74 29 20 0d 0a 23 20 54 68 6e 61 6b 73 20 74 6f  t) ..# Thnaks to
6860: 20 57 6f 6c 66 67 61 6e 67 20 4b 61 69 73 20 66   Wolfgang Kais f
6870: 6f 72 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  or the following
6880: 3a 0d 0a 24 78 6c 2e 52 61 6e 67 65 28 22 42 32  :..$xl.Range("B2
6890: 22 29 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75  ").Select() | Ou
68a0: 74 2d 4e 75 6c 6c 0d 0a 24 78 6c 2e 53 65 6c 65  t-Null..$xl.Sele
68b0: 63 74 69 6f 6e 2e 46 6f 72 6d 61 74 43 6f 6e 64  ction.FormatCond
68c0: 69 74 69 6f 6e 73 2e 44 65 6c 65 74 65 28 29 0d  itions.Delete().
68d0: 0a 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 46  .$xl.Selection.F
68e0: 6f 72 6d 61 74 43 6f 6e 64 69 74 69 6f 6e 73 2e  ormatConditions.
68f0: 41 64 64 28 32 2c 20 30 2c 20 22 3d 43 4f 55 4e  Add(2, 0, "=COUN
6900: 54 49 46 28 41 3a 41 2c 41 32 29 3e 31 22 29 20  TIF(A:A,A2)>1") 
6910: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 24 78 6c 2e  | Out-Null..$xl.
6920: 53 65 6c 65 63 74 69 6f 6e 2e 46 6f 72 6d 61 74  Selection.Format
6930: 43 6f 6e 64 69 74 69 6f 6e 73 2e 49 74 65 6d 28  Conditions.Item(
6940: 31 29 2e 49 6e 74 65 72 69 6f 72 2e 43 6f 6c 6f  1).Interior.Colo
6950: 72 49 6e 64 65 78 20 3d 20 38 0d 0a 24 78 6c 2e  rIndex = 8..$xl.
6960: 53 65 6c 65 63 74 69 6f 6e 2e 43 6f 70 79 28 29  Selection.Copy()
6970: 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 24 78 6c   | Out-Null..$xl
6980: 2e 43 6f 6c 75 6d 6e 73 2e 49 74 65 6d 28 22 42  .Columns.Item("B
6990: 3a 42 22 29 2e 53 65 6c 65 63 74 28 29 20 7c 20  :B").Select() | 
69a0: 4f 75 74 2d 4e 75 6c 6c 0d 0a 24 78 6c 2e 52 61  Out-Null..$xl.Ra
69b0: 6e 67 65 28 22 42 32 22 29 2e 41 63 74 69 76 61  nge("B2").Activa
69c0: 74 65 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  te() | Out-Null.
69d0: 0a 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 50  .$xl.Selection.P
69e0: 61 73 74 65 53 70 65 63 69 61 6c 28 2d 34 31 32  asteSpecial(-412
69f0: 32 2c 20 2d 34 31 34 32 2c 20 24 66 61 6c 73 65  2, -4142, $false
6a00: 2c 20 24 66 61 6c 73 65 29 20 7c 20 4f 75 74 2d  , $false) | Out-
6a10: 4e 75 6c 6c 20 0d 0a 24 72 20 3d 20 24 77 73 31  Null ..$r = $ws1
6a20: 2e 55 73 65 64 52 61 6e 67 65 0d 0a 24 72 32 20  .UsedRange..$r2 
6a30: 3d 20 24 77 73 31 2e 52 61 6e 67 65 28 22 42 32  = $ws1.Range("B2
6a40: 22 29 0d 0a 24 72 33 20 3d 20 24 77 73 31 2e 52  ")..$r3 = $ws1.R
6a50: 61 6e 67 65 28 22 45 32 22 29 0d 0a 24 72 34 20  ange("E2")..$r4 
6a60: 3d 20 24 77 73 31 2e 52 61 6e 67 65 28 22 43 32  = $ws1.Range("C2
6a70: 22 29 20 0d 0a 24 61 20 3d 20 24 72 2e 53 6f 72  ") ..$a = $r.Sor
6a80: 74 28 24 72 32 2c 24 78 6c 44 65 73 63 65 6e 64  t($r2,$xlDescend
6a90: 69 6e 67 2c 24 72 33 2c 24 6e 75 6c 6c 2c 24 78  ing,$r3,$null,$x
6aa0: 6c 41 73 63 65 6e 64 69 6e 67 2c 20 60 0d 0a 24  lAscending, `..$
6ab0: 72 34 2c 24 78 6c 41 73 63 65 6e 64 69 6e 67 2c  r4,$xlAscending,
6ac0: 24 78 6c 59 65 73 29 20 0d 0a 24 77 73 31 2e 41  $xlYes) ..$ws1.A
6ad0: 70 70 6c 69 63 61 74 69 6f 6e 2e 41 63 74 69 76  pplication.Activ
6ae0: 65 57 69 6e 64 6f 77 2e 46 72 65 65 7a 65 50 61  eWindow.FreezePa
6af0: 6e 65 73 3d 24 74 72 75 65 0d 0a 5b 76 6f 69 64  nes=$true..[void
6b00: 5d 24 77 73 31 2e 63 65 6c 6c 73 2e 65 6e 74 69  ]$ws1.cells.enti
6b10: 72 65 43 6f 6c 75 6d 6e 2e 41 75 74 6f 66 69 74  reColumn.Autofit
6b20: 28 29 0d 0a 24 73 20 3d 20 24 78 6c 2e 52 61 6e  ()..$s = $xl.Ran
6b30: 67 65 28 22 41 31 22 29 2e 45 6e 74 69 72 65 43  ge("A1").EntireC
6b40: 6f 6c 75 6d 6e 0d 0a 24 73 2e 48 69 64 64 65 6e  olumn..$s.Hidden
6b50: 20 3d 20 24 74 72 75 65 0d 0a 24 77 73 31 2e 52   = $true..$ws1.R
6b60: 61 6e 67 65 28 22 42 32 22 29 2e 53 65 6c 65 63  ange("B2").Selec
6b70: 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t() | Out-Null..
6b80: 7d 0d 0a 0d 0a 23 20 3d 3d 3d 3d 3d 3d 3d 3d 3d  }....# =========
6b90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6ba0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6bb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6bc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6bd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6be0: 3d 3d 3d 3d 3d 0d 0a 23 20 48 6f 77 20 64 6f 20  =====..# How do 
6bf0: 49 20 73 68 6f 77 20 61 6c 6c 20 35 37 20 43 6f  I show all 57 Co
6c00: 6c 6f 72 73 20 69 6e 20 45 78 63 65 6c 3f 0d 0a  lors in Excel?..
6c10: 0d 0a 24 78 6c 20 3d 20 6e 65 77 2d 6f 62 6a 65  ..$xl = new-obje
6c20: 63 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 65 78  ct -comobject ex
6c30: 63 65 6c 2e 61 70 70 6c 69 63 61 74 69 6f 6e 0d  cel.application.
6c40: 0a 24 78 6c 2e 56 69 73 69 62 6c 65 20 3d 20 24  .$xl.Visible = $
6c50: 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61  true..$xl.Displa
6c60: 79 41 6c 65 72 74 73 20 3d 20 24 46 61 6c 73 65  yAlerts = $False
6c70: 20 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 57 6f 72   ..$wb = $xl.Wor
6c80: 6b 62 6f 6f 6b 73 2e 41 64 64 28 29 0d 0a 24 77  kbooks.Add()..$w
6c90: 73 20 3d 20 24 77 62 2e 57 6f 72 6b 73 68 65 65  s = $wb.Workshee
6ca0: 74 73 2e 49 74 65 6d 28 31 29 0d 0a 24 72 6f 77  ts.Item(1)..$row
6cb0: 20 3d 20 31 0d 0a 24 69 20 3d 20 31 0d 0a 46 6f   = 1..$i = 1..Fo
6cc0: 72 28 24 69 20 3d 20 31 3b 20 24 69 20 2d 6c 74  r($i = 1; $i -lt
6cd0: 20 35 37 3b 20 24 69 2b 2b 29 7b 0d 0a 24 77 73   57; $i++){..$ws
6ce0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 24 72 6f 77  .Cells.Item($row
6cf0: 2c 20 31 29 20 3d 20 22 27 24 27 77 73 2e 43 65  , 1) = "'$'ws.Ce
6d00: 6c 6c 73 2e 49 74 65 6d 28 24 72 6f 77 2c 20 32  lls.Item($row, 2
6d10: 29 2e 46 6f 6e 74 2e 43 6f 6c 6f 72 49 6e 64 65  ).Font.ColorInde
6d20: 78 20 3d 20 22 20 2b 20 24 72 6f 77 0d 0a 24 77  x = " + $row..$w
6d30: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 24 72 6f  s.Cells.Item($ro
6d40: 77 2c 20 32 29 2e 46 6f 6e 74 2e 43 6f 6c 6f 72  w, 2).Font.Color
6d50: 49 6e 64 65 78 20 3d 20 24 72 6f 77 0d 0a 24 77  Index = $row..$w
6d60: 73 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 24 72 6f  s.Cells.Item($ro
6d70: 77 2c 20 32 29 20 3d 20 22 74 65 73 74 20 22 20  w, 2) = "test " 
6d80: 2b 20 24 72 6f 77 0d 0a 24 72 6f 77 2b 2b 0d 0a  + $row..$row++..
6d90: 7d 0d 0a 5b 76 6f 69 64 5d 24 77 73 2e 63 65 6c  }..[void]$ws.cel
6da0: 6c 73 2e 65 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e  ls.entireColumn.
6db0: 41 75 74 6f 66 69 74 28 29 20 0d 0a 20 0d 0a 23  Autofit() .. ..#
6dc0: 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d   ===============
6dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6df0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6e00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6e10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d  ===============.
6e20: 0a 23 20 48 6f 77 20 64 6f 20 49 20 69 6e 73 65  .# How do I inse
6e30: 72 74 20 61 20 48 79 70 65 72 6c 69 6e 6b 20 69  rt a Hyperlink i
6e40: 6e 74 6f 20 61 6e 20 45 78 63 65 6c 20 53 70 72  nto an Excel Spr
6e50: 65 61 64 73 68 65 65 74 3f 20 0d 0a 20 0d 0a 66  eadsheet? .. ..f
6e60: 75 6e 63 74 69 6f 6e 20 52 65 6c 65 61 73 65 2d  unction Release-
6e70: 52 65 66 20 28 24 69 6e 66 6f 29 20 7b 0d 0a 20  Ref ($info) {.. 
6e80: 20 20 20 66 6f 72 65 61 63 68 20 28 20 24 70 20     foreach ( $p 
6e90: 69 6e 20 24 61 72 67 73 20 29 20 7b 0d 0a 20 20  in $args ) {..  
6ea0: 20 20 20 20 20 20 28 5b 53 79 73 74 65 6d 2e 52        ([System.R
6eb0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
6ec0: 72 76 69 63 65 73 2e 4d 61 72 73 68 61 6c 5d 3a  rvices.Marshal]:
6ed0: 3a 52 65 6c 65 61 73 65 43 6f 6d 4f 62 6a 65 63  :ReleaseComObjec
6ee0: 74 28 0d 0a 20 20 20 20 20 20 20 20 5b 53 79 73  t(..        [Sys
6ef0: 74 65 6d 2e 5f 5f 43 6f 6d 4f 62 6a 65 63 74 5d  tem.__ComObject]
6f00: 24 70 29 20 2d 67 74 20 30 29 0d 0a 20 20 20 20  $p) -gt 0)..    
6f10: 20 20 20 20 5b 53 79 73 74 65 6d 2e 47 43 5d 3a      [System.GC]:
6f20: 3a 43 6f 6c 6c 65 63 74 28 29 0d 0a 20 20 20 20  :Collect()..    
6f30: 20 20 20 20 5b 53 79 73 74 65 6d 2e 47 43 5d 3a      [System.GC]:
6f40: 3a 57 61 69 74 46 6f 72 50 65 6e 64 69 6e 67 46  :WaitForPendingF
6f50: 69 6e 61 6c 69 7a 65 72 73 28 29 0d 0a 20 20 20  inalizers()..   
6f60: 20 7d 0d 0a 7d 20 23 20 45 6e 64 20 46 75 6e 63   }..} # End Func
6f70: 74 69 6f 6e 0d 0a 0d 0a 46 75 6e 63 74 69 6f 6e  tion....Function
6f80: 20 58 4c 48 79 70 65 72 6c 69 6e 6b 73 20 7b 0d   XLHyperlinks {.
6f90: 0a 24 6c 69 6e 6b 20 3d 20 22 68 74 74 70 3a 2f  .$link = "http:/
6fa0: 2f 77 77 77 2e 6d 69 63 72 6f 73 6f 66 74 2e 63  /www.microsoft.c
6fb0: 6f 6d 2f 74 65 63 68 6e 65 74 2f 73 63 72 69 70  om/technet/scrip
6fc0: 74 63 65 6e 74 65 72 22 20 0d 0a 24 78 6c 20 3d  tcenter" ..$xl =
6fd0: 20 6e 65 77 2d 6f 62 6a 65 63 74 20 2d 63 6f 6d   new-object -com
6fe0: 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e 61 70 70  object excel.app
6ff0: 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c 2e 56 69  lication..$xl.Vi
7000: 73 69 62 6c 65 20 3d 20 24 74 72 75 65 0d 0a 24  sible = $true..$
7010: 77 62 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f  wb = $xl.Workboo
7020: 6b 73 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d 20  ks.Add()..$ws = 
7030: 24 77 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49  $wb.Worksheets.I
7040: 74 65 6d 28 31 29 20 0d 0a 24 77 73 2e 43 65 6c  tem(1) ..$ws.Cel
7050: 6c 73 2e 49 74 65 6d 28 31 2c 20 31 29 2e 56 61  ls.Item(1, 1).Va
7060: 6c 75 65 28 29 20 3d 20 22 53 63 72 69 70 74 20  lue() = "Script 
7070: 43 65 6e 74 65 72 22 0d 0a 24 72 20 3d 20 24 77  Center"..$r = $w
7080: 73 2e 52 61 6e 67 65 28 22 41 31 22 29 0d 0a 24  s.Range("A1")..$
7090: 6f 62 6a 4c 69 6e 6b 20 3d 20 24 77 73 2e 48 79  objLink = $ws.Hy
70a0: 70 65 72 6c 69 6e 6b 73 2e 41 64 64 28 24 72 2c  perlinks.Add($r,
70b0: 20 24 6c 69 6e 6b 29 0d 0a 24 61 20 3d 20 52 65   $link)..$a = Re
70c0: 6c 65 61 73 65 2d 52 65 66 20 24 72 20 24 77 73  lease-Ref $r $ws
70d0: 20 24 77 62 20 24 78 6c 0d 0a 7d 20 23 20 45 6e   $wb $xl..} # En
70e0: 64 20 46 75 6e 63 74 69 6f 6e 0d 0a 0d 0a 23 20  d Function....# 
70f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7100: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7110: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7120: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7130: 5f 5f 5f 5f 5f 5f 5f 5f 20 0d 0a 23 0d 0a 23 20  ________ ..#..# 
7140: 48 6f 77 20 64 6f 20 49 20 73 75 6d 20 61 20 63  How do I sum a c
7150: 6f 6c 75 6d 6e 20 69 6e 20 45 78 63 65 6c 3f 0d  olumn in Excel?.
7160: 0a 23 0d 0a 0d 0a 46 75 6e 63 74 69 6f 6e 20 78  .#....Function x
7170: 6c 53 75 6d 20 7b 0d 0a 24 72 61 6e 67 65 20 3d  lSum {..$range =
7180: 20 24 77 73 31 2e 75 73 65 64 52 61 6e 67 65 0d   $ws1.usedRange.
7190: 0a 24 72 6f 77 20 3d 20 24 72 61 6e 67 65 2e 72  .$row = $range.r
71a0: 6f 77 73 2e 63 6f 75 6e 74 20 23 20 54 61 6b 65  ows.count # Take
71b0: 73 20 79 6f 75 20 74 6f 20 74 68 65 20 6c 61 73  s you to the las
71c0: 74 20 75 73 65 64 20 72 6f 77 0d 0a 24 53 75 6d  t used row..$Sum
71d0: 72 6f 77 20 3d 20 24 72 6f 77 20 2b 20 31 0d 0a  row = $row + 1..
71e0: 24 72 20 3d 20 24 77 73 31 2e 52 61 6e 67 65 28  $r = $ws1.Range(
71f0: 22 41 32 3a 41 24 72 6f 77 22 29 20 23 20 73 65  "A2:A$row") # se
7200: 6c 65 63 74 20 74 68 65 20 63 6f 6c 75 6d 6e 20  lect the column 
7210: 74 6f 20 41 64 64 20 75 70 0d 0a 24 66 75 6e 63  to Add up..$func
7220: 74 69 6f 6e 73 20 3d 20 24 78 6c 2e 57 6f 72 6b  tions = $xl.Work
7230: 53 68 65 65 74 66 75 6e 63 74 69 6f 6e 0d 0a 24  Sheetfunction..$
7240: 77 73 2e 63 65 6c 6c 73 2e 69 74 65 6d 28 24 53  ws.cells.item($S
7250: 75 6d 72 6f 77 2c 31 29 20 3d 20 24 66 75 6e 63  umrow,1) = $func
7260: 74 69 6f 6e 73 2e 73 75 6d 28 24 72 29 20 23 20  tions.sum($r) # 
7270: 74 68 69 73 20 75 73 65 73 20 74 68 65 20 45 78  this uses the Ex
7280: 63 65 6c 20 73 75 6d 20 66 75 6e 63 74 69 6f 6e  cel sum function
7290: 0d 0a 24 72 61 6e 67 65 53 74 72 69 6e 67 20 3d  ..$rangeString =
72a0: 20 24 72 2e 61 64 64 72 65 73 73 28 29 2e 74 6f   $r.address().to
72b0: 73 74 72 69 6e 67 28 29 20 2d 72 65 70 6c 61 63  string() -replac
72c0: 65 20 22 5c 24 22 2c 27 27 20 23 20 63 6f 6e 76  e "\$",'' # conv
72d0: 65 72 74 20 66 6f 72 6d 75 6c 61 20 74 6f 20 54  ert formula to T
72e0: 65 78 74 0d 0a 24 77 73 2e 63 65 6c 6c 73 2e 69  ext..$ws.cells.i
72f0: 74 65 6d 28 24 53 75 6d 72 6f 77 2c 32 29 20 3d  tem($Sumrow,2) =
7300: 20 22 53 75 6d 20 24 72 61 6e 67 65 53 74 72 69   "Sum $rangeStri
7310: 6e 67 22 20 23 20 50 72 69 6e 74 20 66 6f 72 6d  ng" # Print form
7320: 75 6c 61 20 69 6e 20 43 65 6c 6c 20 42 20 26 20  ula in Cell B & 
7330: 6c 61 73 74 20 72 6f 77 20 2b 20 31 0d 0a 24 77  last row + 1..$w
7340: 73 31 2e 63 65 6c 6c 73 2e 69 74 65 6d 28 24 53  s1.cells.item($S
7350: 75 6d 72 6f 77 2c 31 29 2e 53 65 6c 65 63 74 28  umrow,1).Select(
7360: 29 0d 0a 24 77 73 31 2e 72 61 6e 67 65 28 22 61  )..$ws1.range("a
7370: 24 7b 53 75 6d 72 6f 77 7d 3a 62 24 53 75 6d 72  ${Sumrow}:b$Sumr
7380: 6f 77 22 29 2e 66 6f 6e 74 2e 62 6f 6c 64 20 3d  ow").font.bold =
7390: 20 22 74 72 75 65 22 20 23 20 73 65 70 65 72 61   "true" # sepera
73a0: 74 65 20 74 68 65 20 3a 20 66 72 6f 6d 20 74 68  te the : from th
73b0: 65 20 24 20 77 69 74 68 20 7b 7d 0d 0a 24 77 73  e $ with {}..$ws
73c0: 31 2e 72 61 6e 67 65 28 22 61 24 7b 53 75 6d 72  1.range("a${Sumr
73d0: 6f 77 7d 3a 62 24 53 75 6d 72 6f 77 22 29 2e 66  ow}:b$Sumrow").f
73e0: 6f 6e 74 2e 73 69 7a 65 3d 31 32 20 23 20 43 68  ont.size=12 # Ch
73f0: 61 6e 67 65 73 20 74 68 65 20 66 6f 6e 74 20 73  anges the font s
7400: 69 7a 65 20 74 6f 20 31 32 20 70 6f 69 6e 74 73  ize to 12 points
7410: 0d 0a 5b 76 6f 69 64 5d 24 72 61 6e 67 65 2e 65  ..[void]$range.e
7420: 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e 41 75 74 6f  ntireColumn.Auto
7430: 66 69 74 28 29 0d 0a 7d 20 23 20 45 6e 64 20 46  fit()..} # End F
7440: 75 6e 63 74 69 6f 6e 0d 0a 0d 0a 23 20 5f 5f 5f  unction....# ___
7450: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7460: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7470: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7480: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
7490: 5f 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 48 6f 77 20  _____..#..# How 
74a0: 64 6f 20 49 20 53 75 62 54 6f 74 61 6c 20 61 20  do I SubTotal a 
74b0: 63 6f 6c 75 6d 6e 20 69 6e 20 61 6e 20 45 78 63  column in an Exc
74c0: 65 6c 20 57 6f 72 6b 73 68 65 65 74 3f 0d 0a 23  el Worksheet?..#
74d0: 0d 0a 23 0d 0a 23 20 20 53 61 6d 70 6c 65 20 53  ..#..#  Sample S
74e0: 70 72 65 61 64 73 68 65 65 74 0d 0a 23 20 20 20  preadsheet..#   
74f0: 20 20 20 20 20 20 20 6d 6f 6e 20 20 20 20 74 75         mon    tu
7500: 65 20 20 20 20 77 65 64 0d 0a 23 20 65 67 67 73  e    wed..# eggs
7510: 20 20 20 20 20 20 20 20 31 20 20 20 20 20 31 20          1     1 
7520: 20 20 20 20 20 31 0d 0a 23 20 68 61 6d 20 20 20       1..# ham   
7530: 20 20 20 20 20 20 35 20 20 20 20 20 35 20 20 20        5     5   
7540: 20 20 20 35 0d 0a 23 20 73 70 61 6d 20 20 20 20     5..# spam    
7550: 20 20 20 31 20 20 20 20 20 34 20 20 20 20 20 20     1     4      
7560: 37 0d 0a 23 20 73 70 61 6d 20 20 20 20 20 20 20  7..# spam       
7570: 20 32 20 20 20 20 20 35 20 20 20 20 20 20 38 0d   2     5      8.
7580: 0a 23 20 73 70 61 6d 20 20 20 20 20 20 20 20 33  .# spam        3
7590: 20 20 20 20 20 36 20 20 20 20 20 20 39 0d 0a 23       6      9..#
75a0: 0d 0a 23 20 43 6f 64 65 20 74 6f 20 73 75 62 20  ..# Code to sub 
75b0: 74 6f 74 61 6c 0d 0a 24 78 6c 53 75 6d 20 3d 20  total..$xlSum = 
75c0: 2d 34 31 35 37 0d 0a 24 72 61 6e 67 65 20 3d 20  -4157..$range = 
75d0: 24 78 6c 2e 72 61 6e 67 65 28 22 41 31 3a 44 36  $xl.range("A1:D6
75e0: 22 29 0d 0a 24 72 61 6e 67 65 2e 53 75 62 74 6f  ")..$range.Subto
75f0: 74 61 6c 28 31 2c 2d 34 31 35 37 2c 28 32 2c 33  tal(1,-4157,(2,3
7600: 2c 34 29 2c 24 74 72 75 65 2c 24 46 61 6c 73 65  ,4),$true,$False
7610: 2c 24 74 72 75 65 29 20 0d 0a 0d 0a 23 20 20 20  ,$true) ....#   
7620: 20 20 53 65 6c 65 63 74 69 6f 6e 2e 53 75 62 74    Selection.Subt
7630: 6f 74 61 6c 20 47 72 6f 75 70 42 79 3a 3d 31 2c  otal GroupBy:=1,
7640: 20 46 75 6e 63 74 69 6f 6e 3a 3d 78 6c 53 75 6d   Function:=xlSum
7650: 2c 20 54 6f 74 61 6c 4c 69 73 74 3a 3d 41 72 72  , TotalList:=Arr
7660: 61 79 28 34 29 2c 20 5f 0d 0a 23 20 20 20 20 20  ay(4), _..#     
7670: 52 65 70 6c 61 63 65 3a 3d 54 72 75 65 2c 20 50  Replace:=True, P
7680: 61 67 65 42 72 65 61 6b 73 3a 3d 46 61 6c 73 65  ageBreaks:=False
7690: 2c 20 53 75 6d 6d 61 72 79 42 65 6c 6f 77 44 61  , SummaryBelowDa
76a0: 74 61 3a 3d 54 72 75 65 0d 0a 23 20 5f 5f 5f 5f  ta:=True..# ____
76b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
76c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
76d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
76e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
76f0: 5f 5f 5f 5f 0d 0a 23 0d 0a 23 20 49 6e 20 74 68  ____..#..# In th
7700: 69 73 20 65 78 61 6d 70 6c 65 20 53 75 62 74 6f  is example Subto
7710: 74 61 6c 73 20 61 72 65 20 73 75 6d 73 20 67 72  tals are sums gr
7720: 6f 75 70 65 64 20 62 79 20 65 61 63 68 20 63 68  ouped by each ch
7730: 61 6e 67 65 20 69 6e 20 66 69 65 6c 64 20 31 20  ange in field 1 
7740: 22 53 61 6c 65 73 70 65 72 73 6f 6e 22 0d 0a 23  "Salesperson"..#
7750: 20 77 69 74 68 20 53 75 62 74 6f 74 61 6c 73 20   with Subtotals 
7760: 6f 66 20 66 69 65 6c 64 20 32 20 22 41 6d 6f 75  of field 2 "Amou
7770: 6e 74 22 2e 0d 0a 23 20 44 65 74 61 69 6c 73 20  nt"...# Details 
7780: 6f 66 20 53 75 62 74 6f 74 61 6c 20 66 75 6e 63  of Subtotal func
7790: 74 69 6f 6e 0d 0a 23 20 53 75 62 54 6f 74 61 6c  tion..# SubTotal
77a0: 20 47 72 6f 75 70 42 79 20 3d 32 2c 20 46 75 6e   GroupBy =2, Fun
77b0: 63 74 69 6f 6e 20 3d 58 4c 53 75 6d 2c 20 54 6f  ction =XLSum, To
77c0: 74 61 6c 4c 69 73 74 20 3d 41 72 72 61 79 28 31  talList =Array(1
77d0: 29 2c 0d 0a 23 20 52 65 70 6c 61 63 65 20 3d 46  ),..# Replace =F
77e0: 61 6c 73 65 2c 20 50 61 67 65 42 72 65 61 6b 73  alse, PageBreaks
77f0: 20 3d 46 61 6c 73 65 2c 20 53 75 6d 6d 61 72 79   =False, Summary
7800: 42 65 6c 6f 77 44 61 74 61 20 3d 24 54 72 75 65  BelowData =$True
7810: 20 0d 0a 0d 0a 46 75 6e 63 74 69 6f 6e 20 58 4c   ....Function XL
7820: 53 75 62 74 6f 74 61 6c 73 20 7b 0d 0a 24 78 6c  Subtotals {..$xl
7830: 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 32 0d 0a  Expression = 2..
7840: 24 78 6c 50 61 73 74 65 46 6f 72 6d 61 74 73 20  $xlPasteFormats 
7850: 3d 20 2d 34 31 32 32 0d 0a 24 78 6c 4e 6f 6e 65  = -4122..$xlNone
7860: 20 3d 20 2d 34 31 34 32 0d 0a 24 78 6c 54 6f 52   = -4142..$xlToR
7870: 69 67 68 74 20 3d 20 2d 34 31 36 31 0d 0a 24 78  ight = -4161..$x
7880: 6c 54 6f 4c 65 66 74 20 3d 20 2d 34 31 35 39 0d  lToLeft = -4159.
7890: 0a 24 78 6c 44 6f 77 6e 20 3d 20 2d 34 31 32 31  .$xlDown = -4121
78a0: 0d 0a 24 78 6c 53 68 69 66 74 54 6f 52 69 67 68  ..$xlShiftToRigh
78b0: 74 20 3d 20 2d 34 31 36 31 0d 0a 24 78 6c 46 69  t = -4161..$xlFi
78c0: 6c 6c 44 65 66 61 75 6c 74 20 3d 20 30 0d 0a 24  llDefault = 0..$
78d0: 78 6c 53 75 6d 6d 61 72 79 41 62 6f 76 65 20 3d  xlSummaryAbove =
78e0: 20 30 0d 0a 24 78 6c 53 6f 72 74 56 61 6c 75 65   0..$xlSortValue
78f0: 73 20 3d 20 24 78 6c 50 69 6e 59 69 6e 20 3d 20  s = $xlPinYin = 
7900: 31 0d 0a 24 78 6c 41 73 63 65 6e 64 69 6e 67 20  1..$xlAscending 
7910: 3d 20 31 0d 0a 24 78 6c 44 65 73 63 65 6e 64 69  = 1..$xlDescendi
7920: 6e 67 20 3d 20 32 0d 0a 24 78 6c 59 65 73 20 3d  ng = 2..$xlYes =
7930: 20 31 0d 0a 24 78 6c 54 6f 70 54 6f 42 6f 74 74   1..$xlTopToBott
7940: 6f 6d 20 3d 20 31 0d 0a 24 78 6c 50 61 73 74 65  om = 1..$xlPaste
7950: 56 61 6c 75 65 73 20 3d 20 2d 34 31 36 33 20 20  Values = -4163  
7960: 20 20 20 20 20 20 20 20 23 20 56 61 6c 75 65 73          # Values
7970: 20 6f 6e 6c 79 2c 20 6e 6f 74 20 66 6f 72 6d 75   only, not formu
7980: 6c 61 73 0d 0a 24 78 6c 43 65 6c 6c 54 79 70 65  las..$xlCellType
7990: 4c 61 73 74 43 65 6c 6c 20 3d 20 31 31 20 20 20  LastCell = 11   
79a0: 20 20 20 20 20 23 20 74 6f 20 66 69 6e 64 20 6c       # to find l
79b0: 61 73 74 20 75 73 65 64 20 63 65 6c 6c 0d 0a 24  ast used cell..$
79c0: 78 6c 53 75 6d 20 3d 20 2d 34 31 35 37 20 0d 0a  xlSum = -4157 ..
79d0: 24 78 6c 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74  $xl = New-Object
79e0: 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 45 78 63 65   -comobject Exce
79f0: 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 24  l.Application..$
7a00: 78 6c 2e 56 69 73 69 62 6c 65 20 3d 20 24 74 72  xl.Visible = $tr
7a10: 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41  ue..$xl.DisplayA
7a20: 6c 65 72 74 73 20 3d 20 24 46 61 6c 73 65 0d 0a  lerts = $False..
7a30: 24 77 62 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f  $wb = $xl.Workbo
7a40: 6f 6b 73 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d  oks.Add()..$ws =
7a50: 20 24 77 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e   $wb.Worksheets.
7a60: 49 74 65 6d 28 31 29 0d 0a 24 77 73 20 3d 20 24  Item(1)..$ws = $
7a70: 77 62 2e 53 68 65 65 74 73 2e 41 64 64 28 29 0d  wb.Sheets.Add().
7a80: 0a 24 78 6c 2e 57 6f 72 6b 73 68 65 65 74 73 2e  .$xl.Worksheets.
7a90: 69 74 65 6d 28 31 29 2e 6e 61 6d 65 20 3d 20 22  item(1).name = "
7aa0: 44 65 74 61 69 6c 22 0d 0a 24 78 6c 2e 57 6f 72  Detail"..$xl.Wor
7ab0: 6b 73 68 65 65 74 73 2e 69 74 65 6d 28 32 29 2e  ksheets.item(2).
7ac0: 6e 61 6d 65 20 3d 20 22 53 68 6f 77 4c 65 76 65  name = "ShowLeve
7ad0: 6c 73 31 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68  ls1"..$xl.Worksh
7ae0: 65 65 74 73 2e 69 74 65 6d 28 33 29 2e 6e 61 6d  eets.item(3).nam
7af0: 65 20 3d 20 22 53 68 6f 77 4c 65 76 65 6c 73 32  e = "ShowLevels2
7b00: 22 0d 0a 24 78 6c 2e 57 6f 72 6b 73 68 65 65 74  "..$xl.Worksheet
7b10: 73 2e 69 74 65 6d 28 34 29 2e 6e 61 6d 65 20 3d  s.item(4).name =
7b20: 20 22 53 68 6f 77 4c 65 76 65 6c 73 33 22 20 0d   "ShowLevels3" .
7b30: 0a 24 77 73 31 20 3d 20 24 77 62 2e 77 6f 72 6b  .$ws1 = $wb.work
7b40: 73 68 65 65 74 73 20 7c 20 77 68 65 72 65 20 7b  sheets | where {
7b50: 24 5f 2e 6e 61 6d 65 20 2d 65 71 20 22 44 65 74  $_.name -eq "Det
7b60: 61 69 6c 22 7d 0d 0a 24 77 73 32 20 3d 20 24 77  ail"}..$ws2 = $w
7b70: 62 2e 77 6f 72 6b 73 68 65 65 74 73 20 7c 20 77  b.worksheets | w
7b80: 68 65 72 65 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65  here {$_.name -e
7b90: 71 20 22 53 68 6f 77 4c 65 76 65 6c 73 31 22 7d  q "ShowLevels1"}
7ba0: 20 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63   #<------- Selec
7bb0: 74 73 20 73 68 65 65 74 20 36 0d 0a 24 77 73 33  ts sheet 6..$ws3
7bc0: 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74   = $wb.worksheet
7bd0: 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61  s | where {$_.na
7be0: 6d 65 20 2d 65 71 20 22 53 68 6f 77 4c 65 76 65  me -eq "ShowLeve
7bf0: 6c 73 32 22 7d 20 23 3c 2d 2d 2d 2d 2d 2d 2d 20  ls2"} #<------- 
7c00: 53 65 6c 65 63 74 73 20 73 68 65 65 74 20 35 0d  Selects sheet 5.
7c10: 0a 24 77 73 34 20 3d 20 24 77 62 2e 77 6f 72 6b  .$ws4 = $wb.work
7c20: 73 68 65 65 74 73 20 7c 20 77 68 65 72 65 20 7b  sheets | where {
7c30: 24 5f 2e 6e 61 6d 65 20 2d 65 71 20 22 53 68 6f  $_.name -eq "Sho
7c40: 77 4c 65 76 65 6c 73 33 22 7d 20 23 3c 2d 2d 2d  wLevels3"} #<---
7c50: 2d 2d 2d 2d 20 53 65 6c 65 63 74 73 20 73 68 65  ---- Selects she
7c60: 65 74 20 34 20 0d 0a 24 77 73 31 2e 54 61 62 2e  et 4 ..$ws1.Tab.
7c70: 43 6f 6c 6f 72 49 6e 64 65 78 20 3d 20 38 0d 0a  ColorIndex = 8..
7c80: 24 77 73 31 2e 54 61 62 2e 43 6f 6c 6f 72 49 6e  $ws1.Tab.ColorIn
7c90: 64 65 78 20 3d 20 35 0d 0a 24 77 73 32 2e 54 61  dex = 5..$ws2.Ta
7ca0: 62 2e 43 6f 6c 6f 72 49 6e 64 65 78 20 3d 20 36  b.ColorIndex = 6
7cb0: 0d 0a 24 77 73 33 2e 54 61 62 2e 43 6f 6c 6f 72  ..$ws3.Tab.Color
7cc0: 49 6e 64 65 78 20 3d 20 37 20 0d 0a 24 77 73 31  Index = 7 ..$ws1
7cd0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 32 29  .Cells.Item(1,2)
7ce0: 20 3d 20 22 41 6d 6f 75 6e 74 22 0d 0a 24 77 73   = "Amount"..$ws
7cf0: 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31  1.Cells.Item(1,1
7d00: 29 20 3d 20 22 53 61 6c 65 73 50 65 72 73 6f 6e  ) = "SalesPerson
7d10: 22 0d 0a 24 77 73 31 2e 43 65 6c 6c 73 2e 49 74  "..$ws1.Cells.It
7d20: 65 6d 28 32 2c 32 29 20 3d 20 37 33 32 34 0d 0a  em(2,2) = 7324..
7d30: 24 77 73 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28  $ws1.Cells.Item(
7d40: 32 2c 31 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24  2,1) = "Jack"..$
7d50: 77 73 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 33  ws1.Cells.Item(3
7d60: 2c 32 29 20 3d 20 32 39 34 0d 0a 24 77 73 31 2e  ,2) = 294..$ws1.
7d70: 43 65 6c 6c 73 2e 49 74 65 6d 28 33 2c 31 29 20  Cells.Item(3,1) 
7d80: 3d 20 22 45 6c 69 7a 61 62 65 74 68 22 0d 0a 24  = "Elizabeth"..$
7d90: 77 73 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 34  ws1.Cells.Item(4
7da0: 2c 32 29 20 3d 20 34 31 34 37 32 0d 0a 24 77 73  ,2) = 41472..$ws
7db0: 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 34 2c 31  1.Cells.Item(4,1
7dc0: 29 20 3d 20 22 52 65 6e 65 65 22 0d 0a 24 77 73  ) = "Renee"..$ws
7dd0: 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 35 2c 32  1.Cells.Item(5,2
7de0: 29 20 3d 20 32 35 34 30 36 0d 0a 24 77 73 31 2e  ) = 25406..$ws1.
7df0: 43 65 6c 6c 73 2e 49 74 65 6d 28 35 2c 31 29 20  Cells.Item(5,1) 
7e00: 3d 20 22 45 6c 69 7a 61 62 65 74 68 22 0d 0a 24  = "Elizabeth"..$
7e10: 77 73 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 36  ws1.Cells.Item(6
7e20: 2c 32 29 20 3d 20 32 30 34 38 30 0d 0a 24 77 73  ,2) = 20480..$ws
7e30: 31 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 36 2c 31  1.Cells.Item(6,1
7e40: 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24 77 73 31  ) = "Jack"..$ws1
7e50: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 37 2c 32 29  .Cells.Item(7,2)
7e60: 20 3d 20 31 31 32 39 34 0d 0a 24 77 73 31 2e 43   = 11294..$ws1.C
7e70: 65 6c 6c 73 2e 49 74 65 6d 28 37 2c 31 29 3d 20  ells.Item(7,1)= 
7e80: 22 52 65 6e 65 65 22 0d 0a 24 77 73 31 2e 43 65  "Renee"..$ws1.Ce
7e90: 6c 6c 73 2e 49 74 65 6d 28 38 2c 32 29 20 3d 20  lls.Item(8,2) = 
7ea0: 39 38 32 30 34 30 0d 0a 24 77 73 31 2e 43 65 6c  982040..$ws1.Cel
7eb0: 6c 73 2e 49 74 65 6d 28 38 2c 31 29 20 3d 20 22  ls.Item(8,1) = "
7ec0: 45 6c 69 7a 61 62 65 74 68 22 0d 0a 24 77 73 31  Elizabeth"..$ws1
7ed0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 39 2c 32 29  .Cells.Item(9,2)
7ee0: 20 3d 20 32 36 32 32 33 36 38 0d 0a 24 77 73 31   = 2622368..$ws1
7ef0: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 39 2c 31 29  .Cells.Item(9,1)
7f00: 20 3d 20 22 4a 61 63 6b 22 0d 0a 24 77 73 31 2e   = "Jack"..$ws1.
7f10: 43 65 6c 6c 73 2e 49 74 65 6d 28 31 30 2c 32 29  Cells.Item(10,2)
7f20: 20 3d 20 38 38 34 31 34 34 0d 0a 24 77 73 31 2e   = 884144..$ws1.
7f30: 43 65 6c 6c 73 2e 49 74 65 6d 28 31 30 2c 31 29  Cells.Item(10,1)
7f40: 20 3d 20 22 52 65 6e 65 65 22 20 0d 0a 24 77 73   = "Renee" ..$ws
7f50: 31 2e 52 61 6e 67 65 28 22 42 32 22 29 2e 53 65  1.Range("B2").Se
7f60: 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c  lect() | Out-Nul
7f70: 6c 0d 0a 24 77 73 31 2e 41 70 70 6c 69 63 61 74  l..$ws1.Applicat
7f80: 69 6f 6e 2e 41 63 74 69 76 65 57 69 6e 64 6f 77  ion.ActiveWindow
7f90: 2e 46 72 65 65 7a 65 50 61 6e 65 73 3d 24 74 72  .FreezePanes=$tr
7fa0: 75 65 0d 0a 5b 76 6f 69 64 5d 24 77 73 31 2e 63  ue..[void]$ws1.c
7fb0: 65 6c 6c 73 2e 65 6e 74 69 72 65 43 6f 6c 75 6d  ells.entireColum
7fc0: 6e 2e 41 75 74 6f 66 69 74 28 29 20 0d 0a 24 77  n.Autofit() ..$w
7fd0: 73 31 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 53  s1.Range("A1").S
7fe0: 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75  elect() | Out-Nu
7ff0: 6c 6c 0d 0a 24 72 20 3d 20 24 77 73 2e 52 61 6e  ll..$r = $ws.Ran
8000: 67 65 28 22 41 32 3a 41 31 30 22 29 0d 0a 24 72  ge("A2:A10")..$r
8010: 32 20 3d 20 24 77 73 2e 52 61 6e 67 65 28 22 41  2 = $ws.Range("A
8020: 32 22 29 20 23 20 53 6f 72 74 73 20 6f 6e 20 43  2") # Sorts on C
8030: 6f 6c 75 6d 6e 20 42 20 61 6e 64 20 6c 65 61 76  olumn B and leav
8040: 65 73 20 48 65 61 64 65 72 20 61 6c 6f 6e 65 0d  es Header alone.
8050: 0a 24 61 20 3d 20 24 72 2e 73 6f 72 74 28 24 72  .$a = $r.sort($r
8060: 32 2c 20 24 78 6c 41 73 63 65 6e 64 69 6e 67 29  2, $xlAscending)
8070: 20 0d 0a 24 72 61 6e 67 65 31 20 3d 20 24 77 73   ..$range1 = $ws
8080: 31 2e 52 61 6e 67 65 28 22 41 31 3a 42 31 22 29  1.Range("A1:B1")
8090: 2e 45 6e 74 69 72 65 43 6f 6c 75 6d 6e 0d 0a 24  .EntireColumn..$
80a0: 52 61 6e 67 65 31 2e 53 65 6c 65 63 74 28 29 20  Range1.Select() 
80b0: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 23 24 77 73  | Out-Null..#$ws
80c0: 2e 52 61 6e 67 65 2e 53 70 65 63 69 61 6c 43 65  .Range.SpecialCe
80d0: 6c 6c 73 28 31 31 29 29 2e 53 65 6c 65 63 74 28  lls(11)).Select(
80e0: 29 0d 0a 24 52 61 6e 67 65 31 2e 43 6f 70 79 28  )..$Range1.Copy(
80f0: 29 0d 0a 24 77 73 31 2e 52 61 6e 67 65 28 22 41  )..$ws1.Range("A
8100: 31 22 29 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f  1").Select() | O
8110: 75 74 2d 4e 75 6c 6c 20 0d 0a 24 77 73 32 2e 53  ut-Null ..$ws2.S
8120: 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75  elect() | Out-Nu
8130: 6c 6c 0d 0a 5b 76 6f 69 64 5d 24 77 73 32 2e 52  ll..[void]$ws2.R
8140: 61 6e 67 65 28 22 41 31 22 29 2e 50 61 73 74 65  ange("A1").Paste
8150: 53 70 65 63 69 61 6c 28 2d 34 31 36 33 29 0d 0a  Special(-4163)..
8160: 24 77 73 33 2e 53 65 6c 65 63 74 28 29 20 7c 20  $ws3.Select() | 
8170: 4f 75 74 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69 64 5d  Out-Null..[void]
8180: 24 77 73 33 2e 52 61 6e 67 65 28 22 41 31 22 29  $ws3.Range("A1")
8190: 2e 50 61 73 74 65 53 70 65 63 69 61 6c 28 2d 34  .PasteSpecial(-4
81a0: 31 36 33 29 0d 0a 24 77 73 34 2e 53 65 6c 65 63  163)..$ws4.Selec
81b0: 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t() | Out-Null..
81c0: 5b 76 6f 69 64 5d 24 77 73 34 2e 52 61 6e 67 65  [void]$ws4.Range
81d0: 28 22 41 31 22 29 2e 50 61 73 74 65 53 70 65 63  ("A1").PasteSpec
81e0: 69 61 6c 28 2d 34 31 36 33 29 20 0d 0a 24 77 73  ial(-4163) ..$ws
81f0: 32 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74  2.Select() | Out
8200: 2d 4e 75 6c 6c 0d 0a 24 72 61 6e 67 65 20 3d 20  -Null..$range = 
8210: 24 78 6c 2e 72 61 6e 67 65 28 22 41 31 3a 42 31  $xl.range("A1:B1
8220: 30 22 29 0d 0a 24 72 61 6e 67 65 2e 53 75 62 74  0")..$range.Subt
8230: 6f 74 61 6c 28 31 2c 2d 34 31 35 37 2c 28 32 29  otal(1,-4157,(2)
8240: 2c 24 74 72 75 65 2c 24 46 61 6c 73 65 2c 24 74  ,$true,$False,$t
8250: 72 75 65 29 0d 0a 24 77 73 32 2e 4f 75 74 6c 69  rue)..$ws2.Outli
8260: 6e 65 2e 53 68 6f 77 4c 65 76 65 6c 73 28 31 29  ne.ShowLevels(1)
8270: 0d 0a 5b 76 6f 69 64 5d 24 77 73 31 2e 63 65 6c  ..[void]$ws1.cel
8280: 6c 73 2e 65 6e 74 69 72 65 43 6f 6c 75 6d 6e 2e  ls.entireColumn.
8290: 41 75 74 6f 66 69 74 28 29 0d 0a 24 77 73 32 2e  Autofit()..$ws2.
82a0: 52 61 6e 67 65 28 22 41 31 22 29 2e 53 65 6c 65  Range("A1").Sele
82b0: 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 20  ct() | Out-Null 
82c0: 0d 0a 24 77 73 33 2e 53 65 6c 65 63 74 28 29 20  ..$ws3.Select() 
82d0: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 24 72 61 6e  | Out-Null..$ran
82e0: 67 65 20 3d 20 24 78 6c 2e 72 61 6e 67 65 28 22  ge = $xl.range("
82f0: 41 31 3a 42 31 30 22 29 0d 0a 24 72 61 6e 67 65  A1:B10")..$range
8300: 2e 53 75 62 74 6f 74 61 6c 28 31 2c 2d 34 31 35  .Subtotal(1,-415
8310: 37 2c 28 32 29 2c 24 74 72 75 65 2c 24 46 61 6c  7,(2),$true,$Fal
8320: 73 65 2c 24 74 72 75 65 29 0d 0a 24 77 73 33 2e  se,$true)..$ws3.
8330: 4f 75 74 6c 69 6e 65 2e 53 68 6f 77 4c 65 76 65  Outline.ShowLeve
8340: 6c 73 28 32 29 0d 0a 5b 76 6f 69 64 5d 24 77 73  ls(2)..[void]$ws
8350: 31 2e 63 65 6c 6c 73 2e 65 6e 74 69 72 65 43 6f  1.cells.entireCo
8360: 6c 75 6d 6e 2e 41 75 74 6f 66 69 74 28 29 0d 0a  lumn.Autofit()..
8370: 24 77 73 33 2e 52 61 6e 67 65 28 22 41 31 22 29  $ws3.Range("A1")
8380: 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d  .Select() | Out-
8390: 4e 75 6c 6c 20 0d 0a 24 77 73 34 2e 53 65 6c 65  Null ..$ws4.Sele
83a0: 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ct() | Out-Null.
83b0: 0a 24 72 61 6e 67 65 20 3d 20 24 78 6c 2e 72 61  .$range = $xl.ra
83c0: 6e 67 65 28 22 41 31 3a 42 31 30 22 29 0d 0a 24  nge("A1:B10")..$
83d0: 72 61 6e 67 65 2e 53 75 62 74 6f 74 61 6c 28 31  range.Subtotal(1
83e0: 2c 2d 34 31 35 37 2c 28 32 29 2c 24 74 72 75 65  ,-4157,(2),$true
83f0: 2c 24 46 61 6c 73 65 2c 24 74 72 75 65 29 0d 0a  ,$False,$true)..
8400: 24 77 73 34 2e 4f 75 74 6c 69 6e 65 2e 53 68 6f  $ws4.Outline.Sho
8410: 77 4c 65 76 65 6c 73 28 33 29 20 0d 0a 24 77 73  wLevels(3) ..$ws
8420: 31 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74  1.Select() | Out
8430: 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69 64 5d 24 77 73  -Null..[void]$ws
8440: 31 2e 63 65 6c 6c 73 2e 65 6e 74 69 72 65 43 6f  1.cells.entireCo
8450: 6c 75 6d 6e 2e 41 75 74 6f 66 69 74 28 29 0d 0a  lumn.Autofit()..
8460: 24 77 73 31 2e 52 61 6e 67 65 28 22 41 31 22 29  $ws1.Range("A1")
8470: 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d  .Select() | Out-
8480: 4e 75 6c 6c 0d 0a 7d 20 23 20 45 6e 64 20 46 75  Null..} # End Fu
8490: 6e 63 74 69 6f 6e 0d 0a 0d 0a 23 2d 2d 2d 2d 2d  nction....#-----
84a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
84b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
84c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
84d0: 23 0d 0a 23 48 6f 77 20 64 6f 20 49 20 73 65 74  #..#How do I set
84e0: 20 75 70 20 41 75 74 6f 20 46 69 6c 74 65 72 73   up Auto Filters
84f0: 20 69 6e 20 45 78 63 65 6c 3f 0d 0a 23 54 68 69   in Excel?..#Thi
8500: 73 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 73 20  s function sets 
8510: 75 70 20 61 20 73 70 72 65 61 64 73 68 65 65 74  up a spreadsheet
8520: 20 61 6e 64 20 74 68 65 6e 20 73 65 74 73 20 41   and then sets A
8530: 75 74 6f 20 66 69 6c 74 65 72 73 20 0d 0a 20 0d  uto filters .. .
8540: 0a 46 75 6e 63 74 69 6f 6e 20 58 4c 41 75 74 6f  .Function XLAuto
8550: 46 69 6c 74 65 72 20 7b 0d 0a 24 78 6c 54 6f 70  Filter {..$xlTop
8560: 31 30 49 74 65 6d 73 20 3d 20 33 0d 0a 24 78 6c  10Items = 3..$xl
8570: 54 6f 70 31 30 50 65 72 63 65 6e 74 20 3d 20 35  Top10Percent = 5
8580: 0d 0a 24 78 6c 42 6f 74 74 6f 6d 31 30 50 65 72  ..$xlBottom10Per
8590: 63 65 6e 74 20 3d 20 36 0d 0a 24 78 6c 42 6f 74  cent = 6..$xlBot
85a0: 74 6f 6d 31 30 49 74 65 6d 73 20 3d 20 34 0d 0a  tom10Items = 4..
85b0: 24 78 6c 41 6e 64 20 3d 20 31 0d 0a 24 78 6c 4f  $xlAnd = 1..$xlO
85c0: 72 20 3d 20 32 0d 0a 24 78 6c 4e 6f 72 6d 61 6c  r = 2..$xlNormal
85d0: 20 3d 20 2d 34 31 34 33 0d 0a 24 78 6c 50 61 73   = -4143..$xlPas
85e0: 74 65 56 61 6c 75 65 73 20 3d 20 2d 34 31 36 33  teValues = -4163
85f0: 20 20 20 20 20 20 20 20 20 20 23 20 56 61 6c 75            # Valu
8600: 65 73 20 6f 6e 6c 79 2c 20 6e 6f 74 20 66 6f 72  es only, not for
8610: 6d 75 6c 61 73 0d 0a 24 78 6c 43 65 6c 6c 54 79  mulas..$xlCellTy
8620: 70 65 4c 61 73 74 43 65 6c 6c 20 3d 20 31 31 20  peLastCell = 11 
8630: 20 20 20 20 20 20 20 23 20 74 6f 20 66 69 6e 64         # to find
8640: 20 6c 61 73 74 20 75 73 65 64 20 63 65 6c 6c 20   last used cell 
8650: 0d 0a 24 78 6c 20 3d 20 4e 65 77 2d 4f 62 6a 65  ..$xl = New-Obje
8660: 63 74 20 2d 63 6f 6d 6f 62 6a 65 63 74 20 45 78  ct -comobject Ex
8670: 63 65 6c 2e 41 70 70 6c 69 63 61 74 69 6f 6e 0d  cel.Application.
8680: 0a 24 78 6c 2e 56 69 73 69 62 6c 65 20 3d 20 24  .$xl.Visible = $
8690: 74 72 75 65 0d 0a 24 78 6c 2e 44 69 73 70 6c 61  true..$xl.Displa
86a0: 79 41 6c 65 72 74 73 20 3d 20 24 46 61 6c 73 65  yAlerts = $False
86b0: 0d 0a 24 77 62 20 3d 20 24 78 6c 2e 57 6f 72 6b  ..$wb = $xl.Work
86c0: 62 6f 6f 6b 73 2e 41 64 64 28 29 0d 0a 24 77 73  books.Add()..$ws
86d0: 20 3d 20 24 77 62 2e 57 6f 72 6b 73 68 65 65 74   = $wb.Worksheet
86e0: 73 2e 49 74 65 6d 28 31 29 0d 0a 24 77 73 20 3d  s.Item(1)..$ws =
86f0: 20 24 77 62 2e 53 68 65 65 74 73 2e 41 64 64 28   $wb.Sheets.Add(
8700: 29 0d 0a 24 77 73 20 3d 20 24 77 62 2e 53 68 65  )..$ws = $wb.She
8710: 65 74 73 2e 41 64 64 28 29 20 0d 0a 24 77 73 31  ets.Add() ..$ws1
8720: 20 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74   = $wb.worksheet
8730: 73 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61  s | where {$_.na
8740: 6d 65 20 2d 65 71 20 22 53 68 65 65 74 31 22 7d  me -eq "Sheet1"}
8750: 20 20 20 20 20 20 20 20 23 3c 2d 2d 2d 2d 2d 2d          #<------
8760: 2d 20 53 65 6c 65 63 74 73 20 73 68 65 65 74 20  - Selects sheet 
8770: 31 0d 0a 24 77 73 32 20 3d 20 24 77 62 2e 77 6f  1..$ws2 = $wb.wo
8780: 72 6b 73 68 65 65 74 73 20 7c 20 77 68 65 72 65  rksheets | where
8790: 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65 71 20 22 53   {$_.name -eq "S
87a0: 68 65 65 74 32 22 7d 20 20 20 20 20 20 20 20 20  heet2"}         
87b0: 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63 74  #<------- Select
87c0: 73 20 73 68 65 65 74 20 32 0d 0a 24 77 73 33 20  s sheet 2..$ws3 
87d0: 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74 73  = $wb.worksheets
87e0: 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61 6d   | where {$_.nam
87f0: 65 20 2d 65 71 20 22 53 68 65 65 74 33 22 7d 20  e -eq "Sheet3"} 
8800: 20 20 20 20 20 20 20 20 23 3c 2d 2d 2d 2d 2d 2d          #<------
8810: 2d 20 53 65 6c 65 63 74 73 20 73 68 65 65 74 20  - Selects sheet 
8820: 33 0d 0a 24 77 73 34 20 3d 20 24 77 62 2e 77 6f  3..$ws4 = $wb.wo
8830: 72 6b 73 68 65 65 74 73 20 7c 20 77 68 65 72 65  rksheets | where
8840: 20 7b 24 5f 2e 6e 61 6d 65 20 2d 65 71 20 22 53   {$_.name -eq "S
8850: 68 65 65 74 34 22 7d 20 20 20 20 20 20 20 20 20  heet4"}         
8860: 23 3c 2d 2d 2d 2d 2d 2d 2d 20 53 65 6c 65 63 74  #<------- Select
8870: 73 20 73 68 65 65 74 20 34 0d 0a 24 77 73 35 20  s sheet 4..$ws5 
8880: 3d 20 24 77 62 2e 77 6f 72 6b 73 68 65 65 74 73  = $wb.worksheets
8890: 20 7c 20 77 68 65 72 65 20 7b 24 5f 2e 6e 61 6d   | where {$_.nam
88a0: 65 20 2d 65 71 20 22 53 68 65 65 74 35 22 7d 20  e -eq "Sheet5"} 
88b0: 20 20 20 20 20 20 20 23 3c 2d 2d 2d 2d 2d 2d 2d         #<-------
88c0: 20 53 65 6c 65 63 74 73 20 73 68 65 65 74 20 35   Selects sheet 5
88d0: 20 0d 0a 24 77 73 31 2e 54 61 62 2e 43 6f 6c 6f   ..$ws1.Tab.Colo
88e0: 72 49 6e 64 65 78 20 3d 20 38 0d 0a 24 77 73 32  rIndex = 8..$ws2
88f0: 2e 54 61 62 2e 43 6f 6c 6f 72 49 6e 64 65 78 20  .Tab.ColorIndex 
8900: 3d 20 37 0d 0a 24 77 73 33 2e 54 61 62 2e 43 6f  = 7..$ws3.Tab.Co
8910: 6c 6f 72 49 6e 64 65 78 20 3d 20 36 0d 0a 24 77  lorIndex = 6..$w
8920: 73 34 2e 54 61 62 2e 43 6f 6c 6f 72 49 6e 64 65  s4.Tab.ColorInde
8930: 78 20 3d 20 35 0d 0a 24 77 73 35 2e 54 61 62 2e  x = 5..$ws5.Tab.
8940: 43 6f 6c 6f 72 49 6e 64 65 78 20 3d 20 34 20 0d  ColorIndex = 4 .
8950: 0a 24 77 73 31 2e 6e 61 6d 65 20 3d 20 22 44 65  .$ws1.name = "De
8960: 74 61 69 6c 22 0d 0a 24 77 73 32 2e 6e 61 6d 65  tail"..$ws2.name
8970: 20 3d 20 22 4a 61 63 6b 4f 6e 6c 79 22 0d 0a 24   = "JackOnly"..$
8980: 77 73 33 2e 6e 61 6d 65 20 3d 20 22 54 6f 70 32  ws3.name = "Top2
8990: 22 0d 0a 24 77 73 34 2e 6e 61 6d 65 20 3d 20 22  "..$ws4.name = "
89a0: 4c 6f 77 65 73 74 48 69 67 68 65 73 74 22 0d 0a  LowestHighest"..
89b0: 24 77 73 35 2e 6e 61 6d 65 20 3d 20 22 54 6f 70  $ws5.name = "Top
89c0: 32 35 50 65 72 63 65 6e 74 22 20 0d 0a 24 77 73  25Percent" ..$ws
89d0: 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 2c 31  1.cells.Item(1,1
89e0: 29 20 3d 20 20 22 41 6d 6f 75 6e 74 22 0d 0a 24  ) =  "Amount"..$
89f0: 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31  ws1.cells.Item(1
8a00: 2c 32 29 20 3d 20 20 22 53 61 6c 65 73 50 65 72  ,2) =  "SalesPer
8a10: 73 6f 6e 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73  son"..$ws1.cells
8a20: 2e 49 74 65 6d 28 32 2c 31 29 20 3d 20 31 0d 0a  .Item(2,1) = 1..
8a30: 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28  $ws1.cells.Item(
8a40: 32 2c 32 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24  2,2) = "Jack"..$
8a50: 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 33  ws1.cells.Item(3
8a60: 2c 31 29 20 3d 20 32 0d 0a 24 77 73 31 2e 63 65  ,1) = 2..$ws1.ce
8a70: 6c 6c 73 2e 49 74 65 6d 28 33 2c 32 29 20 3d 20  lls.Item(3,2) = 
8a80: 22 45 6c 69 7a 61 62 65 74 68 22 0d 0a 24 77 73  "Elizabeth"..$ws
8a90: 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 34 2c 31  1.cells.Item(4,1
8aa0: 29 20 3d 20 33 0d 0a 24 77 73 31 2e 63 65 6c 6c  ) = 3..$ws1.cell
8ab0: 73 2e 49 74 65 6d 28 34 2c 32 29 20 3d 20 22 52  s.Item(4,2) = "R
8ac0: 65 6e 65 65 22 0d 0a 24 77 73 31 2e 63 65 6c 6c  enee"..$ws1.cell
8ad0: 73 2e 49 74 65 6d 28 35 2c 31 29 20 3d 20 34 0d  s.Item(5,1) = 4.
8ae0: 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d  .$ws1.cells.Item
8af0: 28 35 2c 32 29 20 3d 20 22 45 6c 69 7a 61 62 65  (5,2) = "Elizabe
8b00: 74 68 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e  th"..$ws1.cells.
8b10: 49 74 65 6d 28 36 2c 31 29 20 3d 20 35 0d 0a 24  Item(6,1) = 5..$
8b20: 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 36  ws1.cells.Item(6
8b30: 2c 32 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24 77  ,2) = "Jack"..$w
8b40: 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 37 2c  s1.cells.Item(7,
8b50: 31 29 20 3d 20 36 0d 0a 24 77 73 31 2e 63 65 6c  1) = 6..$ws1.cel
8b60: 6c 73 2e 49 74 65 6d 28 37 2c 32 29 20 3d 20 22  ls.Item(7,2) = "
8b70: 52 65 6e 65 65 22 0d 0a 24 77 73 31 2e 63 65 6c  Renee"..$ws1.cel
8b80: 6c 73 2e 49 74 65 6d 28 38 2c 31 29 20 3d 20 37  ls.Item(8,1) = 7
8b90: 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65  ..$ws1.cells.Ite
8ba0: 6d 28 38 2c 32 29 20 3d 20 22 45 6c 69 7a 61 62  m(8,2) = "Elizab
8bb0: 65 74 68 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73  eth"..$ws1.cells
8bc0: 2e 49 74 65 6d 28 39 2c 31 29 20 3d 20 38 0d 0a  .Item(9,1) = 8..
8bd0: 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28  $ws1.cells.Item(
8be0: 39 2c 32 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24  9,2) = "Jack"..$
8bf0: 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31  ws1.cells.Item(1
8c00: 30 2c 31 29 20 3d 20 39 0d 0a 24 77 73 31 2e 63  0,1) = 9..$ws1.c
8c10: 65 6c 6c 73 2e 49 74 65 6d 28 31 30 2c 32 29 20  ells.Item(10,2) 
8c20: 3d 20 22 52 65 6e 65 65 22 0d 0a 24 77 73 31 2e  = "Renee"..$ws1.
8c30: 63 65 6c 6c 73 2e 49 74 65 6d 28 31 31 2c 31 29  cells.Item(11,1)
8c40: 20 3d 20 31 30 0d 0a 24 77 73 31 2e 63 65 6c 6c   = 10..$ws1.cell
8c50: 73 2e 49 74 65 6d 28 31 31 2c 32 29 20 3d 20 22  s.Item(11,2) = "
8c60: 4a 61 63 6b 22 0d 0a 24 77 73 31 2e 63 65 6c 6c  Jack"..$ws1.cell
8c70: 73 2e 49 74 65 6d 28 31 32 2c 31 29 20 3d 20 31  s.Item(12,1) = 1
8c80: 31 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74  1..$ws1.cells.It
8c90: 65 6d 28 31 32 2c 32 29 20 3d 20 22 4a 61 63 6b  em(12,2) = "Jack
8ca0: 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74  "..$ws1.cells.It
8cb0: 65 6d 28 31 33 2c 31 29 20 3d 20 31 32 0d 0a 24  em(13,1) = 12..$
8cc0: 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31  ws1.cells.Item(1
8cd0: 33 2c 32 29 20 3d 20 22 45 6c 69 7a 61 62 65 74  3,2) = "Elizabet
8ce0: 68 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49  h"..$ws1.cells.I
8cf0: 74 65 6d 28 31 34 2c 31 29 20 3d 20 31 33 0d 0a  tem(14,1) = 13..
8d00: 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28  $ws1.cells.Item(
8d10: 31 34 2c 32 29 20 3d 20 22 52 65 6e 65 65 22 0d  14,2) = "Renee".
8d20: 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d  .$ws1.cells.Item
8d30: 28 31 35 2c 31 29 20 3d 20 31 34 0d 0a 24 77 73  (15,1) = 14..$ws
8d40: 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 35 2c  1.cells.Item(15,
8d50: 32 29 20 3d 20 22 45 6c 69 7a 61 62 65 74 68 22  2) = "Elizabeth"
8d60: 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65  ..$ws1.cells.Ite
8d70: 6d 28 31 36 2c 31 29 20 3d 20 31 35 0d 0a 24 77  m(16,1) = 15..$w
8d80: 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 36  s1.cells.Item(16
8d90: 2c 32 29 20 3d 20 22 4a 61 63 6b 22 0d 0a 24 77  ,2) = "Jack"..$w
8da0: 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 37  s1.cells.Item(17
8db0: 2c 31 29 20 3d 20 31 36 0d 0a 24 77 73 31 2e 63  ,1) = 16..$ws1.c
8dc0: 65 6c 6c 73 2e 49 74 65 6d 28 31 37 2c 32 29 20  ells.Item(17,2) 
8dd0: 3d 20 22 52 65 6e 65 65 22 0d 0a 24 77 73 31 2e  = "Renee"..$ws1.
8de0: 63 65 6c 6c 73 2e 49 74 65 6d 28 31 38 2c 31 29  cells.Item(18,1)
8df0: 20 3d 20 31 37 0d 0a 24 77 73 31 2e 63 65 6c 6c   = 17..$ws1.cell
8e00: 73 2e 49 74 65 6d 28 31 38 2c 32 29 20 3d 20 22  s.Item(18,2) = "
8e10: 45 6c 69 7a 61 62 65 74 68 22 0d 0a 24 77 73 31  Elizabeth"..$ws1
8e20: 2e 63 65 6c 6c 73 2e 49 74 65 6d 28 31 39 2c 31  .cells.Item(19,1
8e30: 29 20 3d 20 31 38 0d 0a 24 77 73 31 2e 63 65 6c  ) = 18..$ws1.cel
8e40: 6c 73 2e 49 74 65 6d 28 31 39 2c 32 29 20 3d 20  ls.Item(19,2) = 
8e50: 22 4a 61 63 6b 22 0d 0a 24 77 73 31 2e 63 65 6c  "Jack"..$ws1.cel
8e60: 6c 73 2e 49 74 65 6d 28 32 30 2c 31 29 20 3d 20  ls.Item(20,1) = 
8e70: 31 39 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49  19..$ws1.cells.I
8e80: 74 65 6d 28 32 30 2c 32 29 20 3d 20 22 52 65 6e  tem(20,2) = "Ren
8e90: 65 65 22 0d 0a 24 77 73 31 2e 63 65 6c 6c 73 2e  ee"..$ws1.cells.
8ea0: 49 74 65 6d 28 32 31 2c 31 29 20 3d 20 32 30 0d  Item(21,1) = 20.
8eb0: 0a 24 77 73 31 2e 63 65 6c 6c 73 2e 49 74 65 6d  .$ws1.cells.Item
8ec0: 28 32 31 2c 32 29 20 3d 20 22 52 65 6e 65 65 22  (21,2) = "Renee"
8ed0: 20 0d 0a 24 75 73 65 64 20 3d 20 24 77 73 31 2e   ..$used = $ws1.
8ee0: 75 73 65 64 52 61 6e 67 65 0d 0a 24 6c 61 73 74  usedRange..$last
8ef0: 43 65 6c 6c 20 3d 20 24 75 73 65 64 2e 53 70 65  Cell = $used.Spe
8f00: 63 69 61 6c 43 65 6c 6c 73 28 24 78 6c 43 65 6c  cialCells($xlCel
8f10: 6c 54 79 70 65 4c 61 73 74 43 65 6c 6c 29 0d 0a  lTypeLastCell)..
8f20: 24 6c 61 73 74 72 6f 77 20 3d 20 24 6c 61 73 74  $lastrow = $last
8f30: 43 65 6c 6c 2e 72 6f 77 20 0d 0a 24 72 20 3d 20  Cell.row ..$r = 
8f40: 24 77 73 31 2e 52 61 6e 67 65 28 22 41 31 3a 42  $ws1.Range("A1:B
8f50: 24 6c 61 73 74 72 6f 77 22 29 0d 0a 24 77 73 31  $lastrow")..$ws1
8f60: 2e 52 61 6e 67 65 28 22 41 31 3a 42 24 6c 61 73  .Range("A1:B$las
8f70: 74 72 6f 77 22 29 2e 43 6f 70 79 28 29 20 0d 0a  trow").Copy() ..
8f80: 24 77 73 32 2e 53 65 6c 65 63 74 28 29 20 7c 20  $ws2.Select() | 
8f90: 4f 75 74 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69 64 5d  Out-Null..[void]
8fa0: 24 77 73 32 2e 52 61 6e 67 65 28 22 41 31 22 29  $ws2.Range("A1")
8fb0: 2e 50 61 73 74 65 53 70 65 63 69 61 6c 28 2d 34  .PasteSpecial(-4
8fc0: 31 36 33 29 0d 0a 24 77 73 33 2e 53 65 6c 65 63  163)..$ws3.Selec
8fd0: 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t() | Out-Null..
8fe0: 5b 76 6f 69 64 5d 24 77 73 33 2e 52 61 6e 67 65  [void]$ws3.Range
8ff0: 28 22 41 31 22 29 2e 50 61 73 74 65 53 70 65 63  ("A1").PasteSpec
9000: 69 61 6c 28 2d 34 31 36 33 29 0d 0a 24 77 73 34  ial(-4163)..$ws4
9010: 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d  .Select() | Out-
9020: 4e 75 6c 6c 0d 0a 5b 76 6f 69 64 5d 24 77 73 34  Null..[void]$ws4
9030: 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 50 61 73  .Range("A1").Pas
9040: 74 65 53 70 65 63 69 61 6c 28 2d 34 31 36 33 29  teSpecial(-4163)
9050: 0d 0a 24 77 73 35 2e 53 65 6c 65 63 74 28 29 20  ..$ws5.Select() 
9060: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 5b 76 6f 69  | Out-Null..[voi
9070: 64 5d 24 77 73 35 2e 52 61 6e 67 65 28 22 41 31  d]$ws5.Range("A1
9080: 22 29 2e 50 61 73 74 65 53 70 65 63 69 61 6c 28  ").PasteSpecial(
9090: 2d 34 31 36 33 29 0d 0a 23 0d 0a 24 77 73 35 2e  -4163)..#..$ws5.
90a0: 52 61 6e 67 65 28 22 41 31 22 29 2e 53 65 6c 65  Range("A1").Sele
90b0: 63 74 28 29 0d 0a 23 20 41 75 74 6f 46 69 6c 74  ct()..# AutoFilt
90c0: 65 72 20 73 74 72 75 63 74 75 72 65 20 2d 20 46  er structure - F
90d0: 69 65 6c 64 2c 20 43 72 69 74 65 72 69 61 2c 20  ield, Criteria, 
90e0: 4f 70 65 72 61 74 6f 72 0d 0a 23 24 78 6c 2e 53  Operator..#$xl.S
90f0: 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46 69 6c  election.AutoFil
9100: 74 65 72 20 31 2c 20 22 31 30 22 2c 20 24 78 6c  ter 1, "10", $xl
9110: 54 6f 70 31 30 49 74 65 6d 73 20 20 20 20 20 20  Top10Items      
9120: 20 20 23 74 6f 70 20 31 30 0d 0a 24 78 6c 2e 52    #top 10..$xl.R
9130: 61 6e 67 65 28 22 41 31 22 29 2e 53 65 6c 65 63  ange("A1").Selec
9140: 74 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t() | Out-Null..
9150: 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75  $xl.Selection.Au
9160: 74 6f 46 69 6c 74 65 72 28 31 2c 20 22 32 22 2c  toFilter(1, "2",
9170: 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73 29 20   $xlTop10Items) 
9180: 20 20 20 20 20 20 20 20 20 20 20 23 74 6f 70 20             #top 
9190: 32 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f  2..#$xl.Selectio
91a0: 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20  n.AutoFilter 1, 
91b0: 22 31 30 22 2c 20 24 78 6c 54 6f 70 31 30 50 65  "10", $xlTop10Pe
91c0: 72 63 65 6e 74 20 20 20 20 20 20 20 20 23 74 6f  rcent        #to
91d0: 70 20 31 30 20 70 65 72 63 65 6e 74 0d 0a 23 24  p 10 percent..#$
91e0: 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74  xl.Selection.Aut
91f0: 6f 46 69 6c 74 65 72 20 31 2c 20 22 32 35 22 2c  oFilter 1, "25",
9200: 20 24 24 78 6c 54 6f 70 31 30 50 65 72 63 65 6e   $$xlTop10Percen
9210: 74 20 20 20 20 20 20 20 20 23 74 6f 70 20 32 35  t        #top 25
9220: 20 70 65 72 63 65 6e 74 0d 0a 23 24 78 6c 2e 53   percent..#$xl.S
9230: 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46 69 6c  election.AutoFil
9240: 74 65 72 20 31 2c 20 22 35 22 2c 20 24 78 6c 42  ter 1, "5", $xlB
9250: 6f 74 74 6f 6d 31 30 49 74 65 6d 73 20 20 20 20  ottom10Items    
9260: 20 20 20 20 23 4c 6f 77 65 73 74 20 35 20 49 74      #Lowest 5 It
9270: 65 6d 73 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74  ems..#$xl.Select
9280: 69 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31  ion.AutoFilter 1
9290: 2c 20 22 31 30 22 2c 20 24 24 78 6c 42 6f 74 74  , "10", $$xlBott
92a0: 6f 6d 31 30 50 65 72 63 65 6e 74 20 20 20 20 23  om10Percent    #
92b0: 42 6f 74 74 6f 6d 20 31 30 20 70 65 72 63 65 6e  Bottom 10 percen
92c0: 74 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f  t..#$xl.Selectio
92d0: 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20  n.AutoFilter 1, 
92e0: 22 3e 31 35 22 20 20 20 20 20 20 20 20 20 20 20  ">15"           
92f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 73 69               #si
9300: 7a 65 20 67 72 65 61 74 65 72 20 31 35 0d 0a 23  ze greater 15..#
9310: 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75  $xl.Selection.Au
9320: 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 3e 31 39  toFilter 1, ">19
9330: 22 2c 58 4c 4f 72 20 2c 20 22 3c 32 22 20 20 20  ",XLOr , "<2"   
9340: 20 20 20 20 20 20 20 20 20 23 4c 6f 77 65 73 74           #Lowest
9350: 20 61 6e 64 20 48 69 67 68 65 73 74 0d 0a 23 24   and Highest..#$
9360: 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74  xl.Selection.Aut
9370: 6f 46 69 6c 74 65 72 20 32 2c 20 22 4a 61 63 6b  oFilter 2, "Jack
9380: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  "               
9390: 20 20 20 20 20 20 20 20 20 23 4a 61 63 6b 20 69           #Jack i
93a0: 74 65 6d 73 20 6f 6e 6c 79 0d 0a 24 77 73 35 2e  tems only..$ws5.
93b0: 63 65 6c 6c 73 2e 49 74 65 6d 2e 45 6e 74 69 72  cells.Item.Entir
93c0: 65 43 6f 6c 75 6d 6e 2e 41 75 74 6f 46 69 74 20  eColumn.AutoFit 
93d0: 0d 0a 24 77 73 32 2e 53 65 6c 65 63 74 28 29 0d  ..$ws2.Select().
93e0: 0a 24 77 73 32 2e 52 61 6e 67 65 28 22 41 31 22  .$ws2.Range("A1"
93f0: 29 2e 53 65 6c 65 63 74 28 29 0d 0a 23 20 41 75  ).Select()..# Au
9400: 74 6f 46 69 6c 74 65 72 20 73 74 72 75 63 74 75  toFilter structu
9410: 72 65 20 2d 20 46 69 65 6c 64 2c 20 43 72 69 74  re - Field, Crit
9420: 65 72 69 61 2c 20 4f 70 65 72 61 74 6f 72 0d 0a  eria, Operator..
9430: 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41  #$xl.Selection.A
9440: 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 31 30  utoFilter 1, "10
9450: 22 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73  ", $xlTop10Items
9460: 20 20 20 20 20 20 20 20 23 74 6f 70 20 31 30 0d          #top 10.
9470: 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e  .#$xl.Selection.
9480: 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 32  AutoFilter 1, "2
9490: 22 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73  ", $xlTop10Items
94a0: 20 20 20 20 20 20 20 20 20 20 20 20 23 74 6f 70              #top
94b0: 20 32 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69   2..#$xl.Selecti
94c0: 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c  on.AutoFilter 1,
94d0: 20 22 31 30 22 2c 20 24 78 6c 54 6f 70 31 30 50   "10", $xlTop10P
94e0: 65 72 63 65 6e 74 20 20 20 20 20 20 20 20 23 74  ercent        #t
94f0: 6f 70 20 31 30 20 70 65 72 63 65 6e 74 0d 0a 23  op 10 percent..#
9500: 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75  $xl.Selection.Au
9510: 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 32 35 22  toFilter 1, "25"
9520: 2c 20 24 78 6c 54 6f 70 31 30 50 65 72 63 65 6e  , $xlTop10Percen
9530: 74 20 20 20 20 20 20 20 20 23 74 6f 70 20 32 35  t        #top 25
9540: 20 70 65 72 63 65 6e 74 0d 0a 23 24 78 6c 2e 53   percent..#$xl.S
9550: 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46 69 6c  election.AutoFil
9560: 74 65 72 20 31 2c 20 22 35 22 2c 20 24 78 6c 42  ter 1, "5", $xlB
9570: 6f 74 74 6f 6d 31 30 49 74 65 6d 73 20 20 20 20  ottom10Items    
9580: 20 20 20 20 23 4c 6f 77 65 73 74 20 35 20 49 74      #Lowest 5 It
9590: 65 6d 73 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74  ems..#$xl.Select
95a0: 69 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31  ion.AutoFilter 1
95b0: 2c 20 22 31 30 22 2c 20 24 78 6c 42 6f 74 74 6f  , "10", $xlBotto
95c0: 6d 31 30 50 65 72 63 65 6e 74 20 20 20 20 23 42  m10Percent    #B
95d0: 6f 74 74 6f 6d 20 31 30 20 70 65 72 63 65 6e 74  ottom 10 percent
95e0: 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e  ..#$xl.Selection
95f0: 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22  .AutoFilter 1, "
9600: 3e 31 35 22 20 20 20 20 20 20 20 20 20 20 20 20  >15"            
9610: 20 20 20 20 20 20 20 20 20 20 20 20 23 73 69 7a              #siz
9620: 65 20 67 72 65 61 74 65 72 20 31 35 0d 0a 23 24  e greater 15..#$
9630: 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74  xl.Selection.Aut
9640: 6f 46 69 6c 74 65 72 20 31 2c 20 22 3e 31 39 22  oFilter 1, ">19"
9650: 2c 58 4c 4f 72 20 2c 20 22 3c 32 22 20 20 20 20  ,XLOr , "<2"    
9660: 20 20 20 20 20 20 20 20 23 4c 6f 77 65 73 74 20          #Lowest 
9670: 61 6e 64 20 48 69 67 68 65 73 74 0d 0a 24 78 6c  and Highest..$xl
9680: 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46  .Selection.AutoF
9690: 69 6c 74 65 72 28 32 2c 20 22 4a 61 63 6b 22 29  ilter(2, "Jack")
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96b0: 20 20 20 20 20 20 20 20 23 4a 61 63 6b 20 69 74          #Jack it
96c0: 65 6d 73 20 6f 6e 6c 79 0d 0a 24 77 73 32 2e 63  ems only..$ws2.c
96d0: 65 6c 6c 73 2e 49 74 65 6d 2e 45 6e 74 69 72 65  ells.Item.Entire
96e0: 43 6f 6c 75 6d 6e 2e 41 75 74 6f 46 69 74 20 0d  Column.AutoFit .
96f0: 0a 24 77 73 34 2e 53 65 6c 65 63 74 28 29 0d 0a  .$ws4.Select()..
9700: 24 77 73 34 2e 52 61 6e 67 65 28 22 41 31 22 29  $ws4.Range("A1")
9710: 2e 53 65 6c 65 63 74 28 29 0d 0a 23 20 41 75 74  .Select()..# Aut
9720: 6f 46 69 6c 74 65 72 20 73 74 72 75 63 74 75 72  oFilter structur
9730: 65 20 2d 20 46 69 65 6c 64 2c 20 43 72 69 74 65  e - Field, Crite
9740: 72 69 61 2c 20 4f 70 65 72 61 74 6f 72 0d 0a 23  ria, Operator..#
9750: 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75  $xl.Selection.Au
9760: 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 31 30 22  toFilter 1, "10"
9770: 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73 20  , $xlTop10Items 
9780: 20 20 20 20 20 20 20 23 74 6f 70 20 31 30 0d 0a         #top 10..
9790: 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41  #$xl.Selection.A
97a0: 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 32 22  utoFilter 1, "2"
97b0: 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73 20  , $xlTop10Items 
97c0: 20 20 20 20 20 20 20 20 20 20 20 23 74 6f 70 20             #top 
97d0: 32 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f  2..#$xl.Selectio
97e0: 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20  n.AutoFilter 1, 
97f0: 22 31 30 22 2c 20 24 78 6c 54 6f 70 31 30 50 65  "10", $xlTop10Pe
9800: 72 63 65 6e 74 20 20 20 20 20 20 20 20 23 74 6f  rcent        #to
9810: 70 20 31 30 20 70 65 72 63 65 6e 74 0d 0a 23 24  p 10 percent..#$
9820: 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74  xl.Selection.Aut
9830: 6f 46 69 6c 74 65 72 20 31 2c 20 22 32 35 22 2c  oFilter 1, "25",
9840: 20 24 78 6c 54 6f 70 31 30 50 65 72 63 65 6e 74   $xlTop10Percent
9850: 20 20 20 20 20 20 20 20 23 74 6f 70 20 32 35 20          #top 25 
9860: 70 65 72 63 65 6e 74 0d 0a 23 24 78 6c 2e 53 65  percent..#$xl.Se
9870: 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46 69 6c 74  lection.AutoFilt
9880: 65 72 20 31 2c 20 22 35 22 2c 20 24 78 6c 42 6f  er 1, "5", $xlBo
9890: 74 74 6f 6d 31 30 49 74 65 6d 73 20 20 20 20 20  ttom10Items     
98a0: 20 20 20 23 4c 6f 77 65 73 74 20 35 20 49 74 65     #Lowest 5 Ite
98b0: 6d 73 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69  ms..#$xl.Selecti
98c0: 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c  on.AutoFilter 1,
98d0: 20 22 31 30 22 2c 20 24 78 6c 42 6f 74 74 6f 6d   "10", $xlBottom
98e0: 31 30 50 65 72 63 65 6e 74 20 20 20 20 23 42 6f  10Percent    #Bo
98f0: 74 74 6f 6d 20 31 30 20 70 65 72 63 65 6e 74 0d  ttom 10 percent.
9900: 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e  .#$xl.Selection.
9910: 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 3e  AutoFilter 1, ">
9920: 31 35 22 20 20 20 20 20 20 20 20 20 20 20 20 20  15"             
9930: 20 20 20 20 20 20 20 20 20 20 20 23 73 69 7a 65             #size
9940: 20 67 72 65 61 74 65 72 20 31 35 0d 0a 24 78 6c   greater 15..$xl
9950: 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f 46  .Selection.AutoF
9960: 69 6c 74 65 72 28 31 2c 20 22 3e 31 39 22 2c 24  ilter(1, ">19",$
9970: 78 6c 4f 72 20 2c 20 22 3c 32 22 29 20 20 20 20  xlOr , "<2")    
9980: 20 20 20 20 20 20 20 20 23 4c 6f 77 65 73 74 20          #Lowest 
9990: 61 6e 64 20 48 69 67 68 65 73 74 0d 0a 23 24 78  and Highest..#$x
99a0: 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f  l.Selection.Auto
99b0: 46 69 6c 74 65 72 20 32 2c 20 22 4a 61 63 6b 22  Filter 2, "Jack"
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99d0: 20 20 20 20 20 20 20 20 23 4a 61 63 6b 20 69 74          #Jack it
99e0: 65 6d 73 20 6f 6e 6c 79 0d 0a 24 77 73 34 2e 63  ems only..$ws4.c
99f0: 65 6c 6c 73 2e 49 74 65 6d 2e 45 6e 74 69 72 65  ells.Item.Entire
9a00: 43 6f 6c 75 6d 6e 2e 41 75 74 6f 46 69 74 0d 0a  Column.AutoFit..
9a10: 23 20 22 54 6f 70 32 35 50 65 72 63 65 6e 74 22  # "Top25Percent"
9a20: 0d 0a 24 77 73 35 2e 53 65 6c 65 63 74 28 29 0d  ..$ws5.Select().
9a30: 0a 24 77 73 35 2e 52 61 6e 67 65 28 22 41 31 22  .$ws5.Range("A1"
9a40: 29 2e 53 65 6c 65 63 74 28 29 0d 0a 23 20 41 75  ).Select()..# Au
9a50: 74 6f 46 69 6c 74 65 72 20 73 74 72 75 63 74 75  toFilter structu
9a60: 72 65 20 2d 20 46 69 65 6c 64 2c 20 43 72 69 74  re - Field, Crit
9a70: 65 72 69 61 2c 20 4f 70 65 72 61 74 6f 72 0d 0a  eria, Operator..
9a80: 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41  #$xl.Selection.A
9a90: 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 31 30  utoFilter 1, "10
9aa0: 22 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73  ", $xlTop10Items
9ab0: 20 20 20 20 20 20 20 20 23 74 6f 70 20 31 30 0d          #top 10.
9ac0: 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e  .#$xl.Selection.
9ad0: 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 32  AutoFilter 1, "2
9ae0: 22 2c 20 24 78 6c 54 6f 70 31 30 49 74 65 6d 73  ", $xlTop10Items
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 23 74 6f 70              #top
9b00: 20 32 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69   2..#$xl.Selecti
9b10: 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31 2c  on.AutoFilter 1,
9b20: 20 22 31 30 22 2c 20 24 78 6c 54 6f 70 31 30 50   "10", $xlTop10P
9b30: 65 72 63 65 6e 74 20 20 20 20 20 20 20 20 23 74  ercent        #t
9b40: 6f 70 20 31 30 20 70 65 72 63 65 6e 74 0d 0a 24  op 10 percent..$
9b50: 78 6c 2e 52 61 6e 67 65 28 22 41 31 22 29 2e 53  xl.Range("A1").S
9b60: 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d 4e 75  elect() | Out-Nu
9b70: 6c 6c 0d 0a 24 78 6c 2e 53 65 6c 65 63 74 69 6f  ll..$xl.Selectio
9b80: 6e 2e 41 75 74 6f 46 69 6c 74 65 72 28 31 2c 22  n.AutoFilter(1,"
9b90: 32 35 22 2c 24 78 6c 54 6f 70 31 30 50 65 72 63  25",$xlTop10Perc
9ba0: 65 6e 74 29 20 20 20 20 20 20 20 20 23 74 6f 70  ent)        #top
9bb0: 20 32 35 20 70 65 72 63 65 6e 74 0d 0a 23 24 78   25 percent..#$x
9bc0: 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41 75 74 6f  l.Selection.Auto
9bd0: 46 69 6c 74 65 72 20 31 2c 20 22 35 22 2c 20 24  Filter 1, "5", $
9be0: 78 6c 42 6f 74 74 6f 6d 31 30 49 74 65 6d 73 20  xlBottom10Items 
9bf0: 20 20 20 20 20 20 20 23 4c 6f 77 65 73 74 20 35         #Lowest 5
9c00: 20 49 74 65 6d 73 0d 0a 23 24 78 6c 2e 53 65 6c   Items..#$xl.Sel
9c10: 65 63 74 69 6f 6e 2e 41 75 74 6f 46 69 6c 74 65  ection.AutoFilte
9c20: 72 20 31 2c 20 22 31 30 22 2c 20 24 78 6c 42 6f  r 1, "10", $xlBo
9c30: 74 74 6f 6d 31 30 50 65 72 63 65 6e 74 20 20 20  ttom10Percent   
9c40: 20 23 42 6f 74 74 6f 6d 20 31 30 20 70 65 72 63   #Bottom 10 perc
9c50: 65 6e 74 0d 0a 23 24 78 6c 2e 53 65 6c 65 63 74  ent..#$xl.Select
9c60: 69 6f 6e 2e 41 75 74 6f 46 69 6c 74 65 72 20 31  ion.AutoFilter 1
9c70: 2c 20 22 3e 31 35 22 20 20 20 20 20 20 20 20 20  , ">15"         
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                 #
9c90: 73 69 7a 65 20 67 72 65 61 74 65 72 20 31 35 0d  size greater 15.
9ca0: 0a 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e  .#$xl.Selection.
9cb0: 41 75 74 6f 46 69 6c 74 65 72 20 31 2c 20 22 3e  AutoFilter 1, ">
9cc0: 31 39 22 2c 58 4c 4f 72 20 2c 20 22 3c 32 22 20  19",XLOr , "<2" 
9cd0: 20 20 20 20 20 20 20 20 20 20 20 23 4c 6f 77 65             #Lowe
9ce0: 73 74 20 61 6e 64 20 48 69 67 68 65 73 74 0d 0a  st and Highest..
9cf0: 23 24 78 6c 2e 53 65 6c 65 63 74 69 6f 6e 2e 41  #$xl.Selection.A
9d00: 75 74 6f 46 69 6c 74 65 72 20 32 2c 20 22 4a 61  utoFilter 2, "Ja
9d10: 63 6b 22 20 20 20 20 20 20 20 20 20 20 20 20 20  ck"             
9d20: 20 20 20 20 20 20 20 20 20 20 20 23 4a 61 63 6b             #Jack
9d30: 20 69 74 65 6d 73 20 6f 6e 6c 79 0d 0a 24 77 73   items only..$ws
9d40: 35 2e 63 65 6c 6c 73 2e 49 74 65 6d 2e 45 6e 74  5.cells.Item.Ent
9d50: 69 72 65 43 6f 6c 75 6d 6e 2e 41 75 74 6f 46 69  ireColumn.AutoFi
9d60: 74 20 0d 0a 7d 20 23 20 45 6e 64 20 46 75 6e 63  t ..} # End Func
9d70: 74 69 6f 6e 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d  tion....#-------
9d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d  ------------..#.
9db0: 0a 0d 0a 23 0d 0a 23 20 48 6f 77 20 64 6f 20 49  ...#..# How do I
9dc0: 20 73 65 74 20 75 70 20 61 20 63 6f 6d 70 6c 65   set up a comple
9dd0: 78 20 46 6f 72 6d 75 6c 61 20 69 6e 20 45 78 63  x Formula in Exc
9de0: 65 6c 3f 0d 0a 23 20 48 65 72 65 20 69 73 20 6f  el?..# Here is o
9df0: 6e 65 20 74 68 61 74 20 63 72 65 61 74 65 73 20  ne that creates 
9e00: 61 20 43 6f 6d 70 6c 65 78 20 46 6f 72 6d 75 6c  a Complex Formul
9e10: 61 20 61 6e 64 20 65 78 65 63 75 74 65 73 20 69  a and executes i
9e20: 74 20 0d 0a 20 0d 0a 46 75 6e 63 74 69 6f 6e 20  t .. ..Function 
9e30: 58 4c 46 6f 72 6d 75 6c 61 31 20 7b 0d 0a 24 78  XLFormula1 {..$x
9e40: 6c 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 2d  l = New-Object -
9e50: 63 6f 6d 6f 62 6a 65 63 74 20 65 78 63 65 6c 2e  comobject excel.
9e60: 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 24 78 6c  application..$xl
9e70: 2e 56 69 73 69 62 6c 65 20 3d 20 24 74 72 75 65  .Visible = $true
9e80: 0d 0a 24 78 6c 2e 44 69 73 70 6c 61 79 41 6c 65  ..$xl.DisplayAle
9e90: 72 74 73 20 3d 20 24 46 61 6c 73 65 20 0d 0a 24  rts = $False ..$
9ea0: 77 62 20 3d 20 24 78 6c 2e 57 6f 72 6b 62 6f 6f  wb = $xl.Workboo
9eb0: 6b 73 2e 41 64 64 28 29 0d 0a 24 77 73 20 3d 20  ks.Add()..$ws = 
9ec0: 24 77 62 2e 57 6f 72 6b 73 68 65 65 74 73 2e 49  $wb.Worksheets.I
9ed0: 74 65 6d 28 31 29 20 0d 0a 24 77 73 2e 6e 61 6d  tem(1) ..$ws.nam
9ee0: 65 20 3d 20 22 43 6f 6d 70 6c 65 78 46 6f 72 6d  e = "ComplexForm
9ef0: 75 6c 61 22 0d 0a 24 77 73 2e 54 61 62 2e 43 6f  ula"..$ws.Tab.Co
9f00: 6c 6f 72 49 6e 64 65 78 20 3d 20 39 0d 0a 24 72  lorIndex = 9..$r
9f10: 6f 77 20 3d 20 32 0d 0a 24 6c 61 73 74 72 6f 77  ow = 2..$lastrow
9f20: 20 3d 20 24 72 6f 77 0d 0a 24 43 6f 6c 20 3d 20   = $row..$Col = 
9f30: 33 0d 0a 24 4f 66 66 20 3d 20 24 43 6f 6c 20 2d  3..$Off = $Col -
9f40: 20 31 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49 74   1..$ws.Cells.It
9f50: 65 6d 28 31 2c 20 31 29 20 3d 20 22 46 69 6c 65  em(1, 1) = "File
9f60: 4e 61 6d 65 22 0d 0a 24 77 73 2e 43 65 6c 6c 73  Name"..$ws.Cells
9f70: 2e 49 74 65 6d 28 31 2c 20 32 29 20 3d 20 22 46  .Item(1, 2) = "F
9f80: 6f 6c 64 65 72 22 0d 0a 24 77 73 2e 43 65 6c 6c  older"..$ws.Cell
9f90: 73 2e 49 74 65 6d 28 31 2c 20 33 29 20 3d 20 22  s.Item(1, 3) = "
9fa0: 46 75 6c 6c 50 61 74 68 22 0d 0a 24 77 73 2e 43  FullPath"..$ws.C
9fb0: 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 20 33 29 20  ells.Item(2, 3) 
9fc0: 3d 20 22 63 3a 5c 46 6f 6c 64 65 72 31 5c 46 75  = "c:\Folder1\Fu
9fd0: 6e 63 74 69 6f 6e 46 6f 6c 64 65 72 31 5c 46 75  nctionFolder1\Fu
9fe0: 6e 63 74 69 6f 6e 46 6f 6c 64 65 72 32 5c 46 69  nctionFolder2\Fi
9ff0: 6c 65 31 2e 74 78 74 22 0d 0a 24 77 73 2e 43 65  le1.txt"..$ws.Ce
a000: 6c 6c 73 2e 49 74 65 6d 28 33 2c 20 33 29 20 3d  lls.Item(3, 3) =
a010: 20 22 63 3a 5c 46 6f 6c 64 65 72 31 5c 46 75 6e   "c:\Folder1\Fun
a020: 63 74 69 6f 6e 46 6f 6c 64 65 72 31 5c 46 75 6e  ctionFolder1\Fun
a030: 63 74 69 6f 6e 46 6f 6c 64 65 72 32 5c 46 75 6e  ctionFolder2\Fun
a040: 63 74 69 6f 6e 46 6f 6c 64 65 72 33 5c 46 69 6c  ctionFolder3\Fil
a050: 65 32 2e 74 78 74 22 0d 0a 24 77 73 2e 43 65 6c  e2.txt"..$ws.Cel
a060: 6c 73 2e 49 74 65 6d 28 34 2c 20 33 29 20 3d 20  ls.Item(4, 3) = 
a070: 22 63 3a 5c 46 6f 6c 64 65 72 31 5c 46 75 6e 63  "c:\Folder1\Func
a080: 74 69 6f 6e 46 6f 6c 64 65 72 31 5c 46 75 6e 63  tionFolder1\Func
a090: 74 69 6f 6e 46 6f 6c 64 65 72 32 5c 46 75 6e 63  tionFolder2\Func
a0a0: 74 69 6f 6e 46 6f 6c 64 65 72 33 5c 46 75 6e 63  tionFolder3\Func
a0b0: 74 69 6f 6e 46 6f 6c 64 65 72 34 5c 46 69 6c 65  tionFolder4\File
a0c0: 33 2e 74 78 74 22 0d 0a 24 6c 61 73 74 72 6f 77  3.txt"..$lastrow
a0d0: 20 3d 20 34 20 0d 0a 23 46 69 6c 65 6e 61 6d 65   = 4 ..#Filename
a0e0: 0d 0a 24 52 61 6e 67 65 31 20 3d 20 24 77 73 2e  ..$Range1 = $ws.
a0f0: 52 61 6e 67 65 28 22 41 32 22 29 0d 0a 24 77 73  Range("A2")..$ws
a100: 2e 43 65 6c 6c 73 2e 49 74 65 6d 28 32 2c 31 29  .Cells.Item(2,1)
a110: 2e 46 6f 72 6d 75 6c 61 52 31 43 31 20 3d 20 22  .FormulaR1C1 = "
a120: 3d 4d 49 44 28 43 5b 32 5d 2c 46 49 4e 44 28 43  =MID(C[2],FIND(C
a130: 48 41 52 28 31 32 37 29 2c 53 75 62 73 74 69 74  HAR(127),Substit
a140: 75 74 65 28 43 5b 32 5d 2c 22 22 5c 22 22 2c 43  ute(C[2],""\"",C
a150: 48 41 52 28 31 32 37 29 2c 4c 45 4e 28 43 5b 32  HAR(127),LEN(C[2
a160: 5d 29 2d 4c 45 4e 28 53 75 62 73 74 69 74 75 74  ])-LEN(Substitut
a170: 65 28 43 5b 32 5d 2c 22 22 5c 22 22 2c 22 22 22  e(C[2],""\"","""
a180: 22 29 29 29 29 2b 31 2c 32 35 34 29 22 0d 0a 23  "))))+1,254)"..#
a190: 20 4e 6f 74 65 20 49 20 75 73 65 64 20 32 35 34   Note I used 254
a1a0: 20 61 73 20 61 20 68 61 72 64 63 6f 64 65 64 20   as a hardcoded 
a1b0: 6c 65 6e 67 74 68 2e 20 20 4e 6f 20 66 69 6c 65  length.  No file
a1c0: 6e 61 6d 65 20 73 68 6f 75 6c 64 20 65 76 65 72  name should ever
a1d0: 20 72 65 61 63 68 20 74 68 69 73 20 6c 65 6e 67   reach this leng
a1e0: 74 68 2e 20 20 48 6f 77 65 76 65 72 c3 a2 ef bf  th.  However....
a1f0: bd c2 a6 2e 0d 0a 23 20 59 6f 75 20 63 6f 75 6c  ......# You coul
a200: 64 20 67 65 74 20 74 68 65 20 6c 65 6e 67 74 68  d get the length
a210: 20 70 72 6f 67 72 61 6d 61 74 69 63 61 6c 6c 79   programatically
a220: 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77   with the follow
a230: 69 6e 67 0d 0a 23 20 22 3d 4d 49 44 28 43 5b 32  ing..# "=MID(C[2
a240: 5d 2c 46 49 4e 44 28 43 48 41 52 28 31 32 37 29  ],FIND(CHAR(127)
a250: 2c 46 75 6e 63 74 69 6f 6e 53 75 62 73 54 49 54  ,FunctionSubsTIT
a260: 55 54 45 28 43 5b 32 5d 2c 22 22 5c 22 22 2c 43  UTE(C[2],""\"",C
a270: 48 41 52 28 31 32 37 29 2c 4c 45 4e 28 43 5b 32  HAR(127),LEN(C[2
a280: 5d 29 2d 4c 45 4e 28 53 75 62 73 74 69 74 75 74  ])-LEN(Substitut
a290: 65 28 43 5b 32 5d 2c 22 22 5c 22 22 2c 22 22 22  e(C[2],""\"","""
a2a0: 22 29 29 29 29 2b 31 2c 4c 45 4e 28 43 5b 32 5d  "))))+1,LEN(C[2]
a2b0: 29 2d 28 46 49 4e 44 28 43 48 41 52 28 31 32 37  )-(FIND(CHAR(127
a2c0: 29 2c 53 75 62 73 74 69 74 75 74 65 28 43 5b 32  ),Substitute(C[2
a2d0: 5d 2c 22 22 5c 22 22 2c 43 48 41 52 28 31 32 37  ],""\"",CHAR(127
a2e0: 29 2c 4c 45 4e 28 43 5b 32 5d 29 2d 4c 45 4e 28  ),LEN(C[2])-LEN(
a2f0: 53 75 62 73 74 69 74 75 74 65 28 43 5b 32 5d 2c  Substitute(C[2],
a300: 22 22 5c 22 22 2c 22 22 22 22 29 29 29 29 29 29  ""\"",""""))))))
a310: 22 20 0d 0a 24 72 61 6e 67 65 32 20 3d 20 24 77  " ..$range2 = $w
a320: 73 2e 52 61 6e 67 65 28 22 41 32 3a 41 24 6c 61  s.Range("A2:A$la
a330: 73 74 72 6f 77 22 29 0d 0a 5b 76 6f 69 64 5d 24  strow")..[void]$
a340: 72 61 6e 67 65 31 2e 41 75 74 6f 46 69 6c 6c 28  range1.AutoFill(
a350: 24 72 61 6e 67 65 32 2c 24 78 6c 46 69 6c 6c 44  $range2,$xlFillD
a360: 65 66 61 75 6c 74 29 20 0d 0a 23 46 6f 6c 64 65  efault) ..#Folde
a370: 72 0d 0a 24 6c 61 73 74 72 6f 77 20 3d 20 34 0d  r..$lastrow = 4.
a380: 0a 24 77 73 2e 52 61 6e 67 65 28 22 42 32 22 29  .$ws.Range("B2")
a390: 2e 53 65 6c 65 63 74 28 29 20 7c 20 4f 75 74 2d  .Select() | Out-
a3a0: 4e 75 6c 6c 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e  Null..$ws.Cells.
a3b0: 49 74 65 6d 28 32 2c 32 29 2e 46 6f 72 6d 75 6c  Item(2,2).Formul
a3c0: 61 52 31 43 31 20 3d 20 22 3d 4c 45 46 54 28 43  aR1C1 = "=LEFT(C
a3d0: 5b 31 5d 2c 46 49 4e 44 28 43 48 41 52 28 31 32  [1],FIND(CHAR(12
a3e0: 37 29 2c 53 75 62 73 74 69 74 75 74 65 28 43 5b  7),Substitute(C[
a3f0: 31 5d 2c 22 22 5c 22 22 2c 43 48 41 52 28 31 32  1],""\"",CHAR(12
a400: 37 29 2c 4c 45 4e 28 43 5b 31 5d 29 2d 4c 45 4e  7),LEN(C[1])-LEN
a410: 28 53 75 62 73 74 69 74 75 74 65 28 43 5b 31 5d  (Substitute(C[1]
a420: 2c 22 22 5c 22 22 2c 22 22 22 22 29 29 29 29 2d  ,""\"",""""))))-
a430: 31 29 22 0d 0a 24 52 31 20 3d 20 24 77 73 2e 52  1)"..$R1 = $ws.R
a440: 61 6e 67 65 28 22 42 32 22 29 0d 0a 24 72 32 20  ange("B2")..$r2 
a450: 3d 20 24 77 73 2e 52 61 6e 67 65 28 22 42 32 3a  = $ws.Range("B2:
a460: 42 24 6c 61 73 74 72 6f 77 22 29 0d 0a 5b 76 6f  B$lastrow")..[vo
a470: 69 64 5d 24 52 31 2e 41 75 74 6f 46 69 6c 6c 28  id]$R1.AutoFill(
a480: 24 52 32 2c 24 78 6c 46 69 6c 6c 44 65 66 61 75  $R2,$xlFillDefau
a490: 6c 74 29 0d 0a 24 77 73 2e 43 65 6c 6c 73 2e 49  lt)..$ws.Cells.I
a4a0: 74 65 6d 2e 45 6e 74 69 72 65 43 6f 6c 75 6d 6e  tem.EntireColumn
a4b0: 2e 41 75 74 6f 46 69 74 0d 0a 24 77 73 2e 52 61  .AutoFit..$ws.Ra
a4c0: 6e 67 65 28 22 41 32 22 29 2e 53 65 6c 65 63 74  nge("A2").Select
a4d0: 28 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 7d  () | Out-Null..}
a4e0: 20 23 20 45 6e 64 20 46 75 6e 63 74 69 6f 6e 0d   # End Function.
a4f0: 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ...#------------
a500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a520: 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d 0a 0d 0a 23 20  -------..#....# 
a530: 48 6f 77 20 64 6f 20 49 20 73 65 74 20 75 70 20  How do I set up 
a540: 61 20 50 69 76 6f 74 20 54 61 62 6c 65 20 69 6e  a Pivot Table in
a550: 20 45 78 63 65 6c 3f 0d 0a 23 20 49 20 77 61 73   Excel?..# I was
a560: 20 77 6f 72 6b 69 6e 67 20 77 69 74 68 20 4d 42   working with MB
a570: 53 41 20 72 65 70 6f 72 74 73 20 68 65 72 65 2e  SA reports here.
a580: 0d 0a 23 0d 0a 46 75 6e 63 74 69 6f 6e 20 50 69  ..#..Function Pi
a590: 76 6f 74 20 7b 0d 0a 24 78 6c 50 69 76 6f 74 54  vot {..$xlPivotT
a5a0: 61 62 6c 65 56 65 72 73 69 6f 6e 31 32 20 20 20  ableVersion12   
a5b0: 20 20 3d 20 33 0d 0a 24 78 6c 50 69 76 6f 74 54    = 3..$xlPivotT
a5c0: 61 62 6c 65 56 65 72 73 69 6f 6e 31 30 20 20 20  ableVersion10   
a5d0: 20 20 3d 20 31 0d 0a 24 78 6c 43 6f 75 6e 74 20    = 1..$xlCount 
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a5f0: 3d 20 2d 34 31 31 32 0d 0a 24 78 6c 44 65 73 63  = -4112..$xlDesc
a600: 65 6e 64 69 6e 67 20 20 20 20 20 20 20 20 20 20  ending          
a610: 20 20 20 3d 20 32 0d 0a 24 78 6c 44 61 74 61 62     = 2..$xlDatab
a620: 61 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20  ase             
a630: 20 20 20 3d 20 31 0d 0a 24 78 6c 48 69 64 64 65     = 1..$xlHidde
a640: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
a650: 20 20 20 3d 20 30 0d 0a 24 78 6c 52 6f 77 46 69     = 0..$xlRowFi
a660: 65 6c 64 20 20 20 20 20 20 20 20 20 20 20 20 20  eld             
a670: 20 20 20 3d 20 31 0d 0a 24 78 6c 43 6f 6c 75 6d     = 1..$xlColum
a680: 6e 46 69 65 6c 64 20 20 20 20 20 20 20 20 20 20  nField          
a690: 20 20 20 3d 20 32 0d 0a 24 78 6c 50 61 67 65 46     = 2..$xlPageF
a6a0: 69 65 6c 64 20 20 20 20 20 20 20 20 20 20 20 20  ield            
a6b0: 20 20 20 3d 20 33 0d 0a 24 78 6c 44 61 74 61 46     = 3..$xlDataF
a6c0: 69 65 6c 64 20 20 20 20 20 20 20 20 20 20 20 20  ield            
a6d0: 20 20 20 3d 20 34 20 20 20 20 0d 0a 23 20 52 31     = 4    ..# R1
a6e0: 43 31 20 6d 65 61 6e 73 20 52 6f 77 20 31 20 43  C1 means Row 1 C
a6f0: 6f 6c 75 6d 6e 20 31 20 6f 72 20 22 41 31 22 0d  olumn 1 or "A1".
a700: 0a 23 20 52 36 35 35 33 36 43 35 20 6d 65 61 6e  .# R65536C5 mean
a710: 73 20 52 6f 77 20 36 35 35 33 36 20 43 6f 6c 75  s Row 65536 Colu
a720: 6d 6e 20 45 20 6f 72 20 22 45 36 35 35 33 36 22  mn E or "E65536"
a730: 0d 0a 24 50 69 76 6f 74 54 61 62 6c 65 20 3d 20  ..$PivotTable = 
a740: 24 77 62 2e 50 69 76 6f 74 43 61 63 68 65 73 28  $wb.PivotCaches(
a750: 29 2e 43 72 65 61 74 65 28 24 78 6c 44 61 74 61  ).Create($xlData
a760: 62 61 73 65 2c 22 52 65 70 6f 72 74 21 52 31 43  base,"Report!R1C
a770: 31 3a 52 36 35 35 33 36 43 35 22 2c 24 78 6c 50  1:R65536C5",$xlP
a780: 69 76 6f 74 54 61 62 6c 65 56 65 72 73 69 6f 6e  ivotTableVersion
a790: 31 30 29 0d 0a 24 50 69 76 6f 74 54 61 62 6c 65  10)..$PivotTable
a7a0: 2e 43 72 65 61 74 65 50 69 76 6f 74 54 61 62 6c  .CreatePivotTabl
a7b0: 65 28 22 50 69 76 6f 74 21 52 31 43 31 22 29 20  e("Pivot!R1C1") 
a7c0: 7c 20 4f 75 74 2d 4e 75 6c 6c 20 0d 0a 5b 76 6f  | Out-Null ..[vo
a7d0: 69 64 5d 24 77 73 33 2e 53 65 6c 65 63 74 28 29  id]$ws3.Select()
a7e0: 0d 0a 24 77 73 33 2e 43 65 6c 6c 73 2e 49 74 65  ..$ws3.Cells.Ite
a7f0: 6d 28 31 2c 31 29 2e 53 65 6c 65 63 74 28 29 0d  m(1,1).Select().
a800: 0a 24 77 62 2e 53 68 6f 77 50 69 76 6f 74 54 61  .$wb.ShowPivotTa
a810: 62 6c 65 46 69 65 6c 64 4c 69 73 74 20 3d 20 24  bleFieldList = $
a820: 74 72 75 65 20 0d 0a 24 50 69 76 6f 74 46 69 65  true ..$PivotFie
a830: 6c 64 73 20 3d 20 24 77 73 33 2e 50 69 76 6f 74  lds = $ws3.Pivot
a840: 54 61 62 6c 65 73 28 22 50 69 76 6f 74 54 61 62  Tables("PivotTab
a850: 6c 65 31 22 29 2e 50 69 76 6f 74 46 69 65 6c 64  le1").PivotField
a860: 73 28 22 53 65 72 76 65 72 22 29 20 23 20 57 6f  s("Server") # Wo
a870: 72 6b 73 68 65 65 74 20 4e 61 6d 65 20 69 73 20  rksheet Name is 
a880: 53 65 72 76 65 72 0d 0a 24 50 69 76 6f 74 46 69  Server..$PivotFi
a890: 65 6c 64 73 2e 4f 72 69 65 6e 74 61 74 69 6f 6e  elds.Orientation
a8a0: 20 3d 20 24 78 6c 52 6f 77 46 69 65 6c 64 0d 0a   = $xlRowField..
a8b0: 24 50 69 76 6f 74 46 69 65 6c 64 73 2e 50 6f 73  $PivotFields.Pos
a8c0: 69 74 69 6f 6e 20 3d 20 31 20 0d 0a 24 50 69 76  ition = 1 ..$Piv
a8d0: 6f 74 46 69 65 6c 64 73 20 3d 20 24 77 73 33 2e  otFields = $ws3.
a8e0: 50 69 76 6f 74 54 61 62 6c 65 73 28 22 50 69 76  PivotTables("Piv
a8f0: 6f 74 54 61 62 6c 65 31 22 29 2e 50 69 76 6f 74  otTable1").Pivot
a900: 46 69 65 6c 64 73 28 22 4b 42 49 44 22 29 20 23  Fields("KBID") #
a910: 20 43 6f 6c 75 6d 6e 20 48 65 61 64 65 72 20 69   Column Header i
a920: 73 20 4b 42 49 44 0d 0a 24 50 69 76 6f 74 46 69  s KBID..$PivotFi
a930: 65 6c 64 73 2e 4f 72 69 65 6e 74 61 74 69 6f 6e  elds.Orientation
a940: 20 3d 20 24 78 6c 43 6f 6c 75 6d 6e 46 69 65 6c   = $xlColumnFiel
a950: 64 0d 0a 24 50 69 76 6f 74 46 69 65 6c 64 73 2e  d..$PivotFields.
a960: 50 6f 73 69 74 69 6f 6e 20 3d 20 31 20 0d 0a 24  Position = 1 ..$
a970: 50 69 76 6f 74 46 69 65 6c 64 73 20 3d 20 24 77  PivotFields = $w
a980: 73 33 2e 50 69 76 6f 74 54 61 62 6c 65 73 28 22  s3.PivotTables("
a990: 50 69 76 6f 74 54 61 62 6c 65 31 22 29 2e 50 69  PivotTable1").Pi
a9a0: 76 6f 74 46 69 65 6c 64 73 28 22 4b 42 49 44 22  votFields("KBID"
a9b0: 29 20 23 20 54 68 65 20 64 61 74 61 20 69 73 20  ) # The data is 
a9c0: 69 6e 20 74 68 69 73 20 63 6f 6c 75 6d 6e 0d 0a  in this column..
a9d0: 24 50 69 76 6f 74 46 69 65 6c 64 73 2e 4f 72 69  $PivotFields.Ori
a9e0: 65 6e 74 61 74 69 6f 6e 3d 24 78 6c 44 61 74 61  entation=$xlData
a9f0: 46 69 65 6c 64 20 0d 0a 24 6d 61 69 6e 52 6e 67  Field ..$mainRng
aa00: 20 3d 20 24 77 73 33 2e 55 73 65 64 52 61 6e 67   = $ws3.UsedRang
aa10: 65 2e 43 65 6c 6c 73 20 0d 0a 24 52 6f 77 43 6f  e.Cells ..$RowCo
aa20: 75 6e 74 20 3d 20 24 6d 61 69 6e 52 6e 67 2e 52  unt = $mainRng.R
aa30: 6f 77 73 2e 43 6f 75 6e 74 20 20 0d 0a 24 52 20  ows.Count  ..$R 
aa40: 3d 20 24 52 6f 77 43 6f 75 6e 74 0d 0a 24 52 20  = $RowCount..$R 
aa50: 3d 20 24 52 20 2d 20 31 20 20 20 20 0d 0a 24 6d  = $R - 1    ..$m
aa60: 61 69 6e 52 6e 67 2e 53 65 6c 65 63 74 28 29 0d  ainRng.Select().
aa70: 0a 24 6f 62 6a 53 65 61 72 63 68 20 3d 20 24 6d  .$objSearch = $m
aa80: 61 69 6e 52 6e 67 2e 46 69 6e 64 28 22 47 72 61  ainRng.Find("Gra
aa90: 6e 64 20 54 6f 74 61 6c 22 29 0d 0a 24 6f 62 6a  nd Total")..$obj
aaa0: 53 65 61 72 63 68 2e 53 65 6c 65 63 74 28 29 0d  Search.Select().
aab0: 0a 24 43 20 3d 20 24 6f 62 6a 53 65 61 72 63 68  .$C = $objSearch
aac0: 2e 43 6f 6c 75 6d 6e 0d 0a 57 72 69 74 65 2d 48  .Column..Write-H
aad0: 6f 73 74 20 24 43 20 24 52 20 23 20 74 68 69 73  ost $C $R # this
aae0: 20 69 73 20 6a 75 73 74 20 73 6f 20 49 20 63 61   is just so I ca
aaf0: 6e 20 73 65 65 20 77 68 61 74 27 73 20 68 61 70  n see what's hap
ab00: 70 69 6e 69 6e 67 20 0d 0a 24 78 6c 53 75 6d 6d  pining ..$xlSumm
ab10: 61 72 79 41 62 6f 76 65 20 3d 20 30 20 0d 0a 24  aryAbove = 0 ..$
ab20: 78 6c 53 6f 72 74 56 61 6c 75 65 73 20 3d 20 24  xlSortValues = $
ab30: 78 6c 50 69 6e 59 69 6e 20 3d 20 31 0d 0a 24 78  xlPinYin = 1..$x
ab40: 6c 41 73 63 65 6e 64 69 6e 67 20 3d 20 31 20 0d  lAscending = 1 .
ab50: 0a 24 78 6c 44 65 73 63 65 6e 64 69 6e 67 20 3d  .$xlDescending =
ab60: 20 32 20 0d 0a 24 72 61 6e 67 65 31 20 3d 20 24   2 ..$range1 = $
ab70: 77 73 33 2e 55 73 65 64 52 61 6e 67 65 20 0d 0a  ws3.UsedRange ..
ab80: 24 72 61 6e 67 65 32 20 3d 20 24 77 73 33 2e 43  $range2 = $ws3.C
ab90: 65 6c 6c 73 2e 49 74 65 6d 28 33 2c 20 24 43 29  ells.Item(3, $C)
aba0: 20 0d 0a 23 20 6f 6e 65 2d 63 6f 6c 75 6d 6e 20   ..# one-column 
abb0: 73 6f 72 74 20 2d 2d 3e 20 77 6f 72 6b 73 20 0d  sort --> works .
abc0: 0a 5b 76 6f 69 64 5d 24 72 61 6e 67 65 32 2e 73  .[void]$range2.s
abd0: 6f 72 74 28 24 72 61 6e 67 65 32 2c 20 24 78 6c  ort($range2, $xl
abe0: 44 65 73 63 65 6e 64 69 6e 67 29 20 23 20 70 75  Descending) # pu
abf0: 74 73 20 74 68 65 20 68 69 67 68 65 73 74 20 6e  ts the highest n
ac00: 75 6d 62 65 72 73 20 61 74 20 74 68 65 20 74 6f  umbers at the to
ac10: 70 0d 0a 7d 20 23 20 45 6e 64 20 46 75 6e 63 74  p..} # End Funct
ac20: 69 6f 6e 0d 0a                                   ion..