Скопируйте Txt из файла и введите в скрипт - PullRequest
0 голосов
/ 19 ноября 2018

Итак, теперь у нас есть скрипт ниже. Отладка выделяет OpenTextfile, выделенный жирным шрифтом Прежде чем поместить его во вторую часть скрипта обновления, можем ли мы как-то подтвердить, что текст прочитан

Функция TextFile_PullData () НАЗНАЧЕНИЕ: отправить все данные из текстового файла в строковую переменную Dim TextFile As Integer Dim FilePath As String Dim FileContent As String Dim strUser As String

' get the current user name
strUser = CreateObject("WScript.Network").UserName
'or use strUser = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%")

'File Path of Text File
FilePath = "C:\Users\" & strUser & "\Temp\VFile.txt"

'Determine the next file number available for use by the FileOpen function
TextFile = FreeFile

'Open the text file
**Open FilePath For Input As TextFile**

'Store file content inside a variable
FileContent = Input(LOF(TextFile), TextFile)

'Close Text File
Close TextFile

'Report Out Text File Contents
MsgBox FileContent

'have the function return the data to the calling code
TextFile_PullData = FileContent

Функция завершения

Sub UpdateSubject () Dim SaveCode As String Dim KeyWord As String Dim objItem As MailItem

KeyWord = "TSD"

SaveCode = TextFile_PullData
Set objItem = GetCurrentItem()
objItem.Subject = "[" + KeyWord + "=" + SaveCode + "] " + objItem.Subject

End Sub

Функция GetCurrentItem () как объект Dim objApp As Outlook.Application

Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
    Case "Explorer"
        Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
        Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select

Set objApp = Nothing

Функция завершения

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019
````   Const ForReading = 1, ForWriting = 2
````   Dim fso, f
````   Set fso = CreateObject("Scripting.FileSystemObject")
````   Set f = fso.OpenTextFile(Environ("USERPROFILE") & "\temp\email.txt")
````   ReadAllTextFile = f.ReadAll

````End Function

````Public Sub UpdateSubject()

````   Dim SaveCode As String
````   Dim KeyWord As String
````   Dim objItem As MailItem

````    KeyWord = "ABD"

````   SaveCode = InputBox("Please enter filecode in the format nnn/nnn", "VisualFiles Auto Save", ReadAllTextFile)
````   MsgBox SaveCode
````   Set objItem = GetCurrentItem()
````   objItem.Subject = "[" + KeyWord + "=" + SaveCode + "] " + objItem.Subject

````End Sub
````Function GetCurrentItem() As Object
````    Dim objApp As Outlook.Application

````    Set objApp = Application
````    On Error Resume Next
````    Select Case TypeName(objApp.ActiveWindow)
````        Case "Explorer"
````            Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
````        Case "Inspector"
````            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
````    End Select
````    Set objApp = Nothing
````End Function


This does what i want on a local pc. Adds a text file puts it in a text box for confirmation, once confirmed adds the text to the subject of the email.

Any idea why this would not work on a terminal server? all local installs of Outlook work fine it can find the email.txt file, but on a terminal server it does not. If i message out the location like Below it gives me the correct location

````MsgBox (Environ("USERPROFILE") & "\temp\email.txt")

Any suggestions


0 голосов
/ 19 ноября 2018

Это не VBScript, потому что вы определяете свои переменные As <something>. В VBScript все переменные имеют тип варианта.

В любом случае, ваш Sub UpdateSubject может очень хорошо читать содержимое текстового файла, но ничего не делает, кроме как отображать его в окне сообщения. Чтобы вернул эти данные вместо того, чтобы просто читать их в локальной переменной, которая живет только внутри этой подпрограммы, сделайте ее Function подобной:

Function TextFile_PullData()
    'PURPOSE: Send All Data From Text File To A String Variable
    Dim TextFile As Integer
    Dim FilePath As String
    Dim FileContent As String
    Dim strUser As string

    ' get the current user name
    strUser = CreateObject("WScript.Network").UserName
    'or use strUser = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%")

    'File Path of Text File
    FilePath = "C:\Users\" & strUser & "\Temp\VFile.txt"

    'Determine the next file number available for use by the FileOpen function
    TextFile = FreeFile

    'Open the text file
    Open FilePath For Input As TextFile

    'Store file content inside a variable
    FileContent = Input(LOF(TextFile), TextFile)

    'Close Text File
    Close TextFile

    'Report Out Text File Contents
    MsgBox FileContent

    'have the function return the data to the calling code
    TextFile_PullData = FileContent
End Function

Далее используйте эту информацию в подпрограмме UpdateSubject

Sub UpdateSubject()
    Dim SaveCode As String
    Dim KeyWord As String
    Dim objItem As MailItem
    Dim FileContent As String

    ' here, you use the function to pull the content of the text file and store it in
    ' a local variable called 'FileContent' to use in your inputbox.
    FileContent = TextFile_PullData


    SaveCode = InputBox("Please enter filecode in the format nnn/nnn", "VisualFiles Auto Save", FileContent)

    Set objItem = GetCurrentItem()
    KeyWord = "TSD"

    objItem.Subject = "[" + KeyWord + "=" + SaveCode + "] " + objItem.Subject

    'or skip the inputox alltogether and set the subject directly:
    'objItem.Subject = "[" + KeyWord + "=" + FileContent + "] " + objItem.Subject
End Sub
...