MW211 EXIT

devlog
Windows/VirtualStore
2015年07月31日
秀丸エディタでApacheの設定ファイルを編集しようとして
以下を開いて書き込んだ。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf │
└──────────────────────────────────────┘

エラーなく書き込めて、再度読み出しもできて、書き込んだ内容も反映している。

しかしながら、その設定が効かない。

実は、以下のファイルに書き込みを行って(そして読み込みを行って)いるのだ。
┌──────────────────────────────────────┐
│C:\Users\(ユーザ)\AppData\Local\VirtualStore                                │
│   \Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf│
└──────────────────────────────────────┘

つまり、反映させたいファイルには反映できていなかったのだ。

これは、WindowsVista以降に実装された機能で
システムファイルを安易に破壊させないための措置とのこと。

アドミン権限でも同じ。

ということで、編集したい場合(効果を出したい場合)には
「メモ帳」(管理者として実行で)を使いましょう。
分類:Windows
TortoiseSVN/フィル名にアスタリスクを含む場合
2015年07月30日
TortoiseSVNで、ファイル名に「*」(アスタリスク)が混じっているものを
チェックアウトしようとした場合、
Windowsファイルとしても使用できないのはもちろんのこと
何よりSubversionの内部のSQL文で不都合が起きてしまうためエラーとなる。
しかも、クリーンアップも効かなくなる。

とりあえずどうしようもないようだ。
ということでチェックアウトしたファイルをルートフォルダに遡って全削除。
そして、ルートフォルダを新たに設けて、改めてチェックアウト。
と、そのまま実行してしまうと再びエラーとなるだけ。
ここで、一工夫。

チェックアウトダイアログにて「チェックアウトする深さ」の
「項目を選択」ボタンを押下し、
問題のファイル(ファイル名にアスタリスクを含むもの)のみチェックをはずす。
すると「個別に深さを指定」になるので、その状態でチェックアウトを実行する。

もちろんだが、問題のファイル(ファイル名にアスタリスクを含むもの)は
チェックアウトできないので、更新もできない。
Windows上で更新はそもそもできないということ。
分類:SVN
TortoiseSVN/.svnファイルの見つけ方
2015年07月29日
Subversionの管理ファイル「.svn」は隠しファイルで
うっかり違う環境にそのままコピーしてしまうと
その環境を破壊してしまうという厄介なものだ。

で、コピー前にこれらを一掃して、純粋なファイルのみをコピーしたいものだ。

そこで、「.svn」ファイルの見つけ方。

以下でOK。
┌──────────────────────────────────────┐
│dir /b/s|find ".svn"                                                        │
└──────────────────────────────────────┘

誤検出がひどいようなら、隠しファイルに絞っての検索でもよい。
┌──────────────────────────────────────┐
│dir /b/s/ah|find ".svn                                                      │
└──────────────────────────────────────┘
分類:SVN
Thunderbird/灰色文字のフォルダ
2015年07月28日
IMAP環境で、(処理中に終了などして)同期に失敗した場合
灰色文字のフォルダが現れる。

以下の組み合わせとなる

  (1) IMAPメールサーバ側にあって、Thunderbird側にない場合
      →表示されない
  (2) Thunderbird側にあって、IMAPメールサーバ側にない場合
      →灰色文字のフォルダとなる

これを解消するには、ツリー上のアカウント(受信トレイの親フォルダ)の
右クリックメニューから、「購読」を選び、「INBOX」を展開し
そこに表示されるフォルダのチェック状態を是正してあげればよい。

  (1) チェックなしからチェックありへ変更
  (2) チェックありからチェックなしへ変更
分類:Thunderbir
ExcelVBA/ブックを閉じる
2015年07月27日
基本は以下。
┌──────────────────────────────────────┐
│ブック.Close                                                                │
└──────────────────────────────────────┘

但し、保存しますか?とかクリップボードをクリアしますか?とか
メッセージが出てしまうので、そういうので止めないで、自動化したい場合には、
その区間のメッセージを抑止する。
┌──────────────────────────────────────┐
│Application.DisplayAlerts = False                                           │
│ブック.Close                                                                │
│Application.DisplayAlerts = True                                            │
└──────────────────────────────────────┘

基本的に保存しないで閉じる(破棄みたいなもの)なのだが
保存したい場合は、事前にセーブしてから閉じればよい。
┌──────────────────────────────────────┐
│Application.DisplayAlerts = False                                           │
│ブック.Close                                                                │
│ブック.Save                                                                 │
│Application.DisplayAlerts = True                                            │
└──────────────────────────────────────┘
この場合、保存しますか?メッセージは抑止されるが、
クリップボードをクリアしますか?が出る場合があるので、
上記同様にメッセージを抑止するのが妥当か。
分類:ExcelVBA
Windows/Safeモード起動
2015年07月26日
起動時に「F8」キーを連打する。
押しっぱなしではない。
テンパってる時には間違いがち。
分類:Windows
ExcelVBA/続・ファイル(ブック)の保存
2015年07月25日
ファイル保存のダイアログでキャンセルボタンを押された場合対策。

キャンセルを押された場合には、戻り値が「False」になるので

戻り値を取得できるよう変数を用意し
┌──────────────────────────────────────┐
│Dim 選択 As Boolean                                                         │
└──────────────────────────────────────┘

代入する。
┌──────────────────────────────────────┐
│選択 = ActiveWorkbook.SaveAs(fileName:="出力ファイル.xls", _                │
│                             FileFormat:=XlFileFormat.xlExcel8)             │
├──────────────────────────────────────┤
│選択 = ActiveWorkbook.SaveAs(fileName:="出力ファイル.xlsx", _               │
│                             FileFormat:=XlFileFormat.xlOpenXMLWorkbook)    │
├──────────────────────────────────────┤
│選択 = Application.Dialogs(xlDialogSaveAs).Show(arg1:="出力ファイル.xls", _ │
│                                                arg2:=XlFileFormat.xlExcel8)│
├──────────────────────────────────────┤
│選択 = Application.Dialogs(xlDialogSaveAs).Show(arg1:="出力ファイル.xlsx", _│
│                                       arg2:=XlFileFormat.xlOpenXMLWorkbook)│
└──────────────────────────────────────┘

そして、それを判定して強制終了させるなどすればよい。
┌──────────────────────────────────────┐
│If Not 選択 Then                                                            │
│    ActiveWorkbook.Close SaveChanges:=False                                 │
│    Exit Sub                                                                │
│End If                                                                      │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/ボタンの全削除
2015年07月24日
フォームコントロールのボタンを全削除する方法。
┌──────────────────────────────────────┐
│ActiveSheet.Buttons.Delete                                                  │
└──────────────────────────────────────┘

ActiveXコントロールのボタンを全削除する方法。(チェックボックスとかも削除される)
┌──────────────────────────────────────┐
│Dim ボタン As OLEObject                                                     │
│For Each ボタン In ActiveSheet.OLEObjects                                   │
│    ボタン.Delete                                                           │
│Next ボタン                                                                 │
└──────────────────────────────────────┘
分類:ExcelVBA
Windowsコマンド/dirの結果を抽出
2015年07月23日
dirコマンドの結果をサンプルに、どうやれば抽出できるのか試行錯誤してみた

一行目を抽出する方法を試行錯誤した結果がこれ。
┌──────────────────────────────────────┐
│for /f "delims=" %a in ('dir') do (@echo %a> t.txt && exit /B)              │
├──────────────────────────────────────┤
│for /f "usebackq delims=" %a in (`dir`) do (@echo %a> t.txt && exit /B)     │
└──────────────────────────────────────┘

「"delims="」をつけないと、スペースで区切って終わってしまうので注意。

「exit /B」でもコマンドプロンプトから実行するとコマンドは閉じてしまう。
バッチファイルの場合は、「goto break」「:break」みたいな感じで
goto文も使えるのだが、一行コードでは厳しいようだ。

なお、バッチファイルに記述する場合には「%a」を「%%a」と変換する必要あり。


二行目を抽出する場合は、「skip=」で先頭の一行をスキップしてあげればよい
┌──────────────────────────────────────┐
│for /f "delims= skip=1" %a in ('dir') do (@echo %a> t.txt && exit /B)       │
├──────────────────────────────────────┤
│for /f "usebackq delims= skip=1" %a in (`dir`)                              │
│                                             do (@echo %a> t.txt && exit /B)│
└──────────────────────────────────────┘

末尾の一行を抽出するには、とにかくループを回してしまうのが手っ取り早いかも。
┌──────────────────────────────────────┐
│for /f "delims= skip=1" %a in ('dir') do (@echo %a> t.txt)                  │
├──────────────────────────────────────┤
│for /f "usebackq delims= skip=1" %a in (`dir`) do (@echo %a> t.txt)         │
└──────────────────────────────────────┘


行番号を出力して、それを元に抽出するという案もあるのだが
出力した行番号を削除する方法がわからない。
┌──────────────────────────────────────┐
│dir|findstr /n /r "." | findstr /r "^1:"                                    │
└──────────────────────────────────────┘
分類:Windows
MSSQL/sqlcmdによるCSV出力
2015年07月22日
SELECT結果をCSV出力する方法。

一番オーソドックスなのは以下の形。
┌──────────────────────────────────────┐
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         -o 出力ファイル.csv│
└──────────────────────────────────────┘

上記だと、ヘッダ表が出力されないので自前で出力する場合は以下の通り。
┌──────────────────────────────────────┐
│echo ヘッダ1,ヘッダ2,ヘッダ3> 出力ファイル.csv                              │
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         >> 出力ファイル.csv│
└──────────────────────────────────────┘

ヘッダ出力を自動化するのなら、以下のような感じか。
┌──────────────────────────────────────┐
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表] WHERE 1 <> 1;"            │
│                                 -h1 -s, -W | find /V "--"> 出力ファイル.csv│
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         >> 出力ファイル.csv│
└──────────────────────────────────────┘
出力結果の最初の一行目のみ抽出もしくは最後の一行目のみ削除ってのを
Windowsコマンド上でできればいいのだが、難しいので断念。
分類:MSSQL
前へ 1 2 3 次へ