2011年5月30日月曜日

Excel VBA マクロ実行時の画面のチラツキをなくす方法

マクロを実行している際に、画面がチラチラして
気になるので制御できないか調べてみた。

マクロの Sub または、 Function を書いた行の次の行へ

Application.ScreenUpdating = False

を記述する。

チラツキがなくなります。

マクロが動いている間は、画面の更新を行わないという
設定みたいです。

2011年5月29日日曜日

Excel VBA セルの色を変更

A1セルの色を赤くする方法

// RGB関数を使用して設定
Range("A1").Interior.Color = RGB(255, 0, 0)
// ColorIndexを使用して設定
Range("A1").Interior.ColorIndex = 3

2011年5月28日土曜日

Excel VBA 最終行の取得方法

最終行の番号を取得する方法
ActiveSheet.Cells(ActiveSheet.Cells.Rows.Count, 1).End(xlUp).Row

2011年5月27日金曜日

JAVA ファイル分割処理

ファイルを指定した行数で分割するクラスです。
大きなサイズのファイルとか、テキストエディターで
開けなかったりする場合に、使用すると便利です。

public static void main(String[] args) {
}
を実装して使ってみてください。


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class DivideFileClass {
    public boolean divideFile(File fi, int row) {
        return this.divideFile(fi, row, "UTF-8", "UTF-8");
    }
    public boolean divideFile(File fi, int row, String iCode, String oCode) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        InputStreamReader isr = null;
        OutputStreamWriter osw = null;
        String line = null;
        int count = 0;
        int fileNo = 1;
        try {
            fis = new FileInputStream(fi);
            isr = new InputStreamReader(fis, iCode);
            br = new BufferedReader(isr);
            fos = new FileOutputStream(fi.getPath() + String.valueOf(fileNo));
            osw = new OutputStreamWriter(fos, oCode);
            bw = new BufferedWriter(osw);
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
                if (count == row) {
                    bw.close();
                    fileNo++;
                    fos = new FileOutputStream(fi.getPath() + String.valueOf(fileNo));
                    osw = new OutputStreamWriter(fos, oCode);
                    bw = new BufferedWriter(osw);
                    count = 0;
                }
                count++;
            }
            bw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

2011年5月26日木曜日

JAVA ファイル結合処理

複数のテキストファイルを1つのファイルにするクラスです。
ツールとして作成しているため、効率とか考えてません。

public static void main(String[] args) {
}
を実装して使ってみてください。


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class ConcatFileClass {
    /**
     * 指定されたディレクトリ(dir)配下のファイルを1つのファイル(f)に結合します。
     * @param dir File
     * @return boolean true : succeeded, false : failed
     */
    public boolean execute(File dir, File f) {
        return this.execute(dir, f, "SJIS", "SJIS");
    }
    public boolean execute(File dir, File f, String fic, String foc) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        File[] files = null;
        String line = null;
        int count = 0;
        if (dir == null || f == null) {
            System.out.println("パラメータに誤りがあります。");
            return false;
        } else if (dir.isFile()) {
            System.out.print(dir.toString());
            System.out.println("は、ディレクトリではありません。");
            return false;
        } else if (f.isDirectory()) {
            System.out.print(f.toString());
            System.out.println("は、ファイルではありません。");
            return false;
//      } else if (f.canWrite()) {
//          System.out.print(f.toString());
//          System.out.println("は、書き込み可能ファイルではありません。");
//          return false;
        } else if (!dir.exists()) {
            System.out.println("ディレクトリが存在しません。");
            return false;
        }
        try {
            files = dir.listFiles();
            if (files == null || files.length == 1) {
                System.out.println("結合するファイルが存在しません。");
                return false;
            }
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), foc));
            count = files.length;
            for (int i = 0; i < count; i++) {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(files[i]), fic));
                while ((line = br.readLine()) != null) {
                    bw.write(line);
                    bw.newLine();
                }
                br.close();
            }
            bw.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年5月25日水曜日

JAVA ファイルの文字コード変換

ファイルの文字コードを変換するクラスです。
ツールとして作成しているため、効率とか考えてません。

public static void main(String[] args) {
}
を実装して使ってみてください。


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class ChangeCodeClass {
    /**
     * 入力ファイル(input)の文字コード(fic)を文字コード(foc)で出力ファイル(output)を作成する
     * @param fi     input file
     * @param fic input file's code
     * @param fo     output file
     * @param foc output file's code
     * @return boolean true : succeeded, false : failed
     */
    public boolean changeCode(File fi, String fic, File fo, String foc) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        String line = null;
        if (fi == null || fo == null || fic == null || fic.equals("") || foc == null || foc.equals("")) {
            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 {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(fi), fic));
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fo), foc));
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
            bw.close();
            br.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年5月24日火曜日

Windows フォルダの権限を確認したい場合のコマンド

[windowsボタン] + R

ファイル名を指定して実行ダイアログが表示される。

cmd

と入力し、Enter!!

コマンドプロンプトが立ち上がるので

cd "移動しだいパスを指定"

for /F %A in ('dir /b /ad') do cacls "%A" /C