asaworks

自分の技術備忘録と雑談

【フリーソフト】テキストファイルの差分表示WinMerge

f:id:asa-works:20170826105018p:plain

フリーソフト】テキストファイルの差分表示WinMerge

ファイルの差分チェックの際に、フリーソフトWinMergeを利用しています。
フリーソフトですが余分な機能もなく、使い方も簡単。

私はコチラ↓からダウンロードしました。

forest.watch.impress.co.jp

ちなみにマイ環境はWindows7 SP1 32bitです。

こんなことができるぞWinMerge

比べたいファイルをWinMerge内にドラッグします。
ファイルは3つまで比較できる模様。

f:id:asa-works:20170826105210p:plain


差異がなかったときはこのような表示

f:id:asa-works:20170826105135p:plain

差異があった場合は、差異があった箇所に色がつきます

行数に差異があった場合の表示

f:id:asa-works:20170826105149p:plain

文字数に差異があった場合の表示

f:id:asa-works:20170826105225p:plain


さらにさらに便利機能としてファイルのマージができます

f:id:asa-works:20170826105235p:plain


日常でこれだけ機能があればじゅうぶん。ってことでオススメフリーソフトとして
紹介いたしました!

【Windows】同期してファイル起動するバッチ

f:id:asa-works:20161013115159p:plain

Windows】同期してファイル起動するバッチ

バッチファイルでシステム(access)を起動する備忘録。
だいたい汎用2パターンでまかなってます。


Case1 常に共有フォルダ(例としてZドライブとする)からローカルに上書きコピーし、ローカルのファイルを開く
▼DBとAPを分けている場合、こちらを利用しています。
ユーザーに常に新しいバージョンを提供できるので、利用頻度が高いです。

@echo off
echo testDBを開いています・・・
SET FILE1="Z:\share\testsystem\testDB.mdb"
SET FILE2="C:\Users\testuser\Desktop\testsystem\testDB.mdb"
    copy /Y %FILE1% %FILE2%
    start "" %FILE2%
exit /B


Case2 FileAとFileBの更新タイムスタンプを確認、新しいほうと同期を取り、
開くのはローカルファイル
▼Case1とは違い、ひとつのファイルで簡潔している場合、こちらを利用しています。
利用頻度の高いシステムや複数人で使う場合、データ不整合が起きる可能性が多いので注意!ちょっと使い勝手が悪いかも。

@echo off
echo testDBを開いています・・・
SET FILE1="Z:\share\testsystem\testDB.mdb"
SET FILE2="C:\Users\testuser\Desktop\testsystem\testDB.mdb"
REM 更新日時
SET TIMESTAMP1=""
SET TIMESTAMP2=""
REM 更新日時取得
    FOR %%a IN (%FILE1%) DO SET TIMESTAMP1=%%~ta
    FOR %%b IN (%FILE2%) DO SET TIMESTAMP2=%%~tb
REM 更新日時比較
    IF "%TIMESTAMP1%" == "%TIMESTAMP2%" (
    REM 同じ
        start "" %FILE1%)
    ELSE (
        IF "%TIMESTAMP1%" GTR "%TIMESTAMP2%" (
        REM ファイル1の方が新しい
            start "" %FILE1%)
        ELSE (
        REM ファイル2の方が新しい
            copy /Y %FILE2% %FILE1%
            start "" %FILE1%
            )
        )
exit /B


Case2は色々と課題アリ。一人で作業するファイルに使ってることが多いです。
Case1を利用するためにAccessといえど、APとDBを分けておくほうが
メンテしやすくて好みだなぁ~~~

【Excel】使ったことのない機能を使ってみる ~第二回 色々クリアできる機能編~

f:id:asa-works:20161107230811p:plain

Excel】使ったことのない機能を使ってみる ~第二回 色々クリアできる機能編~
ハイパーリンクの削除/書式のクリア/数式と値のクリア/コメントのクリア(Excel2010にて)

今回、偶然発見した機能で便利なものがあったのでメモ。

ハイパーリンクの削除
コメントのクリア

このあたり、メニューをさがしてあれこれしてって結構面倒だったのですが、
ボタン一発でできることに気づきました。

まずメニューはコチラ
「ホーム」タブの「編集」にある消しゴムマークみたいなボタンです。

f:id:asa-works:20170816130547j:plain

 

↓のように、リンクつけなくていいのにつけちゃうおせっかいなExcelですが、
例としてこのリンクを削除したいと思います。

 

f:id:asa-works:20170816130508j:plain

 

対象のセルを選んで、消しゴムマークを押すとメニューが出てきます。
今回は「ハイパーリンクの削除」で。

 

f:id:asa-works:20170816130516j:plain

 

ハイ。ハイパーリンクが削除されました。

 

f:id:asa-works:20170816130641j:plain

 

今まで知らなかったことに対して、損した気分になりました(^^;)
もういちど、クリアのメニューはこんなかんじ↓

 

f:id:asa-works:20170816130659j:plain

 

これを呼び出すショートカットキーはないようですが、
マウスを使わないとすれば
Alt+H→Eでこのメニューが表示されるようです。

 

 

【VBA】FileSystemObjectオブジェクトの使い方とよく利用するメソッド

f:id:asa-works:20161013113815p:plainf:id:asa-works:20161107230811p:plain

VBA】FileSystemObjectオブジェクトの使い方とよく利用するメソッド

FileSystemObjectオブジェクトの使い方とよく使うメソッドの備忘録です。

FileSystemObjectを利用することで、VBAの中でWindowsのファイル操作、フォルダ操作が簡単になります。

 

FileSystemObjectオブジェクトの使い方

変数宣言、オブジェクト作成

Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")

よく利用するメソッド

ファイルの移動

objFSO.MoveFile <移動元ファイルパス>, <移動先ファイルパス>, True←Trueにすると上書き ↑MoveFileをmoveFolderにするとフォルダの移動となる

ファイルのコピー

objFSO.CopyFile <コピー元ファイルパス>, <コピー先ファイルパス>, True←Trueにすると上書き ↑CopyFileをcopyFolderにするとフォルダのコピーとなる

ファイルの存在確認

myFSO.FileExists<調べたいファイルのパス> 特定のフォルダの中を調べたいときなどは*(アスタリスク)も利用できる。 例:objFSO.FileExists("C:\Users\user\Documents\test\*.xls") FileExistsをFolderにするとフォルダの存在確認となる。この場合も*は利用可能。

ファイルの削除

objFSO.DeleteFile <削除対象ファイルパス>, True←Trueにすると読み取り専用ファイルも削除 DeleteFileをDeleteFolderにするとフォルダ削除に。

ファイルのパスの連結

objFSO.BuildPath(<連結パス1>, <連結ファイル名>) 文字列連結ではなく、BuildPathを利用する利点として、連結する間の「¥」を必要に応じて調整してくれるらしい。地味に便利。

終了時

Set objFSO = Nothing

【Access】ユニオンクエリで構造の違うテーブルを結合する

f:id:asa-works:20161013113815p:plain

Access】ユニオンクエリで構造の違うテーブルを結合する

以下のような構造の違うテーブルをユニオンクエリで結合する方法

※データは架空の人物のデータです。

f:id:asa-works:20170713171424j:plain

f:id:asa-works:20170713171435j:plain

両テーブルに同じ列が存在しなければならない為、存在しない列を「NULL」で補います。

 

念のためUNIONとUNION ALLのおさらい
UNION → 重複行を除外
UNION ALL → テーブルを上から順に結合(下の文だと結果の並びがT1↓T2の並びになる)

重複チェックが発生しない分、UNION ALLのほうが処理が早い

 

列名は1番目のテーブルSELECTからもってくるので「NULL as 列名」で列名をつけてあげないと「Exprxxxx」になってしまいます。

以下、UNIONとUNION ALLのSQL文と結果

SELECT T1.Name,T1.Name_furi,T1.Mail,T1.TEL,T1.Keiyaku,NULL as curry
FROM T_Renraku as T1
UNION
Select T2.Name, T2.Name_furi,NULL,NULL,NULL,T2.curry
FROM T_curry as T2;

f:id:asa-works:20170713171710j:plain

SELECT T1.Name,T1.Name_furi,T1.Mail,T1.TEL,T1.Keiyaku,NULL as curry
FROM T_Renraku as T1
UNION ALL
Select T2.Name, T2.Name_furi,NULL,NULL,NULL,T2.curry
FROM T_curry as T2;

f:id:asa-works:20170713171749j:plain