2011年11月29日火曜日

vbaで先月末、今月末、今月の日数など

vbaのdateをちょっと...

'今日
today = Date

'先月末
lastMonthLastDay = _
DateAdd("d", -1, DateSerial(Year(today), Month(today), 1))

'先月初
lastMonthLastDay = _
DateAdd("m", -1, DateSerial(Year(today), Month(today), 1))

'今月末
thisMonthLastDay = _
DateAdd("d", -1, DateAdd("m", 1, DateSerial(Year(today), Month(today), 1)))

'今月の日数
thisMonthDayCount = DateDiff("d",lastMonthLastDay,thisMonthLastDay)

'今日(yyyymmdd形式)
today = Format(Date,"yyyymmdd")

'今日(mysql形式)
today = Format(Date,"yyyy-mm-dd")

'今現在(mysql形式)
Format(Now, "yyyy-mm-dd hh:nn:ss")

'YYYYMMDDをDate形に変換
myDate = CDate(Format("20111231", "@@@@/@@/@@"))


2011年11月25日金曜日

Excelのバーションを自動判断保存する(警告なし)のサンプル

Excelの各バーション(95,97,2000,2003,2007,2010)file format一覧表


Excel 定数 拡張子 説明
97-2003 xlWorkbookNormal -4143 .xls 既定のExcel2003ベースのファイル形式
2007-2010 xlWorkbookDefault 51 .xlsx 既定のExcel2007ベースのファイル形式、VBAなし
2007-2010 xlOpenXMLWorkbookMacroEnabled 52 .xlsm Excel2007ベースのマクロ有効ファイル形式、VBA有効
2007-2010 xlExcel12 50 .xlsb Excel2007バイナリファイル形式(BIFF12)
2007-2010 xlExcel8 56 .xls Excel 97 - 2003のバイナリファイル形式(BIFF8)
2007-2010 xlExcel5 39 .xls Excel 5.0/95のバイナリファイル形式(BIFF5)

サンプル
'まずは拡張子を定義
    Public Const Extension_Excel2003 As String = ".xls" '2003エクセルの拡張子
    Public Const Extension_Excel2007 As String = ".xlsx" '2007エクセルの拡張子

    '2007エクセル(マクロ)の拡張子、保存するファイルにVBAが含まれる時はこっちを使ってください
    Public Const Extension_Excel2007_With_Macro As String = ".xlsm"

    'まずはfileFormat定数を定義
    Public Const Excel2003FileFormat As Long = -4143
    Public Const Excel2007FileFormat As Long = 51
    Public Const Excel2007FileFormatWithMacro As Long = 52

    Public gExt As String
    Public gFormat As Long

    '使っているEXCELのバージョンが97-2003
    If Val(Application.Version) < 12 Then
        gExt = Extension_Excel2003 
        gFormat = Excel2003FileFormat
    Else '2007-2010の場合
        gExt = Extension_Excel2007
        gFormat = Excel2007FileFormat
    End If

    '保存
    Application.DisplayAlerts = False
    With someWorkbook
        .SaveAs Filename:= strFileName & gExt, FileFormat:=gFormat
    End With
    Application.DisplayAlerts = True

2011年11月21日月曜日

UTF-8とUTF-8N

railsに怒られた
syntax error, unexpected kEND, expecting $end
controllerの文字コードをSJISからUTF8に変換したら、このエラーが出るようになった…
変換を使ったのはterapad、2バイト文字全然ないのに、なぜ?


一般異議でUTF8はUTF8のボムなしを指します(BOMってなに?わかない…最初の一文字目だそうです)
Terapadの呼び方では:
UTF8 = UTF8ボムあり
UTF8N = UTF8ボムなし

だからUTF8Nにすればエラーが出なくなる、改行コードはLFかCRLFどっちでも?(だそうです)
エンコードってややこしいな、兎に角UTF8ボムなしにすればよいか…


2011年11月18日金曜日

railsでdb migrateしたら怒られたのでgemをダウングレード

railsでdb migrateしたら怒られた

WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.

gemのバージョンが高すぎるからgem 1.3.7にダウングレードする

# gem -v
1.8.7
# gem update --system 1.3.7
# gem -v
1.3.7

あとgemのmysqlも入れてないからいれる

# gem install mysql

これでdb:migrateしたらうまくいった

# rake db:migrate

ちなみに、すべてのテーブルを削除する方法は

# rake db:migrate VERSION=0

2011年11月10日木曜日

railsのscaffoldで作成したcontrollerが余計のお世話をする

railsのscaffoldを作成したら、controllerでactionを追加したら、actionをidとして探してしまうという余計のお世話は、実はscaffoldの仕業
rorr(ruby on rails rookie)の私にyuoさんがいろいろ教えてくれてありがとうございました。

$ rails anydesign -d mysql #まずはプロジェクト作成(データベースはmysql)
$ cd anydesign
$ rake db:create #DB作成
$ ruby script/generate scaffold report title:string header:text body:text footer:text #scaffoldで簡単なreport機能を作成
$ rake db:migrate #DBを更新
$ ruby script/server #サーバを立ててみる

ブラウザーでhttp://localhost:3000/を叩いたら、タイムアウト…
調べたら、iptables(firewall)がオンになってる

$ sudo service iptables status #状態を調査する
$ sudo service iptables stop #やっぱりオンになってるから、止める

もう一回ブラウザーでhttp://localhost:3000/を叩いたら、出ました。on rail...
先作ったscaffoldで作ったreportを見てみるhttp://localhost:3000/report
あ!ちゃんと空の一覧が出来ました、便利。
一覧、新規、変更、削除一応全部できる。取り敢えず
title, header, body, footerを入れて、一レコードを作りました。
そして、controllerで新しいaction、「test」を追加しました、空のaction
in reports_controller.rb

def test
end

http://localhost:3000/report/testを叩いたら、[ActiveRecord::RecordNotFound (Couldn't find Report with ID=test):]という
エラーが出来ました、なぜaction名がidに無理やりも当てるの?railsの大きなお世話だね、yuoさんが教えてくれた
scaffoldで作成するとき、config/routes.rbで

map.resources :reports

を追加してくれたので、こうなった、一番簡単なのはこの一文を削除すればいいですが、config/routes.rbで

map.resources :reports, :only => ['create','show'] #適応actionを絞る
あるいは
map.resources :reports, :except=> ['test'] #action testを除外する

でもいいらしい。

svnコマンド、ディレクトリを再帰的に無視属性追加する


$ svn propset -R 'svn:ignore' '*' ./log/
$ svn propset -R 'svn:ignore' '*' ./tmp/
$ svn ci -m "ignore tmp and log"

ここから引用しました、ありがとうございました。

2011年11月8日火曜日

ディレクトリ構造のまま、ファイル一覧で指定したファイルを別のディレクトリに移すVBA

grepで特定の文字を含むファイルを探し出す、一覧を作成する、そしてディレクトリ構造のまま別場所に移す。作業ログも出力できる。
ファイルはこちらでダウンロード、まぁ使い道ないないかもね…