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月28日火曜日
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
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>
レイアウトについても、前回までに説明したので省略します。
環境周りは、省略します。
環境を確認したい方は、
こちらかこちらへ
注目するのは、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>
レイアウトについては、前回説明したので省略します。
明日以降に、ログファイルのローテーションについて書きます。
環境周りは、省略します。
環境を確認したい方は、
こちらかこちらへ
注目するのは、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は、改行コードを出力
一昨日のクラスを実行して出力されるログは、下記のようになる。
環境周りは、昨日までに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>
については、また明日にでも書きます。
今日も昨日と同様の環境だが、念のためのせておこう。
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>
2011年6月15日水曜日
JAVA Log4J 1.2.17 を使ってみた!
Javaでプログラムを作ってると、System.out.println()とか
System.out.print()を使って、ログのような出力をすることが
結構あると思う。
ちょっとしたツールならいいと思うが、
システムとして作成しているときは、
ちょっとよくないとおもったので、
Log4jを使ってみようと思い、調べてみた。
今回の環境は、
Java 1.6系
log4j log4j-1.2.17.jar
クラスパスにlog4j-1.2.17.jarを指定する。
ダウンロードは、こちら
設定ファイルは、クラスパスの通ったフォルダにlog4j.xmlで作成すると、
指定することなく自動的に読み込んでくれます。
まずは、設定ファイルを作成します。
ファイル名は、log4j.xml
.propertiesで作成することもできるようなので、それはまた後日
xmlの中身の解説も今回は省略します。
次に、Javaのクラスを作成します。
クラス名は、Test
試してみてください。
System.out.print()を使って、ログのような出力をすることが
結構あると思う。
ちょっとしたツールならいいと思うが、
システムとして作成しているときは、
ちょっとよくないとおもったので、
Log4jを使ってみようと思い、調べてみた。
今回の環境は、
Java 1.6系
log4j log4j-1.2.17.jar
クラスパスにlog4j-1.2.17.jarを指定する。
ダウンロードは、こちら
設定ファイルは、クラスパスの通ったフォルダにlog4j.xmlで作成すると、
指定することなく自動的に読み込んでくれます。
まずは、設定ファイルを作成します。
ファイル名は、log4j.xml
.propertiesで作成することもできるようなので、それはまた後日
xmlの中身の解説も今回は省略します。
<?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>
次に、Javaのクラスを作成します。
クラス名は、Test
package sample; import org.apache.log4j.Logger; public class Test { public static void main(String[] args) { Logger logger = Logger.getLogger(Test.class); logger.debug("デバッグだよ~"); logger.info("インフォだよ。"); logger.warn("ワーニング!"); logger.error("エラーッ!!"); logger.fatal("フェイタルッ!!!"); } }
試してみてください。
2011年6月14日火曜日
JAVA Stringをチェックするクラス2
先日の文字列をチェックするクラスの第2弾サンプルです。
正規表現の書き方を変更しました。
何が違うか、確認してみてください。
正規表現の書き方を変更しました。
何が違うか、確認してみてください。
import java.util.regex.Pattern; public class StringUtil2 { /** * alphabetがアルファベットの場合に、trueを返す。 * * @param alphabet 文字列 * @return boolean true : アルファベット / false : アルファベット以外 */ public static boolean isAlphabet(String alphabet) { try { return (Pattern.compile("^[a-zA-Z]*$")).matcher(alphabet).matches(); } catch (Exception e) { return false; } } /** * characterが英数字の場合に、trueを返す。 * * @param character 文字列 * @return boolean true : 英数字 / false : 英数字以外 */ public static boolean isNumAlphabet(String character) { try { return (Pattern.compile("^[a-zA-Z0-9]*$")).matcher(character).matches(); } catch (Exception e) { return false; } } /** * numが数字の場合に、trueを返す。 * * @param num 文字列 * @return boolean true : 数字 / false : 数字以外 */ public static boolean isNum(String num) { try { return (Pattern.compile("^[0-9]*$")).matcher(num).matches(); } catch (Exception e) { return false; } } /** * markが半角記号の場合に、trueを返す。 * * @param mark 文字列 * @return boolean true : 半角記号 / false : 半角記号以外 */ public static boolean isMark(String mark) { try { return (Pattern.compile("^[ -/:-@\\[-\\`\\{-\\~]*$")).matcher(mark).matches(); } catch (Exception e) { return false; } } /** * characterが半角の場合に、trueを返す。 * * @param character 文字列 * @return boolean true : 半角 / false : 半角以外 */ public static boolean isOneByteChar(String character) { try { return (Pattern.compile("^[a-zA-Z0-9 -/:-@\\[-\\`\\{-\\~]*$")).matcher(character).matches(); } catch (Exception e) { return false; } } /** * kanaが半角カナの場合に、trueを返す。 * * @param kana 文字列 * @return boolean true : 半角カナ / false : 半角カナ以外 */ public static boolean isOneByteKana(String kana) { try { return (Pattern.compile("^[。-゚+]*$")).matcher(kana).matches(); } catch (Exception e) { return false; } } /** * hiraganaがひらがなの場合に、trueを返す。 * * @param hiragana 文字列 * @return boolean true : ひらがな / false : ひらがな以外 */ public static boolean isHiragana(String hiragana) { try { return (Pattern.compile("^[ぁ-ゞ]*$")).matcher(hiragana).matches(); } catch (Exception e) { return false; } } /** * katakanaがカタカナの場合に、trueを返す。 * * @param katakana 文字列 * @return boolean true : カタカナ文字 / false : カタカナ以外 */ public static boolean isKatakana(String katakana) { try { return (Pattern.compile("^[ァ-ヶ]*$")).matcher(katakana).matches(); } catch (Exception e) { return false; } } /** * kanjiが漢字の場合に、trueを返す。 * * @param kanji 文字列 * @return boolean true : 漢字 / false : 漢字以外 */ public static boolean isKanji(String kanji) { try { return (Pattern.compile("^[一-龠]*$")).matcher(kanji).matches(); } catch (Exception e) { return false; } } /** * zenkakuが全角の場合に、trueを返す。 * * @param kanji 文字列 * @return boolean true : 全角 / false : 全角以外 */ public static boolean isTwoByteChar(String zenkaku) { try { return (Pattern.compile("^[^ -~。-゚]*$")).matcher(zenkaku).matches(); } catch (Exception e) { return false; } } }
2011年6月13日月曜日
JAVA ListやMapや配列をStringへ変換(ログ表示用)
システム作っていると、Debug用のLogにListの内容や、Mapの内容を整形して出力したいときがでてくるんだよね。
そんなときに使えるよ。
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class StringUtils { @SuppressWarnings("unchecked") public static void main(String[] args) { List l = new ArrayList(); for (int i = 0; i < 100; i++) { l.add(Integer.toString(i)); } System.out.println(StringUtils.object2String(l, "")); System.out.println("----------"); Map m = new HashMap(); for (int i = 0; i < 10; i++) { Map map = new HashMap(); for (int j = 0; j < 10; j++) { map.put("key" + j, "val" + j); } l.add(map); m.put(i, map); } System.out.println(StringUtils.object2String(m, "")); System.out.println("----------"); System.out.println(StringUtils.object2String(l, "")); System.out.println("----------"); for (int i = 0; i < 2; i++) { List l2 = new ArrayList(l); l.add(l2); } Map map = new HashMap(); for (int i = 0; i < 10; i++) { List l3 = new ArrayList(); for (int j = 0; j < 10; j++) { l3.add(""+ i + "" + j); } map.put("key" + i, l3); } l.add(map); System.out.println(StringUtils.object2String(l, "")); System.out.println("----------"); l.add(new String[]{"arr1", "arr2", "arr3", "arr4", "arr5", "arr6", "arr7", "arr8", "arr9", "arr0"}); System.out.println(StringUtils.object2String(l, "")); } public static final String LINE_SEPARATOR = System.getProperty("line.separator"); public static final String INDENT = " "; public static final String BLANK = " "; public static final String COLON = ":"; public static final String LEFT_CURLY_BRACKET = "{"; public static final String RIGHT_CURLY_BRACKET = "}"; public static final String LEFT_SQUARE_BRACKET = "{"; public static final String RIGHT_SQUARE_BRACKET = "}"; @SuppressWarnings("unchecked") public static String object2String(Object obj, String indent) { StringBuilder sb = new StringBuilder(); sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); if (Iterable.class.isAssignableFrom(obj.getClass())) { sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT)); } else if (Map.class.isAssignableFrom(obj.getClass())) { sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT)); } else if (obj instanceof Object[]) { sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT)); } else { sb.append(obj); } sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); return sb.toString(); } @SuppressWarnings("unchecked") public static String iterator2String(Iterable it, String indent) { StringBuilder sb = new StringBuilder(); int index = 0; for (Object obj : it) { sb.append(indent); sb.append(StringUtils.LEFT_SQUARE_BRACKET); sb.append(StringUtils.BLANK); sb.append(index); sb.append(StringUtils.BLANK); sb.append(StringUtils.RIGHT_SQUARE_BRACKET); sb.append(StringUtils.BLANK); sb.append(StringUtils.COLON); sb.append(StringUtils.BLANK); if (Iterable.class.isAssignableFrom(obj.getClass())) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (Map.class.isAssignableFrom(obj.getClass())) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (obj instanceof Object[]) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else { sb.append(obj); } index++; sb.append(StringUtils.LINE_SEPARATOR); } return sb.toString(); } @SuppressWarnings("unchecked") public static String map2String(Map map, String indent) { StringBuilder sb = new StringBuilder(); for (Object obj : map.entrySet()) { Entry e = (Entry) obj; Object val = e.getValue(); sb.append(indent); sb.append(e.getKey()); sb.append(StringUtils.BLANK); sb.append(StringUtils.COLON); sb.append(StringUtils.BLANK); if (Iterable.class.isAssignableFrom(val.getClass())) { sb.append(val.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.iterator2String((Iterable) val, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (Map.class.isAssignableFrom(val.getClass())) { sb.append(val.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(map2String((Map) val, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (obj instanceof Object[]) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else { sb.append(val); } sb.append(StringUtils.LINE_SEPARATOR); } return sb.toString(); } @SuppressWarnings("unchecked") public static String array2String(Object[] arr, String indent) { StringBuilder sb = new StringBuilder(); int index = 0; for (Object obj : arr) { sb.append(indent); sb.append(StringUtils.LEFT_SQUARE_BRACKET); sb.append(StringUtils.BLANK); sb.append(index); sb.append(StringUtils.BLANK); sb.append(StringUtils.RIGHT_SQUARE_BRACKET); sb.append(StringUtils.BLANK); sb.append(StringUtils.COLON); sb.append(StringUtils.BLANK); if (Iterable.class.isAssignableFrom(obj.getClass())) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (Map.class.isAssignableFrom(obj.getClass())) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else if (obj instanceof Object[]) { sb.append(obj.getClass().getCanonicalName()); sb.append(StringUtils.BLANK); sb.append(StringUtils.LEFT_CURLY_BRACKET); sb.append(StringUtils.LINE_SEPARATOR); sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT)); sb.append(indent); sb.append(StringUtils.RIGHT_CURLY_BRACKET); } else { sb.append(obj); } index++; sb.append(StringUtils.LINE_SEPARATOR); } return sb.toString(); } }
2011年6月12日日曜日
Excel 指定したシートの指定行から最終入力行までクリア
Public Sub clear(sheetName As String, rowNum As Integer)
Application.ScreenUpdating = False
ThisWorkbook.Sheets(sheetName).Activate
With ActiveSheet
If .AutoFilterMode Then
Selection.End(xlToRight).Select
HeaderLastCol = Selection.Column
.Range(.Cells(rowNum, 1), .Cells(rowNum, HeaderLastCol)).Select
Selection.AutoFilter
End If
End With
If ActiveCell.SpecialCells(xlLastCell).Row < rowNum Then
Exit Sub
End If
ActiveSheet.Rows("1:" & ActiveCell.SpecialCells(xlLastCell).Row).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub
Application.ScreenUpdating = False
ThisWorkbook.Sheets(sheetName).Activate
With ActiveSheet
If .AutoFilterMode Then
Selection.End(xlToRight).Select
HeaderLastCol = Selection.Column
.Range(.Cells(rowNum, 1), .Cells(rowNum, HeaderLastCol)).Select
Selection.AutoFilter
End If
End With
If ActiveCell.SpecialCells(xlLastCell).Row < rowNum Then
Exit Sub
End If
ActiveSheet.Rows("1:" & ActiveCell.SpecialCells(xlLastCell).Row).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub
2011年6月11日土曜日
JAVA Stringをチェックするクラス
文字列をチェックするクラスのサンプルです。
これ以外にも必要なメソッドはたくさんあるけど、まずはこれくらい。
また、これと同じ処理を別の書き方もできるよ。
次回は、別の書き方で作成します。
これ以外にも必要なメソッドはたくさんあるけど、まずはこれくらい。
また、これと同じ処理を別の書き方もできるよ。
次回は、別の書き方で作成します。
import java.util.regex.Pattern; public class StringUtil { /** * strがnullか""(空文字)の場合に、trueを返す。 * * @param str 入力値 * @return boolean true : 入力無し / false : 入力有り */ public static boolean isEmpty(String str) { if (str == null || "".equals(str)) { return true; } return false; } /** * alphabetがアルファベットの場合に、trueを返す。 * * @param alphabet アルファベットの文字列 * @return boolean true : アルファベット / false : アルファベット以外 */ public static boolean isAlphabet(String alphabet) { try { return !(Pattern.compile("[^a-zA-Z]")).matcher(alphabet).matches(); } catch (Exception e) { return false; } } /** * characterが英数字の場合に、trueを返す。 * * @param character 英数字の文字列 * @return boolean true : 英数字 / false : 英数字以外 */ public static boolean isNumAlphabet(String character) { try { return !(Pattern.compile("[^a-zA-Z0-9]")).matcher(character).matches(); } catch (Exception e) { return false; } } /** * str1がstr2より大きい場合に、trueを返す。 * * @param str1 英数字の文字列1 * @param str2 英数字の文字列2 * @return boolean true : 文字列1が大きい / false : 文字列1が大きくない */ public static boolean charGreaterThan(String str1, String str2) { try { return str1.compareTo(str2) > 0; } catch (Exception e) { return false; } } /** * str1がstr2より小さい場合に、trueを返す。 * * @param str1 英数字の文字列1 * @param str2 英数字の文字列2 * @return boolean true : 文字列1が小さい / false : 文字列1が小さくない */ public static boolean charSmallerThan(String str1, String str2) { try { return str1.compareTo(str2) < 0; } catch (Exception e) { return false; } } /** * str1がstr2以上の場合に、trueを返す。 * * @param str1 英数字の文字列1 * @param str2 英数字の文字列2 * @return boolean true : 文字列1が以上 / false : 文字列1が以上ではない */ public static boolean charGreaterThanEqual(String str1, String str2) { try { return !StringUtil.charSmallerThan(str1, str2); } catch (Exception e) { return false; } } /** * str1がstr2以下の場合に、trueを返す。 * * @param str1 英数字の文字列1 * @param str2 英数字の文字列2 * @return boolean true : 文字列1が以下 / false : 文字列1が以下ではない */ public static boolean charSmallerThanEqual(String str1, String str2) { try { return !StringUtil.charGreaterThan(str1, str2); } catch (Exception e) { return false; } } /** * zenkakuが全角文字の場合に、trueを返す。 * * @param zenkaku 全角の文字列 * @return boolean true : 全角 / false : 全角以外 */ public static boolean isZenkaku(String zenkaku) { try { return !(Pattern.compile("[ -~]")).matcher(zenkaku).matches(); } catch (Exception e) { return false; } } /** * strがstrArrayに存在している場合に、indexを返す。 * * @param str 文字列 * @return int 0,1,2...n : strArrayに存在する / -1 : strArrayに存在しない */ public static int exist(String str, String[] strArray) { int count = 0; if (strArray == null) { return -1; } count = strArray.length; for (int i = 0; i < count; i++) { if (str.startsWith(strArray[i])) { return i; } } return -1; } }
2011年6月10日金曜日
Excel VBA ブックを開く際のエラー2
昨日は、存在しないファイルを指定した際のエラーを回避する方法について
書きましたが、今日は同一のファイル名を開く際のエラーを回避する方法について
調べました。
機能と同じように、FileSystemObjectを使って、ファイルパスからファイル名を
取得します。
取得したファイル名と同じファイルがWorkbooksに存在していないか確認する。
存在している場合は、終了する。
存在していない場合は、指定したファイルを開く。
試してみてください。
Dim fso As Object
Dim path As String
Dim filename As String
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:\参考資料.xls"
filename = fso.GetFileName(path)
For Each wb In Workbooks
If wb.Name = filename Then
MsgBox filename & "と同じファイル名のブックが開いています。"
Exit Sub
End If
Next wb
書きましたが、今日は同一のファイル名を開く際のエラーを回避する方法について
調べました。
機能と同じように、FileSystemObjectを使って、ファイルパスからファイル名を
取得します。
取得したファイル名と同じファイルがWorkbooksに存在していないか確認する。
存在している場合は、終了する。
存在していない場合は、指定したファイルを開く。
試してみてください。
Dim fso As Object
Dim path As String
Dim filename As String
path = "C:\参考資料.xls"
filename = fso.GetFileName(path)
If wb.Name = filename Then
MsgBox filename & "と同じファイル名のブックが開いています。"
Exit Sub
End If
Next wb
Set wb = Workbooks.Open(filename:=path, ReadOnly:=True)
2011年6月9日木曜日
Excel VBA ブックを開く際のエラー
ブックを開く、閉じるを知ったので色々使っていると、
エラーが発生することがあった。
理由を調べてみると、そもそも開こうとしているブックが
指定したパスに存在していなかったからだ。
存在チェックをしてから開いたほうがいいと思い、
チェックの方法について調べてみた。
チェックする方法は、いくつかあるみたいだけど、
今回は、FileSystemObjectで存在チェックをする。
Dim wb As Workbook
Dim fso As Object
Dim path As String
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:\参考資料.xls"
If fso.FileExists(path) Then
Set wb = Workbooks.Open(Filename:=path, ReadOnly:=True)
MsgBox "開いた"
wb.Close
Else
MsgBox path & "が存在しませんでした。"
End If
fso.FileExists(path) の部分がファイルの存在チェックをしている処理です。
簡単でした。
エラーが発生することがあった。
理由を調べてみると、そもそも開こうとしているブックが
指定したパスに存在していなかったからだ。
存在チェックをしてから開いたほうがいいと思い、
チェックの方法について調べてみた。
チェックする方法は、いくつかあるみたいだけど、
今回は、FileSystemObjectで存在チェックをする。
Dim wb As Workbook
Dim fso As Object
Dim path As String
Set fso = CreateObject("Scripting.FileSystemObject")
path = "C:\参考資料.xls"
If fso.FileExists(path) Then
Set wb = Workbooks.Open(Filename:=path, ReadOnly:=True)
MsgBox "開いた"
wb.Close
Else
MsgBox path & "が存在しませんでした。"
End If
fso.FileExists(path) の部分がファイルの存在チェックをしている処理です。
簡単でした。
2011年6月8日水曜日
JAVA 固定長ファイル改行コード挿入処理
固定長のファイルに改行コードを挿入するクラスです。
使用方法
第一引数fiは、入力ファイル
第二引数foは、出力ファイル
第三引数bCntは、改行を挿入する位置
public static void main(String[] args) {
}
を実装して使ってみてください。
使用方法
第一引数fiは、入力ファイル
第二引数foは、出力ファイル
第三引数bCntは、改行を挿入する位置
public static void main(String[] args) {
}
を実装して使ってみてください。
import java.util.regex.Pattern; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; public class InsertReturnCode { public boolean insertReturnCode(File fi, File fo, int bCnt){ BufferedInputStream bi = null; BufferedOutputStream bo = null; String line = null; if (fi == null || fo == null ) { System.out.println("パラメータに誤りがあります。"); return false; } else if (fi.isDirectory() || fo.isDirectory()) { System.out.println("ファイルではありません。"); return false; // } else if (!fi.canRead() || !fo.canWrite()) { // System.out.println("読み込みまたは、書き込みが出来ません。"); // return false; } else if (!fi.exists()) { System.out.println("入力ファイルが存在しません。"); return false; // } else if (fo.exists()) { // System.out.println("出力ファイルと同名のファイルが存在します。"); // return false; } else if (fi.getPath().equals(fo.getPath())) { System.out.println("入力ファイルと出力ファイルが同一のパスです。"); return false; } try { byte[] b = new byte[bCnt]; int i = 0; bi = new BufferedInputStream(new FileInputStream(fi)); bo = new BufferedOutputStream(new FileOutputStream(fo)); while (bi.read(b, 0, bCnt) > -1) { bo.write(b, 0 ,bCnt); bo.write(new byte[]{0,10}); i++; } bi.close(); bo.close(); } catch (FileNotFoundException e) { System.out.println("ファイルが見つかりません。"); return false; } catch (UnsupportedEncodingException e) { System.out.println("文字コードがサポートされていません。"); return false; } catch (IOException e) { System.out.println("入出力でエラーが発生しました。"); return false; } return true; } }
2011年6月7日火曜日
Excel VBA ブックを閉じる方法3
昨日の続きで、ブックの閉じる方法についてです。
引数がいくつかあるようなので、調べてみました。
SaveChanges
閉じるブックに変更がなければ、この引数は無視されます。
ブックに変更があり、開いている他のウィンドウ(別アプリケーション)
にブックが表示されている場合、この引数は無視されます。
ブックに変更があり、マクロを実行しているウィンドウにブックが表示されている場合、
この引数は、次のとおり、保存するかどうかを指定します。
Trueの場合、ブックの変更が保存されます。
ブックに関連付けられたファイル名がない場合、FileName が使用されます。
FileName を省略すると、ファイル名を入力するよう求められます。
False の場合、ブックの変更は保存されません。
省略した場合、変更を保存するかどうかを確認するダイアログ ボックスが表示されます。
Filename
このファイル名で変更を保存します。
RouteWorkbook
ブックを次の受信者にルーティングする必要がない場合 (回覧先がない場合、
または既にルーティングされている場合)、この引数は無視されます。
それ以外の場合は、次のリストのとおり、Microsoft Office Excel がブックをルーティングします。
True の場合、ブックを次のブックに移動(アクティブ化)します。
False の場合、ブックを移動しません(アクティブ化されているブックのままにします)。
省略した場合、ブックを送信するかどうかを確認するダイアログ ボックスが表示されます。
引数がいくつかあるようなので、調べてみました。
SaveChanges
閉じるブックに変更がなければ、この引数は無視されます。
ブックに変更があり、開いている他のウィンドウ(別アプリケーション)
にブックが表示されている場合、この引数は無視されます。
ブックに変更があり、マクロを実行しているウィンドウにブックが表示されている場合、
この引数は、次のとおり、保存するかどうかを指定します。
Trueの場合、ブックの変更が保存されます。
ブックに関連付けられたファイル名がない場合、FileName が使用されます。
FileName を省略すると、ファイル名を入力するよう求められます。
False の場合、ブックの変更は保存されません。
省略した場合、変更を保存するかどうかを確認するダイアログ ボックスが表示されます。
Filename
このファイル名で変更を保存します。
RouteWorkbook
ブックを次の受信者にルーティングする必要がない場合 (回覧先がない場合、
または既にルーティングされている場合)、この引数は無視されます。
それ以外の場合は、次のリストのとおり、Microsoft Office Excel がブックをルーティングします。
True の場合、ブックを次のブックに移動(アクティブ化)します。
False の場合、ブックを移動しません(アクティブ化されているブックのままにします)。
省略した場合、ブックを送信するかどうかを確認するダイアログ ボックスが表示されます。
2011年6月6日月曜日
Excel VBA ブックを閉じる方法2
昨日はファイル(ブック)を閉じる方法について調べたが、
保存確認ダイアログが表示されて閉じれない場合があったので、
ダイアログを表示しないで閉じる方法を調べた。
Workbooks.Close(False)
で閉じるらしい。
Dim wb As Workbook
Set wb = Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
MsgBox "開いた"
'編集処理
wb.Sheets(1).Cells(1, 1).Value = "test"
wb.Close(False)
ダイアログを表示せずに閉じることに成功!!!
他の引数もあるみたいなので、それはまた明日ってことで。
保存確認ダイアログが表示されて閉じれない場合があったので、
ダイアログを表示しないで閉じる方法を調べた。
Workbooks.Close(False)
で閉じるらしい。
Dim wb As Workbook
Set wb = Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
MsgBox "開いた"
'編集処理
wb.Sheets(1).Cells(1, 1).Value = "test"
wb.Close(False)
ダイアログを表示せずに閉じることに成功!!!
他の引数もあるみたいなので、それはまた明日ってことで。
2011年6月5日日曜日
Excel VBA ブックを閉じる方法
昨日まではファイル(ブック)を開く方法について調べたので、
開いたままだと邪魔になるので、閉じる方法について調べた。
Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
上記でブックを開いたが…、どうやって閉じるの?
Workbooks.Close
を使ったところ、えらーになってしまった…。
おいおい…、一体どうやって…。と四苦八苦しながら調べてみたところ
Dim wb As Workbook
Set wb = Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
MsgBox "開いた"
wb.Close
で開いて閉じることに成功!!!
開いたままだと邪魔になるので、閉じる方法について調べた。
Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
上記でブックを開いたが…、どうやって閉じるの?
Workbooks.Close
を使ったところ、えらーになってしまった…。
おいおい…、一体どうやって…。と四苦八苦しながら調べてみたところ
Dim wb As Workbook
Set wb = Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
MsgBox "開いた"
wb.Close
で開いて閉じることに成功!!!
2011年6月4日土曜日
Excel VBA ブックを開く方法2
昨日の続きで、Workbook.Openに引数についてまとめた。
色々、調べて自分なりにまとめてみたが…、
分かりにくい引数もある。
これだけの引数があるみたい。
もしかするとExcelのバージョンによっては、もっとあるのかも?
Workbook Open(
Filename,
UpdateLinks,
ReadOnly,
Format,
Password,
WriteResPassword,
IgnoreReadOnlyRecommended,
Origin,
Delimiter,
Editable,
Notify,
Converter,
AddToMru)
FileName
開くブックのファイル名を指定する。
必須
UpdateLinks
リンクの更新方法を指定する。
省略可能
○;更新、×:更新しない
値:外部参照:リモート参照
0:×:×
1:○:×
2:×:○
3:○:○
※そもそも外部参照とリモート参照って何よ?
外部参照とは、ほかのブックへの参照のこと。
リモート参照とは、ほかのアプリケーションのデータへの参照のこと。
ReadOnly
読み取り専用で開く場合は、Trueを設定する。
初期値(未設定の場合)は、Falseになる。
省略可能
Format
テキストファイルを開く場合に区切り文字を指定する。
省略可能
Password
パスワードで保護されたブックを開くために必要なパスワードを指定する。
パスワードが必要なブックを開く際に省略すると、パスワード入力用のダイアログボックスを表示する。
省略可能
パスワードが必要なブックを開く際に省略すると、パスワード入力用のダイアログボックスを表示する。
省略可能
IgnoreReadOnlyRecommended
「読み取り専用を推奨する」を設定して保存されたブックを開くときに、読み取り専用を推奨するメッセージを表示しないようにする場合に、Trueを指定する。
省略可能
Origin
開くファイルがテキストファイルの場合に、どのような形式のテキストファイルかを指定する。
コードページ(文字コード?)とCR/LF(改行コード)を正しく変換するために必要になる。
使用できる定数は、XlPlatform列挙型の xlMacintosh、xlWindows、xlMSDOS のいずれからしい。
この引数を省略すると、使用しているOSの形式が使われるらしい。
省略可能
※個人的には、あまり使用するケースが内容に思うがどうなのだろうか。
Delimiter
開くファイルがテキストファイルで、引数Formatに6が設定されている場合、区切り記号として使う文字を指定する。
タブの場合はChr(9)、コンマの場合は ","、セミコロンの場合は ";" を指定する。
任意の文字を指定することもできるが、文字列を指定した場合は、最初の文字だけが使われる。
省略可能
Editable
開くファイルがMicrosoft Excel 4.0のアドインの場合に、Trueを指定すると、アドインをウィンドウとして表示します。
この引数にFalseを指定、または、省略した場合、アドインは非表示の状態で開きます。
ウィンドウとして表示されません。
この引数は、Microsoft Excel 5.0 以降のアドインには適用できません。
開くファイルがExcel のテンプレートの場合に、True を指定すると、テンプレートを編集用に開きます。
False を指定した場合は、、指定されたテンプレートを基にした、新しいブックを開きます。
初期値(未設定の場合)は、Falseになる。
省略可能
Notify
開こうとしたファイルが読み取り/書き込みモードで開けない場合に、ファイルを通知リストに追加する場合は、Trueを指定する。
ファイルは読み取り専用モードで開かれ、通知リストに追加されます。
ブックが編集可能な状態になった時点で、ユーザーにその旨が通知される。
ファイルが開けない場合に、通知を行わずにエラーを発生させる場合は、Falseを指定するか省略する。
省略可能
Converter
ファイルを開くときに、最初に使うファイルコンバータのインデックス番号を指定する。
指定したファイル コンバータでファイルを変換できない場合は、他のすべてのファイル コンバータでの変換が試みられます。
指定する番号は、FileConvertersプロパティで取得されるファイルコンバータの番号です。
省略可能
AddToMRU
Trueを設定した場合、最近使用したファイルの一覧に開くブックが追加されます。
初期値(未設定の場合)は、Falseになる。
省略可能
色々、調べて自分なりにまとめてみたが…、
分かりにくい引数もある。
これだけの引数があるみたい。
もしかするとExcelのバージョンによっては、もっとあるのかも?
Workbook Open(
Filename,
UpdateLinks,
ReadOnly,
Format,
Password,
WriteResPassword,
IgnoreReadOnlyRecommended,
Origin,
Delimiter,
Editable,
Notify,
Converter,
AddToMru)
FileName
開くブックのファイル名を指定する。
必須
UpdateLinks
リンクの更新方法を指定する。
省略可能
○;更新、×:更新しない
値:外部参照:リモート参照
0:×:×
1:○:×
2:×:○
3:○:○
※そもそも外部参照とリモート参照って何よ?
外部参照とは、ほかのブックへの参照のこと。
リモート参照とは、ほかのアプリケーションのデータへの参照のこと。
ReadOnly
読み取り専用で開く場合は、Trueを設定する。
初期値(未設定の場合)は、Falseになる。
省略可能
Format
テキストファイルを開く場合に区切り文字を指定する。
省略可能
Password
パスワードで保護されたブックを開くために必要なパスワードを指定する。
パスワードが必要なブックを開く際に省略すると、パスワード入力用のダイアログボックスを表示する。
省略可能
WriteResPassword
書き込みを保護されたブックを開くために必要なパスワードを指定する。パスワードが必要なブックを開く際に省略すると、パスワード入力用のダイアログボックスを表示する。
省略可能
「読み取り専用を推奨する」を設定して保存されたブックを開くときに、読み取り専用を推奨するメッセージを表示しないようにする場合に、Trueを指定する。
省略可能
開くファイルがテキストファイルの場合に、どのような形式のテキストファイルかを指定する。
コードページ(文字コード?)とCR/LF(改行コード)を正しく変換するために必要になる。
使用できる定数は、XlPlatform列挙型の xlMacintosh、xlWindows、xlMSDOS のいずれからしい。
この引数を省略すると、使用しているOSの形式が使われるらしい。
省略可能
※個人的には、あまり使用するケースが内容に思うがどうなのだろうか。
開くファイルがテキストファイルで、引数Formatに6が設定されている場合、区切り記号として使う文字を指定する。
タブの場合はChr(9)、コンマの場合は ","、セミコロンの場合は ";" を指定する。
任意の文字を指定することもできるが、文字列を指定した場合は、最初の文字だけが使われる。
省略可能
開くファイルがMicrosoft Excel 4.0のアドインの場合に、Trueを指定すると、アドインをウィンドウとして表示します。
この引数にFalseを指定、または、省略した場合、アドインは非表示の状態で開きます。
ウィンドウとして表示されません。
この引数は、Microsoft Excel 5.0 以降のアドインには適用できません。
開くファイルがExcel のテンプレートの場合に、True を指定すると、テンプレートを編集用に開きます。
False を指定した場合は、、指定されたテンプレートを基にした、新しいブックを開きます。
初期値(未設定の場合)は、Falseになる。
省略可能
開こうとしたファイルが読み取り/書き込みモードで開けない場合に、ファイルを通知リストに追加する場合は、Trueを指定する。
ファイルは読み取り専用モードで開かれ、通知リストに追加されます。
ブックが編集可能な状態になった時点で、ユーザーにその旨が通知される。
ファイルが開けない場合に、通知を行わずにエラーを発生させる場合は、Falseを指定するか省略する。
省略可能
ファイルを開くときに、最初に使うファイルコンバータのインデックス番号を指定する。
指定したファイル コンバータでファイルを変換できない場合は、他のすべてのファイル コンバータでの変換が試みられます。
指定する番号は、FileConvertersプロパティで取得されるファイルコンバータの番号です。
省略可能
Trueを設定した場合、最近使用したファイルの一覧に開くブックが追加されます。
初期値(未設定の場合)は、Falseになる。
省略可能
2011年6月3日金曜日
Excel VBA ブックを開く方法
Excelのマクロを使っていると、他のファイル(ブック)を
開いて、情報(データ)などを参照したいことがよくあるので
調べてみた。
Workbooks.Open "C:\参考資料.xls"
開くだけなら、上記の内容でOKだけど、読み取り専用で
開きたいこともしばしばあるのでこちらも調べてみた。
Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
上記以外にもパラメータがあるので、別途書いておくことにしようと思う。
開いて、情報(データ)などを参照したいことがよくあるので
調べてみた。
Workbooks.Open "C:\参考資料.xls"
開くだけなら、上記の内容でOKだけど、読み取り専用で
開きたいこともしばしばあるのでこちらも調べてみた。
Workbooks.Open Filename:="C:\参考資料.xls", ReadOnly:=True
上記以外にもパラメータがあるので、別途書いておくことにしようと思う。
2011年6月2日木曜日
Excel VBA フォルダー選択ダイアログ表示関数
フォルダ選択ダイアログを表示したいときに
下記の関数を呼び出すと開きます。
引数(パラメータ)にフォルダのパスを渡すと、
指定したフォルダを表示する。
戻り値は、選択したフォルダのパスになります。
Public Function folderSelect(fpath As String)
Set FS = CreateObject("Scripting.FileSystemObject")
folder = fpath
With Application.FileDialog(msoFileDialogFolderPicker)
If fpath <> "" And FS.FolderExists(fpath) Then
.InitialFileName = fpath
End If
If .Show = True Then
folder = .SelectedItems(1)
End If
End With
folderSelect = folder
End Function
下記の関数を呼び出すと開きます。
引数(パラメータ)にフォルダのパスを渡すと、
指定したフォルダを表示する。
戻り値は、選択したフォルダのパスになります。
Public Function folderSelect(fpath As String)
Set FS = CreateObject("Scripting.FileSystemObject")
folder = fpath
With Application.FileDialog(msoFileDialogFolderPicker)
If fpath <> "" And FS.FolderExists(fpath) Then
.InitialFileName = fpath
End If
If .Show = True Then
folder = .SelectedItems(1)
End If
End With
folderSelect = folder
End Function
2011年6月1日水曜日
Excel VBA ファイルを開いたときにマクロを実行する
ファイルを開いた時点で処理を行いたい場合は、
Visual Basic Editorを開き、プロジェクトエクスプローラー(画面左側)の
ThisWorkbookをダブルクリックする。
コードエディター(画面右側)に下記の内容を記述する。
Private Sub Workbook_Open()
End Sub
Visual Basic Editorを開き、プロジェクトエクスプローラー(画面左側)の
ThisWorkbookをダブルクリックする。
コードエディター(画面右側)に下記の内容を記述する。
Private Sub Workbook_Open()
End Sub
例えばファイルを開いた際に1シート目のシート名を変更したい場合は、
Private Sub Workbook_Open()
ThisWorkbook.Sheets(1).Name = "変更後シート名"
End Sub
ThisWorkbook.Sheets(1).Name = "変更後シート名"
End Sub
登録:
投稿 (Atom)