Sub Main
'----------------------
'ファイル取り込み処理
For j = sID1 To endID1
filename = ThisWorkbook.Path & "\Disk_C_" & nengetu & Format(j, "00") & ".csv"
sheetsName = hostName & "_Disk_" & Format(j, "00")
'ファイルがない場合にループを抜ける処理
If Dir(filename) = "" Then
MsgBox j & "日のファイルが見つかりません"
GoTo Line1
End If
'外部テーブル範囲に取り込み
'---------------------------------
Set myQT = Sheets(sheetsName).QueryTables.Add( _
Connection:="TEXT;" & fileName, _
Destination:=Sheets(sheetsName).Range("A1"))
With myQT
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileTabDelimiter = False
.TextFileOtherDelimiter = ""
.AdjustColumnWidth = True
.BackgroundQuery = False
.Refresh
.Delete
End With
'---------------------------------
'ここに、取り込んだファイルの処理内容を書く
'---------------------------------
Next j
'---------------------------------
MsgBox hostName & "マクロ正常終了"
Line1:
End Sub
[0回]
PR
'---------------------------------
'月末の判定例
'細かな形式は全部省略
'matubiA1は、末尾の判定ができるセルを指定する。
'右から2桁を抽出してCase文で判定します。
Sheets(hogehoge).Select
matubiA1 = Range("A1").Value
matubiA1 = DateValue(matubiA1)
matubiA1 = Right(matubiA1, 2)
Select Case matubiA1
Case "03"
'28日の場合
endID1 = 28
Case "02"
'29日の場合
endID1 = 29
Case "01"
'30日の場合
endID1 = 30
Case Else
'31日の場合
endID1 = 31
End Select
[0回]
Windowsで表示されるエラーコードの見方
Windowsでエラーがあるたびに表示される「エラーコード」。コードを調べると原因がわかるとされているが、インターネットでキーワード検索をしてみたところで、まともな答えが得られないことのほうが多い。よくてエラーコードの意味を理解しないで、単に対策だけが記載されている程度だ。
そこで、今回はこのエラーコードを解説することにしよう。とりあえず、マイクロソフトが出している正式なドキュメントは以下にある。
●[MS-ERREF]: Windows Error Codes
https://msdn.microsoft.com/en-us/library/cc231196.aspx
基本的には、これを読めばいいわけなのだが、量も結構あって、しかも英語である。そこで、今回は、よく見かけるエラーコードなどを例に、ごく大まかに解説することにする。
Windowsのエラーコードは、32bit値で、通常は16進数で表現されている。大きく「HRESULT」「Win32エラーコード」「NTSTATUS」の3つがある。よく見かける0x8007xxxxというのがWin32エラーコード、0xCxxxxxxxというがNTSTATUSである。
また、場合によっては、システムがこれらのエラーコードに「拡張コード」を付けて詳細情報を付加する場合もある。たとえば、Windows Updateによるアップグレードなどは、エラーの発生タイミングを通知する拡張コードをつける場合がある。
まずは、エラーコードの構造から見ていこう。エラーコードは、32bitで表現される整数値を16進数で表現したものだ。エラーコードの先頭にある「0x」は以下が16進数であることを示すために使われる記法の1つだ。コンピュータ言語などで数値を表現する場合に使われる。
エラーコードは常に16進数とするというルールがあれば、先頭に0xをつける必要はなさそうだが、実際には、コンピュータ内部には16進数も2進数も10進数もなく、みな同じ32bitのデータでしかない。人間に見えるように数値を画面などに表示する際に、どのように表示するのかを決めているだけだ。しかし、単に数字だけを表示すると10進数解釈してしまうかもしれない。16進数でも、A~Fが一回も使われない数字というのもあるわけで、見た目に紛らわしい。このため、エラーコードは16進数で表現するために必ず先頭に0xをつけているようだ。
このエラーコードのうち、まずは、0xの次の文字が8なのかCなのかで解釈の方法が変わってくる。まずは、先頭が8のWin32エラーコードからみていくことにする。
Win32エラーコード
Win32エラーコードは、本来はHRESULTと呼ばれるAPI呼び出しなどの処理の結果状態(成功したのかエラーなのか)を表現するデータの一種だ。そのデータ構造は下の図のようになっている。
Win32エラーの場合には、エラーコードは0x8007というパターンから始まる
HRESULTは、32bitデータの下位5ビットでエラーの種類を表している。ただし、5ビット目(bit4。Xビット)は使われておらず0に固定である。最下位にあるSビットはエラーなのか、そうでないのかを表していて、エラーの場合ここが1になる。残りはゼロになるため、エラーコードの先頭は、必ず8、つまり0x8xxxxxxx」(xは任意の16進数)というパターンになる。
HRESULTでは、bit5(6ビット目)からbit15は、ファシリティ(Facility)と呼ばれるフィールドで、エラーの分類(発生位置)を示す。ここが0x007の場合は、Win32エラーだ。なお、ファシリティのリストは前述の文書にある。
●HRESULT
https://msdn.microsoft.com/en-us/library/cc231198.aspx
つまり、エラーコードの上位4桁が「0x8007」になっているのはWin32エラーとなる。エラーコードの下位4桁は、ファシリティごとに意味が違っていて、Win32用のリストは、同様に以下のページにある
●Win32 Error Codes
https://msdn.microsoft.com/en-us/library/cc231199.aspx
簡単にいえば、表示されたエラーコードの先頭が0x8007だった場合には、前記のページにあるリストから下位4桁の数字を探せばいいことになる。
NTSTATUS
エラーコードの最初の桁が「C」だった場合、パターンはまた変わってくる。
エラーコードがNTSTATUS形式の場合、0xCから始まるエラーコードとなる
Win32と似ているが、ちょっと違う。NTSTATUSの場合、ファシリティはbit4(5ビット目)からbit15(16ビット目)までとなる。コードの部分は、Win32と同じく16ビットになっている。ただし、NTSTATUSの場合、ファシリティとエラーコードを一緒にしたリストになっているので、以下のページから、エラーコードそのものを探す。
●NTSTATUS Values
https://msdn.microsoft.com/en-us/library/cc704588.aspx
なお、ファシリティ部分がどのような意味を持つのかは、以下のページに記述がある。
●Appendix A: Product Behaviorの<4>以下 https://msdn.microsoft.com/en-us/library/cc231214.aspx#Appendix_A_4
これで、とりあえず、エラーコードを「エラーメッセージ」に変換することが可能になる。では、次回はもうすこし具体的にエラーコードについて見ていくことにしよう。
・元ネタ
http://ascii.jp/elem/000/001/432/1432965/
[0回]
バッチ(bat)や一括検索のためのコマンドの使い方
カレントディレクトリ以下のすべてのファイルから、
「hoge」という文字列を検索し表示する。
ファイル名とそのディレクトリも表示される。
windows 10 proで試しました。
※バイナリファイルも読み込むため、浅い階層でやるといい結果が得られないでしょう。
>findstr /s /i "hoge" *
fuga.txt:hoge = aaa
hoge.txt:hoge = aaa
LogDir001\fuga.txt:hoge = aaa
http://www.tecblo.com/site-navi/1165.html
オプションの「s」は、documentsディレクトリ配下のすべてのディレクトリを再帰的に検索、
「i」は大文字小文字を区別しないで検索します。
[0回]
インスタンスとは?
データベースの勉強を始めるにあたって、最初に出てくる非常になじみにくい言葉が“
インスタンス”です。
これは、おおざっぱにいうとデータベースシステムのまとまりのことであり、データベースを起動・停止する単位を表します。管理者の立場から見ると、1つのデータベース管理単位となります。UNIXの世界では環境変数「ORACLE_SID」で表されます。
[0回]