vbs objshell.run "%comspec%/ c ping"&myobj& ">>"とreportfilenameを実行していません。
質問
コードは、ファイルへのPINとTRACERTコマンドを実行してからファイルを電子メールで送信することになっています。代わりに、空白のファイルを作成します。
私はobjshell.execからリダイレクトしようとしましたが、ポップアップするポップアップウィンドウは迷惑で詐欺師です。そして、タスクスケジューラを使用してバックグラウンドで定期的に実行されます。
生成された構文はこのようになります(そしてコマンドラインに貼り付けたときに動作します)。
%COMSPEC% /c ping speedtest.advance2000.com >>c:\temp\testforteresa2-foo@bar-2014-01-08__10-01.txt
.
結果のコマンド文字列は、CMD>ウィンドウに貼り付けられているがExcelのテスト、および実行されたVBSでは、空白のファイルが生成されます...
送信する電子メールをチェックするために待機状態をお持ちにしないように、TXTファイルを削除できます。後でそれを理解する:)
'On Error Resume Next
Const ForReading = 1
Const ForAppending = 8
'PingSpeedTest
Sub PingSpeedTest()
Dim GetUserLoginID ''As String
Set objfso = CreateObject("Scripting.FileSystemObject")
Dim WSHNetwork
Set WSHNetwork = CreateObject("WScript.Network")
GetUserLoginID = CStr(WSHNetwork.UserName)
getuserdomain = CStr(WSHNetwork.UserDomain)
'''''''''''REPORT NAME''''''''''''''''''''''''''''''
ReportFileNAme = "c:\temp\testforteresa2-" & GetUserLoginID & "@" & getuserdomain & "-" & _
DatePart("yyyy", Now) & "-" & _
Right("0" & DatePart("m", Now), 2) & "-" & _
Right("0" & DatePart("d", Now), 2) & "__" & _
Right("0" & DatePart("h", Now), 2) & "-" & _
Right("0" & DatePart("m", Now), 2) & ".txt"
On Error Resume Next
objfso.DeleteFile (ReportFileNAme)
On Error GoTo 0
Set reportfile = objfso.OpenTextFile(ReportFileNAme, ForAppending, True)
Set objShell = CreateObject("WScript.Shell")
Set List = CreateObject("System.Collections.ArrayList")
List.Add "speedtest.advance2000.com"
List.Add "myphone.advance2000.com"
List.Add "vdesk.advance2000.com"
'''
For Each MyObj In List
MyCmd = "%COMSPEC% /c ping " & MyObj & " >>" & ReportFileNAme '''<<< Should work- creates correct syntax but no output
objShell.Run MyCmd, 3, True
MyCmd = "%COMSPEC% /c tracert " & MyObj & " >>" & ReportFileNAme
objShell.Run MyCmd, 3, True
Next ''MyObj
Dim olLook ''As Object 'Start MS Outlook
Dim olNewEmail ''As MailItem ' Object 'New email in Outlook
Dim strContactEmail ''As String 'Contact email address
Set olLook = CreateObject("Outlook.Application")
Set olNewEmail = olLook.createitem(0)
strEmailSubject = "TopSellers.accdb Application"
strEmailText = "PING AND TRACEROUTE RESULTS"
'strContactEmail = GetUserLoginID & "@" & getuserdomain & ".com"
With olNewEmail 'Attach template
.To = "Foo@BAR.com" 'strContactEmail<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
'.CC = strCc
.body = strEmailText
.Subject = "RE:PING AND TRACERT RESULTS"
.display
.Attachments.Add (ReportFileNAme)
End With
'objfso.DeleteFile (ReportFileNAme)
End Sub
. 解決
あなたの
Set reportfile = objfso.OpenTextFile(ReportFileNAme, ForAppending, True)
.
ReportFileNameという名前のファイルを開きます。.RUN
"%COMSPEC% /c ping " & MyObj & " >>" & ReportFileNAme
.
はOSにその開いているファイルへの書き込みを要求します。ReportFileの作成をスキップしてみてください。
所属していません StackOverflow