ユーザ登録用スクリプト_その1
ひとまずACCESSのデータベースから値を拾ってきてActiveDirectoryと外部メールサービスに新規ユーザを追加するVBスクリプトを作ってみた。どこかで再利用するかもしれないから保存しとく。ずぶの素人が作成しているのでソース汚いのはお約束で・・・・
以下、メインの処理 を
・EXCELからデータを引いてきて、データを加工しACCESSに登録
・ACCESSからデータを抜いてADとメールサーバにデータ登録
・結果をEXCELに登録しつつ、完了メール送信
てな塩梅です。
以下、メインの処理 を
・EXCELからデータを引いてきて、データを加工しACCESSに登録
・ACCESSからデータを抜いてADとメールサーバにデータ登録
・結果をEXCELに登録しつつ、完了メール送信
てな塩梅です。
Option Explicit
Dim Logrtn 'Log
Dim CErrMsg
Dim LErrMsg
CErrMsg = "エラー:処理継続不可"
LErrMsg = "エラー:ログ出力時エラー"
Dim cn, rs 'ACCESSデータベース
Dim objFso 'ファイル存在チェック用
Dim DataBaseName
Dim strSQL
Dim ExcelName
Dim EmpDate '現在日付取得
Dim EmpNo
Dim rsCount 'レコード件数取得用
Dim strName
Dim strKnName
Dim strPlace
Dim Section
Dim EmpLank
Dim EmpStat
Dim strLoginID 'WindowsログインID
Dim strLoginPW 'WindowsログインPW
Dim strPMailAdd 'メールアドレス
Dim strPMailPW 'メールアドレスパスワード
Dim AdColum
Dim MailColum
AdColum = "X" 'EXCELの列
MailColum = "X" 'EXCELの列
Dim EmpMrtn
Dim Adrtn
Dim AdGrtn
Dim Mlrtn
Dim Mlsndrtn
Dim Excelrtn
Dim adCounter
Dim mailCounter
'***ACCEESS(入力)
DataBaseName = "C:\XXX.accdb"
'***EXCEL(出力)
ExcelName = "C:\XXX.xls"
'当日日付取得(m/d/yyyy形式)
EmpDate = Month(Now)
EmpDate = EmpDate & "/" & Day(Now)
EmpDate = EmpDate & "/" & Year(Now)
EmpMrtn = ExcelToAccess(ExcelName,DataBaseName,EmpDate)
If EmpMrtn = "False" Then
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err],ACCESSデータベース登録処理でエラーが発生しました。入社チェックリストを確認してください。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
WScript.Quit()
End If
'ACCESSデータベースオープン 参照:http://pnpk.net/cms/archives/3226
Set objFso = CreateObject("Scripting.FileSystemObject")
If objFso.FileExists(DataBaseName) Then
Set cn = CreateObject("ADODB.Connection")
cn.CursorLocation = 3 ' クライアントサイドカーソルに変更(レコードセットカウント対策)
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider = Microsoft.ACE.OLEDB.12.0; " & _
"Data Source = " & DataBaseName & ";"
Else
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err],ACCESSデータベースに入社対象者が存在しません。ACCESSデータベースを確認してください。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
Set objFso = Nothing
WScript.Quit()
End If
Set objFso = Nothing
'SQL発行
strSQL=""
strSQL= strSQL & "SELECT ACCESSデータベース.[KeyCD], "
strSQL= strSQL & " FROM ACCESSデータベース "
strSQL= strSQL & " WHERE (((ACCESSデータベース.対象日)> "
strSQL= strSQL & "#" & EmpDate & "#" & ")"
strSQL= strSQL & " AND "
strSQL= strSQL & " AND "
strSQL= strSQL & "((ACCESSデータベース.));"
Set rs =cn.Execute(strSQL) 'ACCESSデータベースSQL実行
rsCount = rs.RecordCount
If rsCount = 0 Then
Set rs = Nothing
Set cn = Nothing
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err],処理対象が0件です。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
WScript.Quit()
End If
If rs.Eof Then
Set rs = Nothing
Set cn = Nothing
WScript.echo "対象0件:処理が完了しました。"
Logrtn = OutLogger("[Worn],追加対象なし。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
WScript.Quit()
Else
rs.MoveFirst
End If
'//** ユーザ登録処理
' 参照:http://d.hatena.ne.jp/masahiror/20070706/ad_vbs
adCounter=0
Do Until rs.Eof = True
EmpNo = rs("XXX")
strName = rs("XXX")
strLoginID = rs("XXX")
strLoginPW = rs("XXX")
strPMailAdd = rs("XXX")
strPlace = rs("XXX")
Section = rs("XXX")
'*** ActiveDirectoryユーザ追加
strName=Replace(strName," ","")
Adrtn = ActiveDirectoryAdd(strName,strLoginID,strLoginPW,strPMailAdd,strPlace)
'エラー時は処理終了
If Adrtn = "False" Then
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err]," & StrName & ":追加中にAD登録エラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
Set rs = Nothing
Set cn = Nothing
WScript.Quit()
End If
'***グループ追加
AdGrtn = ADGroupAdd(strName,Section)
'エラー時は処理終了
If AdGrtn = "False" Then
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err]," & StrName & ":グループ登録に失敗しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
Set rs = Nothing
Set cn = Nothing
WScript.Quit()
End If
'EXCELに結果入力」
Excelrtn = ExcelSheetInput(EmpNo,AdColum,ExcelName)
If Excelrtn = "False" Then
Logrtn = OutLogger("[Err]," & StrName & ":EXCEL入力の際にエラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
End If
Logrtn = OutLogger("[Done]," & StrName & ":ActiveDirectoryのアカウント追加完了")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
rs.MoveNext
adCounter=adCounter+1
Loop
Logrtn = OutLogger("[Done],ActiveDirectoryのアカウント追加完了" & "処理対象:" & adCounter & "件")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
'/* ActiveDirectoryとメールサーバの処理を切り分けるため初期レコードに戻す。
rs.MoveFirst
mailCounter=0
Do Until rs.Eof = True
EmpNo = rs("XXX")
strName = rs("XXX")
strPMailAdd = rs("XXX")
strPMailPW = rs("XXX")
Mlrtn = MailSrvAdd(strName,strPMailAdd,strPMailPW,strPlace)
'エラー時は処理終了
If Mlrtn = "False" Then
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err]," & StrName & ":メールサーバ登録エラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
Set rs = Nothing
Set cn = Nothing
WScript.Quit()
End If
'EXCELに結果入力
Excelrtn = ExcelSheetInput(EmpNo,MailColum,ExcelName)
If Excelrtn = "False" Then
Logrtn = OutLogger("[Err]," & StrName & ":EXCEL入力の際にエラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
End If
Logrtn = OutLogger("[Done]," & StrName & ":サーバへのメールアカウント追加完了")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
rs.MoveNext
mailCounter=mailCounter+1
Loop
Logrtn = OutLogger("[Done],メールサーバのアカウント追加完了" & "処理対象:" & mailCounter & "件")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
'SQL発行
strSQL=""
strSQL= strSQL & "UPDATE ACCESSデータベース SET ACCESSデータベース.XXX = '' "
strSQL= strSQL & "WHERE ((ACCESSデータベース.XXX='" & EmpNo & "'));"
If Err.Number <> 0 Then
ExcelToAccess = "False"
Logrtn = OutLogger("[Err],"& EmpNo & ":更新中にエラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
Else
Set rs =cn.Execute(strSQL)
End If
Mlsndrtn = CompMailSend(EmpNo,ExcelName)
If Mlsndrtn = "False" Then
WScript.Echo CErrMsg
Logrtn = OutLogger("[Err],メール送信処理でエラーが発生しました。")
If Logrtn = "False" Then
WScript.Echo LErrMsg
End If
WScript.Quit()
End If
WScript.echo "処理完了"
Set rs = Nothing
Set cn = Nothing
コメント