Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22351 / 76732 ←次へ | 前へ→

【59764】Re:ATコマンドでファイルサーバーのブックが開けない
質問  ON  - 09/1/7(水) 16:33 -

引用なし
パスワード
   途中報告

名前  :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

0 hits

【59752】ATコマンドでファイルサーバーのブックが開けない ON 09/1/7(水) 9:26 質問
【59753】Re:ATコマンドでファイルサーバーのブック... ON 09/1/7(水) 9:45 質問
【59764】Re:ATコマンドでファイルサーバーのブック... ON 09/1/7(水) 16:33 質問
【59782】Re:ATコマンドでファイルサーバーのブック... ON 09/1/8(木) 11:20 発言

22351 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free