|
途中報告
名前 :SYSYTEM
頭文字 :S
については、
タスクマネージャで見ると
開かれたブックのプロセスのユーザーが SYSYTEM でした
で、とりあえず、サーバーブックでなくローカルブックで実行できればと
下記試してみました
動作説明
ブックのマクロの中身は
ブックが開かれたら
コンピュータ名、ユーザー名、接続モニタのシリアルNOを取得し
ファイルサーバーのmdbに書き込み
最後に自ブックを閉じて終了
テスト1
手動で、ローカルPCのブックのマクロを実行 は、問題ないが
セキュリティ警告のダイアログが出てしまう
テスト2
そこで、vbsで、上記のブックを開く ことにした
は、問題がない
テスト3
テスト2のvbsをATコマンド経由で実行すると
ブックのユーザーがSYSYTEMになっていて下記の不具合が出ました
不具合1
mdbのopen時
cn.Openで
実行時エラー '-2147467259 (80004005)':
ファイル '\\bar\barbar\foofoo.mdb' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。
で、そのフォルダのアクセス権にeveryoneをつけて回避
不具合2
実際のPCのユーザー名(ログインユーザー名)が取得できなくなりました
そこでATコマンドで開くときブックのユーザー名が
SYSYTEMでなくログインユーザー名に出来れば上記の不具合がなくなる
と思っているのですが可能でしょうか
また
もっといい方法があるような気もしています
あわせてアドバイスあればよろしくお願いいたします
補足 関連Q
【59481】ローカルPCからのデータ取得
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=59481;id=excel
【10900】エクセルからアクセスへAddNewで
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=10900;id=access
コード
do_macro.vbs
-------------------------------------------
Dim wsh, env, exe
Dim ipaddress, computername, username
Set wsh = WScript.CreateObject("WScript.Shell")
'msgbox wsh.ExpandEnvironmentStrings("%COMPUTERNAME%")
msgbox wsh.ExpandEnvironmentStrings("%USERNAME%")
Dim xl
Dim book
Set xl = Wscript.CreateObject("Excel.Application")
'msgbox "Visible OK?"
xl.Visible = True
'Set book = xl.WorkBooks.Open("test.xls")
Set book = xl.WorkBooks.Open("C:\CP\get_kiki_monita_info.xls")
xl.Quit
Set book = Nothing
Set xl = Nothing
Set wsh = Nothing
get_kiki_monita_info.xls
-------------------------------------------
ThisWorkbook
Private Sub Workbook_Open()
get_info_add_tbl
'Me.Close
'Excel.Application.Quit
End Sub
標準モジュール adox参照設定
Public Sub get_info_add_tbl()
Dim login_user
Dim Computer_nm
Dim monitor_serial_number
login_user = Environ("UserName")
Computer_nm = Environ("ComputerName")
monitor_serial_number = Get_Display_serno(Computer_nm)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim intFNum As Integer
Dim strBuff As String
Dim vnt As Variant
Dim I As Long
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = "\\bar\barbar\foofoo.mdb"
End With
Set rs = New ADODB.Recordset
cn.Open
rs.Open "T_KIKI_LOG2", cn, adOpenKeyset, adLockOptimistic
rs.AddNew
rs.Fields(0) = login_user
rs.Fields(1) = Computer_nm
rs.Fields(2) = monitor_serial_number
rs.Fields(3) = Now()
rs.Update
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
ATコマンド
-------------------------------------------
SET_AT()
Dim RetVal
RetVal = Shell("at 16:00 /interactive wscript.exe C:\CP\2009\200901\do_macro.vbs")
End Sub
|
|