Есть ли способ ограничить строку до 69 символов и разбить строки на строки, такие как веб-адреса - PullRequest
0 голосов
/ 04 ноября 2019

Я извлекаю различные переменные пользовательского ввода из проекта PowerPoint (режим киоска) и записываю данные в текстовый файл. Текстовый файл может обрабатывать только ограничение в 69 символов (включая пробелы, знаки препинания, специальные символы ... весь свободный текст). Я нашел и изменил некоторый код для удовлетворения большинства моих потребностей, если текст представляет собой простую структуру предложений, однако проблема, с которой я остаюсь, заключается в том, как обрабатывать такие элементы, как веб-адреса или расположения файлов (которые могут работать дольше, чем 69). символов в длину). Другая проблема заключается в том, чтобы разбить слово с дефисом, если часть слова останется под правилом 69 символов.

пример: пользователь вводит контактную информацию. Kealoha Taylor Patrovillanovastronsky, (808) -555-5555, kt_p22@htecheng.org, https://www.htecheng.org/finance/htech/d8/cpt554/patrovillanovastonsky/" В этом примере только веб-сайт содержит 72 символа.
Я хочу получить код для записи следующего кода:текстовый файл.

  Kealoha Taylor Patrovillanovastronsky, (808)-555-5555, kt_p22@
        htecheng.org, https://www.htecheng.org/finance/htech/d8/cpt554
        /patrovillanovastonsky/

Очевидно, что каждая строка может отличаться в зависимости от длины имени, адреса электронной почты или веб-адреса (если он есть)

Код, который у меняследует (это записало бы 3 отдельных строки в блокнот):

'''
Sub Send2text()
Dim Str1, STRin, STRin1, STRin2, STRin3, STRin4, STRout As String
Dim ArrWords, ArrWords1, ArrWords2, ArrWords3, ArrWord4, STRWord As Variant
Dim FilePath As String

STRin = Slide4.UserInput.Text
STRin1 = Slide4.UserInput1.Text
STRin2 = Slide4.UserInput2.Text
STRin3 = Slide4.UserInput3.Text
STRin4 = Slide4.UserInput4.Text
ArrWords = Split(STRin, " ")
ArrWords1 = Split(STRin1, " ")
ArrWords2 = Split(STRin2, " ")
ArrWords3 = Split(STRin3, " ")
ArrWords4 = Split(STRin4, " ")

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''' Open the text file and prepare it for updates  ''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''

FilePath = "C:\Documents|History.txt"
TextFile = FreeFile
Open FilePath For Append As TextFile

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''' begin writing updates                          ''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''

For Each STRWord In ArrWords
    If Len(STRout) + Len(STRWord) <= 69 Then
        If STRout = "" Then STRout = STRWord Else STRout = STRout & " " & STRWord
    ElseIf Len(STRout) + Len(STRWord) >= 69 Then
        If Strl = "" Then
            Str1 = STRout
            Print #TextFile, Str1
            STRout = "      " & STRWord  ' the indent is needed for the paragraph marker
            Str1 = ""
            GoTo Line1
        End If
    End If
Line1:
Next STRWord
Print #TextFile, STRout
STRout = ""

For Each STRWord In ArrWords1
    If Len(STRout) + Len(STRWord) <= 69 Then
        If STRout = "" Then STRout = STRWord Else STRout = STRout & " " & STRWord
    ElseIf Len(STRout) + Len(STRWord) >= 69 Then
        If Strl = "" Then
            Str1 = STRout
            Print #TextFile, Str1
            STRout = "      " & STRWord  ' the indent is needed for the paragraph marker)
            Str1 = ""
            GoTo Line2
        End If
    End If
Line2:
Next STRWord
Print #TextFile, STRout
STRout = ""

For Each STRWord In ArrWords2
    If Len(STRout) + Len(STRWord) <= 69 Then
        If STRout = "" Then STRout = STRWord Else STRout = STRout & " " & STRWord
    ElseIf Len(STRout) + Len(STRWord) >= 69 Then
        If Strl = "" Then
            Str1 = STRout
            Print #TextFile, Str1
            STRout = "      " & STRWord  ' the indent is needed for the paragraph marker)
            Str1 = ""
            GoTo Line3
        End If
    End If
Line3:
Next STRWord
Print #TextFile, STRout
STRout = ""


Close TextFile

End With
End Sub

'' '

Очень признателен за вашу помощь. С уважением, Роберт

...