powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Только формулы в word
12 сообщений из 12, страница 1 из 1
Только формулы в word
    #39025166
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые форумчане! Такой вот вопрос, имеется макрос, должен оставлять только формулы в ворде, а при работе он полностью все стирает, подскажите пожалуйста в чем ошибка:
Код: vbnet
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.
Sub NumberOfSheets()
  
 Dim oInlineShape As InlineShape
For Each oInlineShape In ActiveDocument.InlineShapes
 oInlineShape.Delete
Next
  
  
 Dim p As Paragraph, r As Range
For Each p In ActiveDocument.Paragraphs
  Set r = p.Range
  If Not r.Information(wdWithInTable) Then
    If r.InlineShapes.Count = 0 Then
      r.Delete
    End If
  End If
Next
 
 
 
    
    Do While ActiveDocument.Tables.Count <> 0
    ActiveDocument.Tables(1).Delete
Loop
 
 
 
End Sub
...
Рейтинг: 0 / 0
Только формулы в word
    #39025196
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
образец документа будет?
...
Рейтинг: 0 / 0
Только формулы в word
    #39025309
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот к примеру:
...
Рейтинг: 0 / 0
Только формулы в word
    #39025314
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Почему код
Код: vbnet
1.
2.
3.
For Each oInlineShape In ActiveDocument.InlineShapes
 oInlineShape.Delete
Next

не должен стирать формулы? В нем нет никаких условий
...
Рейтинг: 0 / 0
Только формулы в word
    #39025319
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProОк. Почему код
Код: vbnet
1.
2.
3.
For Each oInlineShape In ActiveDocument.InlineShapes
 oInlineShape.Delete
Next

не должен стирать формулы? В нем нет никаких условий

Так этот кусок должен чистить от картинок
...
Рейтинг: 0 / 0
Только формулы в word
    #39025323
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
werovulvТак этот кусок должен чистить от картинокэтот кусок чистит от инлайн-шейпов, подо что попадает и ваша формула
...
Рейтинг: 0 / 0
Только формулы в word
    #39025329
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProwerovulvТак этот кусок должен чистить от картинокэтот кусок чистит от инлайн-шейпов, подо что попадает и ваша формула
Хмм. А не подскажите какое необходимо условие, а то у меня что то идей на счет этого нет
...
Рейтинг: 0 / 0
Только формулы в word
    #39025336
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, можно попробовать для начала с типами поиграть
Код: vbnet
1.
2.
3.
4.
Dim oInlineShape As InlineShape
For Each oInlineShape In ActiveDocument.InlineShapes
 Debug.Print oInlineShape.Type
Next

Если этого будет недостаточно (есть другие внедренные объекты), потыкайтесь в другие свойства объекта, почитайте их описание
...
Рейтинг: 0 / 0
Только формулы в word
    #39025337
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
werovulv,


попробуйте на копии
Код: vbnet
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.
Sub w150807()
'
Dim j1
Dim tbl As Table
j1 = Word.ActiveDocument.Tables.Count
Do While j1 > 0
Word.ActiveDocument.Tables(j1).Select
    Selection.Rows.ConvertToText Separator:=wdSeparateByParagraphs, _
        NestedTables:=True
        j1 = j1 - 1
        Loop
       
''''''''''''''''''''''''

 
'замена букв
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^$"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        '.Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    ''''''''замена цифр
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^#"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        '.Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
''замена знаков препинания
    With Selection.Find
        .Text = "[\/\.\,\!\?\=\-\_\ №]"
        .Replacement.Text = ""
        '.Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
''убирание лишних абзацов
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p^p"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        '.Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
...
Рейтинг: 0 / 0
Только формулы в word
    #39025341
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, Все равно к сожалению остается картинка. А вот с этим кодом можно сделать что то? Он у меня удаляет чисто формулы не трогая картинки, можно ль обратно как то сделать, чтоб удаление было?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim t As Object, y As OLEFormat
For Each t In ActiveDocument.InlineShapes
  GoSub chk
Next
For Each t In ActiveDocument.Shapes
  GoSub chk
Next
Exit Sub
 
chk:
  Set y = t.OLEFormat
  If Not y Is Nothing Then
    If y.ClassType Like "*Equation*" Then
      t.Delete
    End If
  End If
Return
...
Рейтинг: 0 / 0
Только формулы в word
    #39025356
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
werovulv,

добавила в хвост
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
j1 = Word.ActiveDocument.Shapes.Count
Do While j1 > 0
Debug.Print "*"; j1;
Word.ActiveDocument.Shapes(j1).ConvertToInlineShape
j1 = j1 - 1
Loop
Dim j2
j1 = Word.ActiveDocument.InlineShapes.Count
Do While j1 > 0
j2 = Word.ActiveDocument.InlineShapes(j1).Type
If j2 = 1 Then
Debug.Print "=", Word.ActiveDocument.InlineShapes(j1).OLEFormat.ProgID
Else

Word.ActiveDocument.InlineShapes(j1).Delete
End If
j1 = j1 - 1
Loop
'
End Sub
...
Рейтинг: 0 / 0
Только формулы в word
    #39025360
werovulv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, ого!) Отлично все работает! Спасибо Вам большое!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Только формулы в word
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]