2011年7月2日土曜日

Excel シートの存在チェック2

ワークブックにシートが存在するかチェックする関数

パラメータは、ワークブックのオブジェクトとシート名
パラメータで渡したワークブックに、パラメータで渡したシート名が存在する場合にtrueが返却される。存在しない場合は、falseが返却される。

Public Function sheetExist(book As Workbook, name As String)
    
    Dim ws As Worksheet
    Dim flag As Boolean
    
    For Each ws In book.Worksheets
        If ws.name = name Then
            flag = True
            Exit For
        End If
    Next ws
    sheetExist = flag
End Function


シートを追加する処理などでチェックをしておくと、エラーを回避できます。

2011年6月28日火曜日

Excel シートの存在チェック

Public Function sheetExist(name As String)
   
    Dim ws As Worksheet
    Dim flag As Boolean
   
    For Each ws In Worksheets
        If ws.name = name Then
            flag = True
            Exit For
        End If
    Next ws
    sheetExist = flag
End Function

2011年6月21日火曜日

Excel オートシェイプ メモ用

    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 54#, 13.5, 54#, 13.5). _
        Select
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 43
    Selection.ShapeRange.Fill.Transparency = 0#
    Selection.ShapeRange.Line.Weight = 0.75
    Selection.ShapeRange.Line.DashStyle = msoLineSolid
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.Transparency = 0#
    Selection.ShapeRange.Line.Visible = msoTrue
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
    ExecuteExcel4Macro "FORMULA(""=R[1]C"")"
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "6/21/2011"
    Range("A2").Select
    ActiveSheet.Shapes("Rectangle 1").Select
    Range("C4").Select
    ActiveSheet.Shapes("Rectangle 1").Select
    ExecuteExcel4Macro "FORMULA(""=RC"")"
    Range("C6:C7").Select
    Range("C7").Activate
    ActiveSheet.Shapes("Rectangle 1").Select
    Selection.ShapeRange.Line.Weight = 1.25
    Selection.ShapeRange.Line.DashStyle = msoLineSolid
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.Transparency = 0#
    Selection.ShapeRange.Line.Visible = msoTrue
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 43
    Selection.ShapeRange.Fill.Transparency = 0#
    Selection.ShapeRange.Fill.OneColorGradient msoGradientVertical, 1, 0.23
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 63#, 54#, 54#, 13.5). _
        Select
    Selection.ShapeRange.Line.Weight = 0.75
    Selection.ShapeRange.Line.DashStyle = msoLineSolid
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.Transparency = 0#
    Selection.ShapeRange.Line.Visible = msoTrue
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Fill.Visible = msoTrue
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 33
    Selection.ShapeRange.Fill.BackColor.RGB = RGB(255, 255, 255)
    Selection.ShapeRange.Fill.Transparency = 0#
    Selection.ShapeRange.Fill.Patterned msoPattern5Percent
    ActiveSheet.Shapes.Range(Array("Rectangle 2", "Rectangle 1")).Select
    Selection.ShapeRange.Group.Select

2011年6月19日日曜日

JAVA Log4J 1.2.17 を使ってみた!5

今日は、ログファイルのローテーションの方法を書きます。

環境周りは、省略します。
環境を確認したい方は、
こちらこちら


注目するのは、4行目から10行目の内容
<appender ~>~</appender>
この内容がログファイルのローテーションの方法を設定している。

<appender name="File" class="org.apache.log4j.DailyRollingFileAppender">
nameには、appenderの名前を指定する。
(ファイルとコンソール出力の時と同じ)
classには、org.apache.log4j.DailyRollingFileAppenderを指定する。
このクラスがファイルに出力し、ローテーションするためのクラスとなる。

<param ~ />に設定可能な項目は、
DatePattern、File、Append、BufferedIO、BufferSize、Threshold、ImmediateFlush、Encoding
DatePattern以外は、FileAppenderで説明したので省略します。

DatePatternのvalueに設定する内容によって、ローテーションするタイミングが変わります。


ローテーションのタイミングについては、
'.'yyyy-MM         月が変わるごと
'.'yyyy-ww         週が変わるごと
'.'yyyy-MM-dd      日が変わるごと
'.'yyyy-MM-dd-a    午前と午後が変わるごと
'.'yyyy-MM-dd-HH   1時間ごと


他のparamについて詳しく知りたい方は、こちら

<layout ~></layout>
レイアウトについても、前回までに説明したので省略します。


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender name="File" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="File" value="C:/log4j.log" />
      <param name="DatePattern" value="'.'yyyy-MM-dd" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <appender name="Console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <root>
      <level value="debug" />
      <appender-ref ref="Console" />
      <appender-ref ref="File" />
   </root>
</log4j:configuration>


2011年6月18日土曜日

JAVA Log4J 1.2.17 を使ってみた!4

今日は、コンソールの出力方法を書きます。

環境周りは、省略します。
環境を確認したい方は、
こちらこちら


注目するのは、10行目から14行目の内容
<appender ~>~</appender>
この内容がコンソールに出力する内容を設定している。

<appender name="Console" class="org.apache.log4j.ConsoleAppender">
nameには、appenderの名前を指定する。(ファイル出力の時と同じ)
classには、org.apache.log4j.ConsoleAppenderを指定する。
このクラスがコンソールに出力するためのクラスとなる。

<layout ~></layout>
レイアウトについては、前回説明したので省略します。


明日以降に、ログファイルのローテーションについて書きます。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender name="File" class="org.apache.log4j.FileAppender">
      <param name="File" value="C:/log4j.log" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <appender name="Console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <root>
      <level value="debug" />
      <appender-ref ref="Console" />
      <appender-ref ref="File" />
   </root>
</log4j:configuration>


2011年6月17日金曜日

JAVA Log4J 1.2.17 を使ってみた!3

昨日かけなかったLog4jについて、今日も続きの内容を書こう。

環境周りは、昨日までに2回書いてるのでパスします。確認したい方は、
昨日分はこちら
一昨日分はこちら


昨日書けなかった、<layout ~>~</layout>について、
今回使ったLayoutクラスは、org.apache.log4j.PatternLayoutを使用した。
自分でログの出力フォーマットを決めることができるクラスで、
フォーマットについては、<param ~/>で設定する。
nameには、ConversionPatternを設定し、valueにフォーマットを指定する。
今回は、"%d %-5p %c - %-5m [%t] (%F:%L)%n"を設定
%dは、日付を出力
%pは、ログのレベルを出力
%cは、ログを出力したクラスを出力
%mは、メッセージの内容を出力k
%tは、スレッドを出力
&Fは、ログを出力したファイル名を出力
%Lは、ログを出力したファイルの行番号を出力
%nは、改行コードを出力


一昨日のクラスを実行して出力されるログは、下記のようになる。


2011-06-17 21:34:48,436 DEBUG sample.Test - デバッグだよ~ [main] (Test.java:11)
2011-06-17 21:34:48,436 INFO  sample.Test - インフォだよ。 [main] (Test.java:12)
2011-06-17 21:34:48,436 WARN  sample.Test - ワーニング! [main] (Test.java:13)
2011-06-17 21:34:48,436 ERROR sample.Test - エラーッ!! [main] (Test.java:14)
2011-06-17 21:34:48,436 FATAL sample.Test - フェイタルッ!!! [main] (Test.java:15)


2011年6月16日木曜日

JAVA Log4J 1.2.17 を使ってみた!2

昨日の続きで、今日もLog4jについて調べてみた。

今日も昨日と同様の環境だが、念のためのせておこう。
Java 1.6系
log4j log4j-1.2.17.jar

クラスパスにlog4j-1.2.17.jarを指定する。
ダウンロードは、こちら

昨日は、コンソールとファイルに出力されるように設定ファイルを
作成していた。
まずは、何をどうすれば、ファイルに出力されるのか書くことにする。

注目するのは、4行目から9行目の内容
<appender ~>~</appender>
この内容がファイルに出力する内容を設定している。

<appender name="File" class="org.apache.log4j.FileAppender">
nameには、appenderの名前を指定する。
classには、org.apache.log4j.FileAppenderを指定する。
このクラスがファイルに出力するためのクラスとなる。

<param name="File" value="C:/log4j.log" />
paramタグは、appenderに渡すパラメータを指定する。
nameにFileを指定し、vlaueに出力するファイルのパスを指定する。
この内容が出力先のファイル名になる。
ファイルが存在していない場合は、自動で作成する。


それ以外のパラメータは、Append、BufferedIO、BufferSize、
Threshold、ImmediateFlush、Encoding


Appendについては、追記モードを指定する。
指定する値は、boolean(true/false)を設定する。
初期値(指定しない場合)は、falseになっていて追記されない。
毎回ファイルを上書きするので注意が必要。

<param name="Append" value="true" />


BufferedIOについては、バッファリングを指定する。
指定する値は、boolean(true/false)を設定する。
初期値(指定しない場合)は、falseになっていてバッファリングされない。


BufferSizeについては、バッファサイズを指定する。
バッファリングをする場合のバッファサイズになる。


Thresholdについては、appenderごとに出力するログのレベルを指定する。
指定する値は、DEBUG/INFO/WARN/ERROR/FATALを指定できる。


ImmediateFlushについては、バッファの内容を即時出力するかを指定する。
指定する値は、boolean(true/false)を設定する。
初期値(指定しない場合)は、trueになっていてバ即時に出力する。


Encodingについては、出力するファイルの文字コードを指定する。
初期値(指定しない場合)は、OSの文字コードで出力される。


これで、appendarの設定は、完了。
このappendarを使用するかを指定するのが、
<root>~</root>
になる。
appender-refタグで、上記で設定したappendarのnameを指定する。
<appender-ref ref="File" />

ちなみに、<level value="debug" />で、ログの出力レベルを設定できる。


以上で、ファイルに出力する設定が完了。


結構長くなってしまったので、
<layout ~>~</layout>
については、また明日にでも書きます。


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender name="File" class="org.apache.log4j.FileAppender">
      <param name="File" value="C:/log4j.log" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <appender name="Console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p %c - %-5m [%t] (%F:%L)%n"/>
      </layout>
   </appender>
   <root>
      <level value="debug" />
      <appender-ref ref="Console" />
      <appender-ref ref="File" />
   </root>
</log4j:configuration>