8月 042013
 

エクセルVBAで土日祝日判断関数アルゴリズム

【事前準備】

1.祝日リストを用意する holidays

2013/01/01,2013/01/14,2013/02/11,2013/03/20,2013/04/29,2013/05/03,2013/05/04,2013/05/05,2013/05/06,2013/07/15,2013/09/16,2013/09/23,2013/10/14,2013/11/03,2013/11/04,2013/11/23,2013/12/23,2014/01/01,2014/01/13,2014/02/11,2014/03/21,2014/04/29,2014/05/03,2014/05/04,2014/05/05,2014/05/06,2014/07/21,2014/09/15,2014/09/23,2014/10/13,2014/11/03,2014/11/23,2014/11/24,2014/12/23,2015/01/01,2015/01/12,2015/02/11,2015/03/21,2015/04/29,2015/05/03,2015/05/04,2015/05/05,2015/05/06,2015/07/20,2015/09/21,2015/09/22,2015/09/23,2015/10/12,2015/11/03,2015/11/23,2015/12/23,2016/01/01,2016/01/11,2016/02/11,2016/03/20,2016/03/21,2016/04/29,2016/05/03,2016/05/04,2016/05/05,2016/07/18,2016/09/19,2016/09/22,2016/10/10,2016/11/03,2016/11/23,2016/12/23,2017/01/01,2017/01/02,2017/01/09,2017/02/11,2017/03/20,2017/04/29,2017/05/03,2017/05/04,2017/05/05,2017/07/17,2017/09/18,2017/09/23,2017/10/09,2017/11/03,2017/11/23,2017/12/23,

2.関数 WORKDAY(start_date,days,holidays)を利用する

 start_date→開始日

days→開始日以降_days_日営業日

holidays→1.で設定したholidays祝日リスト

3.エクセルの指定されたCellで_days_後の営業日の日付を表示する

Range(“指定Cell”)=workday(start_date書いてあるCell,days書いてあるCell,holidaysリスト範囲)

Range(“指定Cell”).Value = Application.Run(“ATPVBAEN.XLA!WorkDay” , Range(“start_date書いてあるCell”).Value , Range(“days書いてあるCell”).Value , Range(“holidaysリスト範囲最終Cell”).Value)

12月 052012
 

要求:

日弁連のサイトから弁護士さんの登録情報を取得し、一覧化するエクセルマクロの作成する仕事。

<抽出条件>
上記サイト登録番号(5桁)の最大値までの全データ
(最大値は、手動で入力する)

<抽出項目>
登録番号
弁護士会
氏名かな
氏名
性別
事務所名
郵便番号
住所
電話番号
FAX番号

特徴:

収集したいサイトはCGIを使って、データの処理を行っている。一定の処理が必要

開発提案:

VBAで収集する。速度は2秒で1件。

同じにニーズがありますか?8000円でプログラムを提供致します。とりあえず、問い合わせまで連絡してください!

 Tagged with:
11月 202012
 

Public Declare Function MultiByteToWideChar Lib “kernel32” ( _
ByVal CodePage As Long, _
ByVal dwFlags As Long, _
ByRef lpMultiByteStr As Any, _
ByVal cchMultiByte As Long, _
ByVal lpWideCharStr As Long, _
ByVal cchWideChar As Long) As Long
Public Declare Function WideCharToMultiByte Lib “kernel32” ( _
ByVal CodePage As Long, _
ByVal dwFlags As Long, _
ByVal lpWideCharStr As Long, _
ByVal cchWideChar As Long, _
ByRef lpMultiByteStr As Any, _
ByVal cchMultiByte As Long, _
ByVal lpDefaultChar As String, _
ByVal lpUsedDefaultChar As Long) As Long
Public Const CP_UTF8 = 65001

‘ VBAでUTF8ファイルが読み取り可能な文字列を読み込むには
‘ 输入
‘ strFile:UTF8ファイルの位置
Private Function readUTF8File(strFile As String) As String
Dim bByte As Byte
Dim ReturnByte() As Byte
Dim lngBufferSize As Long
Dim strBuffer As String
Dim lngResult As Long
Dim bHeader(1 To 3) As Byte
Dim i As Long

On Error GoTo errHandle
If Dir(strFile) = “” Then Exit Function


Open strFile For Binary As #1
ReDim ReturnByte(0 To LOF(1) – 1) As Byte
‘最初の3bitを読み込む
Get #1, , bHeader(1)
Get #1, , bHeader(2)
Get #1, , bHeader(3)
‘ 最初の3bitはBOMデッドであるかを判断する
If bHeader(1) = 239 And bHeader(2) = 187 And bHeader(3) = 191 Then
For i = 3 To LOF(1) – 1
Get #1, , ReturnByte(i – 3)
Next i
Else
ReturnByte(0) = bHeader(1)
ReturnByte(1) = bHeader(2)
ReturnByte(2) = bHeader(3)
For i = 3 To LOF(1) – 1
Get #1, , ReturnByte(i)
Next i
End If
‘ Close the file
Close #1

‘ UTF-8データからVBAが使えるStringに変わる
lngBufferSize = UBound(ReturnByte) + 1
strBuffer = String$(lngBufferSize, vbNullChar)
lngResult = MultiByteToWideChar(65001, 0, ReturnByte(0), _
lngBufferSize, StrPtr(strBuffer), lngBufferSize)
readUTF8File = Left(strBuffer, lngResult)

Exit Function
errHandle:
MsgBox Err.Description, , “Error – ” & Err.Number
readUTF8File = “”
End Function

説明:xlsのVBAは直接UTF8のファイルを読み込むことができないです。この方法を通じて、文字化けの問題を対応することが可能です。

 Tagged with:
7月 222012
 

1. 概要
Excel シートに書かれている表データを、XML に変換するツールである。
Excel マクロを実行した際に、ファイル中に存在するすべてのシートに対して処理を実施する。

2. 開発環境

Excel2003+ExcelVBA

3,出力ファイル

XML 形式のファイル

4,キーポイント

Excelの読み取る

シートの読み取る

VBAによるファイルの書き込む(UTF-8コード)

 他の開発経験

 

 Tagged with:
7月 212012
 

機能:指定さるフォマットで文字をファイルにほぞんする

Excel VBAでUTF-8のテキストファイルを保存

FilePath:ファイルのいち

strText:保存される文字

Charset:ファイルのコードフォマット

対応:vb,vba

Private Sub Save2File(ByVal FilePath As String, ByVal strText As String, Optional Charset As String = “UTF-8”)
Dim Obj As Object
Set Obj = CreateObject(“ADODB.Stream”)
With Obj
.Mode = 3
.Charset = Charset
.Open
.WriteText strText
.SaveToFile FilePath, 2
End With
Set Obj = Nothing
End Sub

 Tagged with: