0 / 0 / 0
Регистрация: 24.08.2018
Сообщений: 60
1

Обработка текстовых данных Word. "ThisDocument" не является членом "Globals"

23.08.2019, 16:36. Показов 1234. Ответов 1

Author24 — интернет-сервис помощи студентам
код с ошибкой:
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Imports Microsoft.Office.Interop.Word
 
Enum ТипАлфавит
    Русский
    Латинский
End Enum
 
Public Class Form1
    Public Sub Form1_Load(sender As Object,
      e As EventArgs) Handles Me.Load
        cmbАлфавит.Text = "Русский"
    End Sub
 
    Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ТекстовыеДанные As КлассТекстовыеДанные = New КлассТекстовыеДанные(Диапазон:=Globals.ThisDocument.Content,
     Алфавит:=Switch(cmbАлфавит.Text = "Русский", ТипАлфавит.Русский,
    cmbАлфавит.Text = "Латинский", ТипАлфавит.Латинский),
      Сортировать:=Switch(rdbПоВозрастанию.Checked, WdSortOrder.wdSortOrderAscending,
     rdbПоУбыванию.Checked, WdSortOrder.wdSortOrderDescending),
     УдалятьОдинаковые:=chbУдалятьОдинаковые.Checked)
 
        ТекстовыеДанные.Обработать()
        ТекстовыеДанные = Nothing
    End Sub
 
 
    Public Sub Закрыть_Click(sender As Object, e As EventArgs) Handles Закрыть.Click
        Close()
    End Sub
End Class
 
Class КлассТекстовыеДанные
        Public Диапазон As Range
    Public Алфавит As ТипАлфавит
    Public Сортировать As WdSortOrder
    Public УдалятьОдинаковые
    Private Документ As Document
    Private Таблица As Table
    Private МаксКолБуквВСловах As Byte
 
 
 
    Sub New(Диапазон As Range,
            Aлфавит As ТипАлфавит,
            Сортировать As WdSortOrder,
            УдалятьОдинаковые As Boolean)
        Me.Диапазон = Диапазон
        Me.Алфавит = Aлфавит
        Me.Сортировать = Сортировать
        Me.УдалятьОдинаковые = УдалятьОдинаковые
    End Sub
 
 
    Sub Обработать()
            МаксКолБуквВСловах = ОпределитьМаксКолБуквВСловах()
        If МаксКолБуквВСловах = 0 Then
            MessageBox.Show("В тексте отсутсвуют искомые слова")
            Exit Sub
        End If
        Документ = Globals.ThisDocument.Application.Documents.Add
            Таблица = Документ.Tables.Add(Документ.Range, 1, 2)
            ЗаписатьВТaблицуПредложения()
        Таблица.Sort(FieldNumber:="столбацам 1", SortOrder:=Сортировать)
        If УдалятьОдинаковые Then УдалитьИзТаблицыПовторяющиесяПредложения()
    End Sub
 
        Public Function ОпределитьМаксКолБуквВСловах() As Byte
 
            Dim m As Byte, n As Byte
            For Each Слово As Range In Диапазон.Words
            If ПринадлежитАлфавиту(Слово) Then
                n = Слово.Text.Trim.Length
                If n > m Then m = n
            End If
        Next Слово
        Return m
        End Function
 
 
    Public Sub ЗаписатьВТaблицуПредложения()
 
        With Таблица
            For Each Предложение As Range In Диапазон.Sentences
                If СодержитДлинноеСлово(Предложение) Then
                    .Cell(Таблица.Rows.Count, 1).Range.Text = Предложение.Text.Trim
                    .Cell(Таблица.Rows.Count, 2).Range.Text = "1"
                    '(не уверена) 
                    .Rows.Add()
                End If
            Next Предложение
            .Rows.Last.Delete()
        End With
    End Sub
 
    Public Sub УдалитьИзТаблицыПовторяющиесяПредложения()
        Dim i As Integer = 2
        With Таблица
            Do While i <= .Rows.Count
                If .Cell(i, 1).Range.Text = .Cell(i - 1, i).Range.Text Then
                    .Cell(i - 1, 2).Range.Text = Val(.Cell(i - 1, 2).Range.Text) + 1
                    .Rows(i).Delete()
                Else
                    i += 1
 
                End If
            Loop
        End With
    End Sub
 
    Public Function СодержитДлинноеСлово(Предложение As Range) As Boolean
        For Each Слово As Range In Предложение.Words
            If ПринадлежитАлфавиту(Слово) Then _
            If Слово.Text.Trim.Length = МаксКолБуквВСловах Then Return True
        Next Слово
        Return False
    End Function
 
    Public Function ПринадлежитАлфавиту(Слово As Range) As Boolean
        Dim Шаблон As String = Switch(Алфавит = ТипАлфавит.Русский, "[A-я]",
Алфавит = ТипАлфавит.Латинский, "[A-z]")
        For Each Символ As Range In Слово.Characters
            If Not Символ.Text Like Шаблон Then Return False
        Next Символ
        Return True
    End Function
 
End Class

на строке 15 указывает данную ошибку, в чем там может быть проблема?
- (также есть проблема со Switch (Ошибка: Switch является типом класса и не может использоваться как выражения )) строка 18
- файл ThisDocument:
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Imports WindowsApp1
 
Public Class ThisDocument
 
    Dim Форма As Form1
 
    Public Sub ThisDocument_Startup() Handles Me.Startup
        Форма = New Form1
        Форма.Show()
    End Sub
 
 
 
    Public Sub ThisDocument_Shutdown() Handles Me.Shutdown
 
    End Sub
 
    Public Sub ThisDocument_ActivateEvent() Handles Me.ActivateEvent
        Форма.BringToFront()
    End Sub
End Class
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2019, 16:36
Ответы с готовыми решениями:

Обработка текстовых данных Word. Определить каких слов в тексте больше - русских или английских
Определить каких слов в тексте больше - русских или английских. Исключить из подсчета слова с...

Выяснить, является ли число А членом арифметической прогрессии с шагом В и первым членом С
нужно использовать цикл while с предусловием

Выяснить, является ли n членом арифметической прогрессии с первым членом равным a 1 и разностью d
выяснить, является ли n членом арифметической прогрессии с первым членом равным a 1 и разностью d.

Как программно удалить код и ThisDocument. В Word Alt+F11?
Подскажите как программно удалить код и ThisDocument. В Word Alt+F11.

1
63 / 71 / 1
Регистрация: 23.05.2015
Сообщений: 360
Записей в блоге: 52
27.08.2019, 23:23 2
Ничего себе 15-я строка:

Dim ТекстовыеДанные As КлассТекстовыеДанные = New КлассТекстовыеДанные(Диапазон:=Globals.ThisDocument.Content, Алфавит:=Switch(cmbАлфавит.Text = "Русский", ТипАлфавит.Русский, cmbАлфавит.Text = "Латинский", ТипАлфавит.Латинский), Сортировать:=Switch(rdbПоВозрастанию.Checked, WdSortOrder.wdSortOrderAscending, rdbПоУбыванию.Checked, WdSortOrder.wdSortOrderDescending), УдалятьОдинаковые:=chbУдалятьОдинаковые.Checked)

Вы сами написали, что "ThisDocument" не является членом "Globals" — я подчеркнул это место в строке. Значит надо убирать Globals и оставить Диапазон:=ThisDocument.Content.
Эх, подозреваю, что это не сработает.
0
27.08.2019, 23:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2019, 23:23
Помогаю со студенческими работами здесь

Обработка текстовых данных
Дана последовательность, содерж от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских...

Обработка текстовых данных
Помогите, пожалуйста, решить 9 вариант: Дан текст – непустая последовательность не длиннее ста...

Обработка текстовых данных
Дана последовательность, содерж от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских...

Обработка текстовых данных
Уважаемы форумчане, помогите с решением задачи. Сначала нужно ввести n кол-во строк в файл, потом...

Обработка текстовых данных
Определить, есть ли слова в последовательности идентификаторами Вводится последовательность слов....

Обработка текстовых данных
Помогите с кодом. Напечатайте слова в тексте, предварительно поменяв местами первую и последнюю...

Обработка текстовых данных
С компьютера вводится небольшой текст, определить на какую букву начинается больше всего слов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru