WindowsのFTP
Windowsに標準でついている(らしい)ftp機能。サーバのログ収集などに使うと結構便利。
サンプル バッチファイル
getFile.ftpというファイルに書かれたコマンドを実行するバッチ。以下の例では「192.168.0.1」にあるftpサーバに接続してコマンドを実行する。
ftp -s:getFile.ftp 192.168.0.1 ftpコマンドファイル
ftpのコマンドを記述する。以下の例では「C\:test」に「/test」以下のファイルを取得する。
username
password
prompt
cd /test
lcd c:\test
type binary
mget *
bye
hostsファイル
簡単に言うならば、自己満足パソコン名覚書ファイルのこと。
Windows2000の場合、「HOME\WINNT\system32\drivers\etc」にhostsというファイルがあるはずだ。
IPアドレスに対応したそのノードを表す文字列(PC名など)の対応表を記録しておけるので、DNSがなくても、何とかなる気分になる。
例えば、ネットワーク内にIPアドレスが「128.0.0.20」というPCがあっても、いちいちIPアドレスを打つのはバカらしい。なので、こういう場合に、hostsファイルをいじることによって、勝手に名前をつけてあげることができる。(と思う)
# こんなかんじだ
128.0.0.20 kimura
また、仕事でよくあるのが、本番環境のドメインでテストを行いたい場合だ。
WEBサーバを立ち上げて作業をしていると、
http://localhost/test.html
というふうにアドレスバーには表示されるだろう。
まーこれでいいとは思うのだが、J2EEだとjsessionidなんかはドメインが変わると切れてしまったりする。そういう部分を確認するためにも、本番環境と同じドメインにしておいたほうがいいだろう。
例えば、本番では「http://testtest.com/」というドメインが使われるとする。そういう場合は自分のIPアドレスにこのドメインを設定してあげるといい。
128.0.0.53 testtest.com localhost
これは再起動せずに反映されるので、一回試してみる価値ありありありあり。
入力されたIDに対応した文字列を表示するVBAでメッセージ仕様書を作成
あるセルにKeyとなる値が入力されたときに、そのKeyに対応したデータを隣のセルに代入させるVBA。メッセージ仕様書でメッセージIDを入力したらメッセージをとってきてくれるのがほしかったので作成。
Changeイベントを使えば、セルの値が変わったときに、そのセルの情報を受け取ることができる。
例 Private Sub Worksheet_Change(ByVal Target As Range)
‘Columnが1の場合に処理を実行する
If Target.Column = 1 Then
‘入力されたKeyを取得
Key = Target.Value
‘Keyによって代入値を変える
If Key = “藤原” Then
Msg = “名前が入力されたみたい”
Else
Msg = “それ以外みたい”
End If
‘Tragetの隣のCellに代入
Cells(Target.Row, Target.Column + 1) = Msg
End If
End Sub
確認メッセージを出す
処理を続行するかどうかの確認を行い、「はい」を選択した時に処理を続行。「いいえ」を選択した時は何も実行しない。
ソース ‘続行の確認を行う
Sub 処理続行確認メッセージ()
Dim Style
Dim Response
Style = vbYesNo + vbInformation + vbDefaultButton2
Response = MsgBox(“続行しますか?”, Style, “確認”)
If Response = vbNo Then
End
End If
End Sub
VBAでページ番号をつける
指定したエクセルファイルのページごとに通番をつけていくマクロ。複数のファイルに連番をつけたい時はこのマクロを使えばいい。
その他応用も可能なのでテンプレートに使用できる。
このマクロができること
ページ付与機能 ページ整形機能 ソース一部抜粋 ‘連番で複数ファイルにページ番号を付与する
‘分類を利用して作成しておく
Sub ページ番号付与実行()
Application.DisplayAlerts = False
処理続行確認メッセージ
Dim RowNum As Integer
Dim TotalPageNum As Integer
TotalPageNum = 0
‘設定シート読込みループ
For RowNum = 5 To ActiveSheet.Cells.SpecialCells(xlLastCell).Row
‘設定取得
エクセル文書整形設定取得 (RowNum)
If FilePath = “” Then
MsgBox “おわったよー”, vbInformation, “終了”
Exit For
End If
Dim IsChange As Boolean
IsChange = False
If ClassA <> ClassABefore Or ClassB <> ClassBBefore Then
‘大分類、中分類が変わった時
IsChange = True
If StartNum <> [...]
ファイル読み込みVBA
例ではCSVファイルを1行ずつ読み込み、Excelのシートに挿入していく。
データは「”」で囲われているため、ダブルクォーテーション削除処理が必要になる。
ソース Dim Row
Dim ImportFile
Open ImportFile For Input As #1
Row = 11
‘読み込む
Do While Not EOF(1)
‘1行読込
Line Input #1, LineStr
LineArray = Split(LineStr, “,”)
‘タイトル
ActiveWorkbook.Sheets(1).Cells(Row, 1).Value = “・” & ダブルクォーテーション削除(LineArray(4))
‘開始予定日?終了予定日
ActiveWorkbook.Sheets(1).Cells(Row, 2).Value = Format(LineArray(6), “mm/dd”) & “?” & Format(LineArray(7), “mm/dd”)
‘開始日?終了日
ActiveWorkbook.Sheets(1).Cells(Row, 3).Value = Format(LineArray(8), “mm/dd”) & “?” & Format(LineArray(9), “mm/dd”)
Row = Row + 1
Loop
Close #1
ファイル作成マクロ
シートに書かれた内容のファイルを作成する。
下のソースではセル区切りのファイルを作成する。
ソース Function ファイル作成(FilePath, FileName, SheetName, OutputFileName)
Dim fs
Dim Row
Dim Col
Dim EndRow
Dim EndCol
Dim Content
Row = 1
EndRow = Workbooks(FileName).Sheets(SheetName).Cells.SpecialCells(xlCellTypeLastCell).Row
EndCol = Workbooks(FileName).Sheets(SheetName).Cells.SpecialCells(xlCellTypeLastCell).Column
Dim OutputPath
OutputPath = FilePath
Set fs = CreateObject(“Scripting.FileSystemObject”)
If Not fs.FolderExists(OutputPath) Then
‘出力フォルダがない場合
MkDir (OutputPath)
End If
Open OutputPath & “\” & OutputFileName For Output As #1 ‘ファイル番号1で新規作成
‘行ループ
Do While True
If EndRow + 1 = Row Then
Exit [...]
VBAでデータ検索
ある列の中から検索を行う関数。
エラー処理をいれないと、Fildで見つからなかった場合に落ちてしまうので注意。セルが見つかれば、RowとColumnやValueを取得することができる。
Private Function GetTargetRow(Key)
On Error GoTo エラー処理
‘A列を検索する
GetTargetRow = ThisWorkbook.Sheets(“シート1″).Columns(“A:A”).Find(What:=Key).Row
On Error GoTo 0
Exit Function
エラー処理:
MsgBox “Keyを確認してください。Keyに対応するメッセージがありません。”
On Error GoTo 0
End Function 追記:VLOOKUP関数でよくね??
ダブルクォーテーション削除VBA
CSVファイルを読み込み「”」でデータが囲われている場合に削除する。
ソース Function ダブルクォーテーション削除(Str)
ダブルクォーテーション削除 = Mid(Str, 2, Len(Str) – 2)
End Function
Accessでエクスポートしたデータの整形VBA
AccessからエクスポートしたデータはExcelで開くと日付表示のフォーマットが異なってしまう。なので、そのままインポートすると「時分秒」部分がうまくインポートできない。
また、大きい数値などが浮動小数点表示されてしまうため、これもうまくインポートできない場合がある。
データ整形のマクロ
このマクロによって、指定したファイルの整形を行う。
日付行幅オートフィット 日付フォーマット変換 数値変換 行幅オートフィット(コメント化してある) 折り返して表示変換(コメント化してある) ソース(一部抜粋) Sub エクスポートデータ整形()
Application.DisplayAlerts = False
処理続行確認メッセージ
Dim RowNum As Integer
Dim TotalPageNum As Integer
TotalPageNum = 0
‘設定シート読込みループ
For RowNum = 2 To ActiveSheet.Cells.SpecialCells(xlLastCell).Row
‘設定取得
設定取得 (RowNum)
If FilePath = “” Then
MsgBox “おわったよー”, vbInformation, “終了”
Exit Sub
End If
Workbooks.Open Filename:=FilePath
Worksheets(1).Activate
‘シート選択
Dim W As Worksheet
For Each W In Worksheets
W.Select
エクスポートデータ整形実行
[...]
XMLを作成するVBA
XMLのテストデータを作成しなければならなくなって、いいツールがなかったので作ってみた。要素名を書いて、要素の値の型とかフォーマットとか指定すれば、それにそったXMLファイルを作成する。
Excel2002で作成したが、そんなに凝ったことせずに、「うおーーー!」と作ったので、大体のバージョンで動くはず。
Excelファイル簡易比較VBA
2ファイルを比較し、変更のあったセルの色を変更する。比較元となるファイルには何も行わない。
ソース(一部抜粋) Sub エクセルファイル比較実行()
処理続行確認メッセージ
初期設定
Application.DisplayAlerts = False
Dim ConfRowNum
ConfRowNum = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
Dim RowNum
For RowNum = 2 To ConfRowNum
設定取得 (RowNum)
Dim FileName1
Dim FileName2
Dim SheetCount1
Dim SheetCount2
Workbooks.Open Filename:=FilePath1
FileName1 = ActiveWorkbook.Name
Workbooks.Open Filename:=FilePath2
FileName2 = ActiveWorkbook.Name
SheetCount1 = Workbooks(FileName1).Worksheets.Count
SheetCount2 = Workbooks(FileName2).Worksheets.Count
Dim SheetNum
SheetNum = 1
Do While SheetNum <= SheetCount1 And SheetNum <= SheetCount2
Dim MaxRow
データソースの追加
データプロバイダへの接続情報に関する情報のこと。
ODBCを使ってDBにアクセスする時の情報が格納される。OracleDBをAccessから参照したりすることができるので便利。
ユーザデータソース
ログインしているユーザによって認識される。
システムデータソース
システム全般によって認識される。
データソースの追加 管理ツール > データ ソース (ODBC) を選択 ユーザDSNタブでユーザデータソースを追加 Oracle in OraHome92 を選択 データソース名(自分がわかる名前)、TNSサービス名(Oracleのサービス名)を入力 接続テストをクリックして、ユーザ名、パスワードを入力して接続テストを行う
失敗した場合は、
Oracleデータベースのリスナーが立ち上がっているか確認 クライアントでローカル・ネット・サービス名が構成されているか確認
参考:[Oracle/NetConfigurationAssistant/ローカル・ネット・サービス名構成]
Accessのテーブル一覧を削除するVBA
仕事ではOracleを使うことが多いのだが、テスト工程にはいるとAccessを使うこともある。これはGUIで簡単にレコードを見れるというのがすんばらしいからだろう。
で、テーブルのリンクをODBCから吸い込んでテーブルの表示欄にテーブルリンクをインポートするんだけど、このリンクって複数選択して削除?というのができないのだ。
これがとても不便で、接続先を変えるときなんて「Delete」>「Enter」の連打連打連打。こういうことをやってると、人間なんだから一度にポチっと削除したくなるのがエンジニアたるもの。
そこで、テーブルリンク一覧を削除するコードをVBAで作ってみた。「めんどくさい」ときにちょこっとマクロやバッチをかける人間とかけない人間の差はでかい。
ポイントはDaoでテーブル一覧を取得するというもの。SQLで「Select * from MSysObjects」ってやればわかるんだけど、テーブル情報にもいろいろあって、Accessで使うものもあるので、すべて削除はできない。よって、リンクを判断してやればいいんだけど、そこまでは調べられなかったので、Accessで使うテーブル以外を削除する方法をとった。
マクロなりOnClickイベントなりで呼び出すとよいね。
‘————————————————————
‘[ツール]-[参照設定]にて「Microsoft DAO 3.6 Object Library」
‘にチェックをつけてください
‘————————————————————
‘全テーブルを削除します。
‘————————————————————
Function DeleteTable()
Dim tbls As DAO.TableDefs
Dim tbl As DAO.TableDef
‘テーブル一覧取得
Set tbls = CurrentDb.TableDefs
Dim Cnt, i
Cnt = 0
Dim TableNames(500) ‘ひとまず500テーブルまでとする
Dim DelName
For Each tbl In tbls
‘システムテーブルを削除しようとするとエラーになる
‘MSysではじまる名前のテーブルはシステムテーブルなので
‘それを判定して削除対象を決める
If InStr(1, tbl.Name, “MSys”, vbBinaryCompare) = 0 Then
TableNames(Cnt) = tbl.Name
Cnt = Cnt + 1
End If
Next
For i = 0 To Cnt – 1
‘テーブル削除
[...]
絶賛翻訳中!この秋発売予定!

『Lean from the Trenches』日本語翻訳版、2013年秋頃予定。
"本書は、全開発者に捧げる戦いの記録だ。圧倒的なリアリティで描かれた 越境するソフトウェア開発に至るための道しるべとなるだろう。"
翻訳:市谷 聡啓・藤原 大、監修:角谷 信太郎、タイトル:未定、出版社:オーム社
詳細情報はこちら!僕について
Dai Fujihara
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
最近の人気
永久保存の本
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ









