質問編集履歴

1

forestfield

forestfield score 14

2016/05/07 13:12  投稿

【Excelマクロ】ファイルの最終文字取得・Excelの差分表示
Excelのマクロについて2つ教えてください。
<1>
ボタンを押したら特定のセルに入力した値がcsvファイルの末尾に1行追記されるマクロを作っています。
csvファイルの一番最後の文字が改行コードでないと直前の行に続けて記入されてしまうのですが、これをチェックする場合
・一度読み取りモードでcsvファイルを開く
・ファイルの最終行までよみこむ
・最後の文字を確認する
・ファイルを閉じる
・csvファイルを追記モードで開く
・最後が改行コードじゃなかった場合、改行コードを追記する
・入力値を追記する
・ファイルを閉じる
という手順しかないのでしょうか?
もっとスマートな方法、理想的な方法はありますか?
FileSystemObjectにもTextStreamにもファイルの最後の文字を取得するなんて都合のいい関数は無いようでした。
<2>
複数のExcelファイルの差分を表示させるマクロを作る場合、使用者に分かりやすいのはどういった方法でしょうか。最新ファイルが他のファイルの内容とどう違うのかを分かりやすくさせたいです。
各Excelファイルのファイル名は「固定_日付_時間」、シート数は1シート。
各Excelファイルのファイル名は「固定文字列_日付_時間」、シート数は1シート。
内容は列数、行数共に増減する可能性のある表です。
現時点では
・マクロブックと同階層にある当日日付のExcelファイルをDir関数で取得
・マクロブックに各Excelファイルをシート別にCopyしてフィルタを解除
・コピーしたシート名をコピー元ファイル名の時間にする
・最も列数のあるシート、行数のあるシートから比較範囲を決定
・最も新しい時間のシートを基準に1セルずつ他のシートと比較
・値が同じ場合は最新シートの該当セルを白くぬる
・値が違う場合は最新シートの該当セルを赤くぬり、対するシート名のコメントを付与
で考えています。
もっとスマートな方法、理想的な方法はありますか?
Excelのバージョンは2010です。
他に必要な情報があれば聞いてください。
宜しくお願いします。
  • VBA

    5190 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    4182 questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • マクロ

    914 questions

    定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る