フッターに会社名を入れることが多い。
しかもシート数が半端なかったりすることも多いので・・・
EXCELのマクロ記録モードでヘッダー等をイジると
With ActiveSheet.PageSetup .LeftHeader = "ヘッダー左" .CenterHeader = "ヘッダー中央" .RightHeader = "ヘッダー上" .LeftFooter = "フッター左" .CenterFooter = "フッター中央" .RightFooter = "フッター右" .LeftMargin = Application.InchesToPoints(0.7) .RightMargin = Application.InchesToPoints(0.7) .TopMargin = Application.InchesToPoints(0.75) .BottomMargin = Application.InchesToPoints(0.75) .HeaderMargin = Application.InchesToPoints(0.3) .FooterMargin = Application.InchesToPoints(0.3) .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With
と 書き出してくれるので
シートを替えながら、このマクロを実行すればいい。
しかしブックの数も半端ないなら・・・
またBATの出番だ。
※CScriptで実行するブートストラップは省略
var EXCEL = WScript.CreateObject("EXCEL.Application"); var SHELL = WScript.CreateObject("WScript.Shell"); var FS = WScript.CreateObject("Scripting.FileSystemObject"); //カレントフォルダのファイルを列挙する echo(SHELL.CurrentDirectory); var folder = FS.GetFolder( SHELL.CurrentDirectory ); var em = new Enumerator( folder.Files ); //順にループ for( em.moveFirst(); !em.atEnd(); em.moveNext() ) { //EXCELっぽいファイルだけ処理 if(em.item().Name.indexOf(".xls")>0) { //ファイルをEXCELで開く var book = EXCEL.Workbooks.Open(em.item().Name); try { echo(book.name +": "+book.Worksheets.Count+" sheets"); EXCEL.DisplayAlerts = false; // var saveFlag=false; //1シートづつループ for(var i = 1; i<=book.Worksheets.Count; i++) { var sheet = book.Worksheets(i) //白紙は何もしない様にする if(sheet.UsedRange.Count>0) { echo(" "+sheet.name +":"+sheet.UsedRange.Count+" セル"); var hdrText = em.item().Name + ":" + sheet.name; //ヘッダーを調整済みならヘッダーを調整しない if(sheet.PageSetup.LeftHeader.indexOf(hdrText)<0) { sheet.PageSetup.LeftHeader = hdrText + " "+ "\n" + sheet.PageSetup.LeftHeader; // 改行を入れてあるので1行分ぐらい高くする sheet.PageSetup.TopMargin += 12; } //フッターに会社名を入れる sheet.PageSetup.RightFooter = "株式会社 *****"; saveFlag=true; } } // ヘッダーやフッターを調整した時だけ保存 if(saveFlag) { book.Save(); echo(book.name +" Saved"); } } catch(e){ var i, ary = []; ary.push("number:"+e.number.toString(16)); for (i in e) { ary.push(i + ":" + e[i]); } echo("例外処理:" + ary.join(", ")); } finally { // ブックを確実に閉じる if (book != null){ book.Close(false); } } } } EXCEL = null; SHELL = null; FS = null;
微妙なのは、ヘッダーの高さ、改行を入れているので、少し嵩上げしている
sheet.PageSetup.TopMargin += 12;
こんなコードをEXCELブックのフォルダにぺーストしてダブルクリックするだけで
EXCELの資料の全シートにプロジェクト名とか会社名を入れるとか・・・実にくだらない仕事がサクっと進む。
注意点はネットドライブを割り当てておかないと、BAT系は全滅。
What’s up everyone, it’s my first pay a visit at this web site, and post is actually fruitful designed for me,
keep up posting such articles.