Всем привет! При копировании таблицы ворд в эксель сильно мешают символы следующей строки "ПИ", т.к. делят данные на разные строки. Можно ли их заменить, например, на пробел или "_"? Понятно, что штатными средствами нельзя, но в vba word я нолик.
Всем привет! При копировании таблицы ворд в эксель сильно мешают символы следующей строки "ПИ", т.к. делят данные на разные строки. Можно ли их заменить, например, на пробел или "_"? Понятно, что штатными средствами нельзя, но в vba word я нолик.Leprotto
Странно.. код по замене символов при запуске в самом ворд работает, а из экселя уже нет. Причем просто копию делает, а весь код выполнять не хочет. Код экселя:
[vba]
Код
Sub ConvertFromWordToExcelTarget() 'On Error GoTo letQuit Dim fd As FileDialog Dim FSO As Object Dim objWordTarget As Object Dim wrdTarget As Object Dim strTargetFile As String 'целевой файл Set FSO = CreateObject("Scripting.FileSystemObject")
'выбор целевого файла: Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Filters.Clear .Filters.Add "Файлы Word", "*.doc*" .Show End With If fd.SelectedItems.Count = 0 Then MsgBox "файл не выбран, операция прервана" GoTo letQuit 'на выход End If strTargetFile = fd.SelectedItems(1) 'имя выбранного файла
Set objWordTarget = CreateObject("Word.Application") Set wrdTarget = objWordTarget.Documents.Open(strTargetFile, , True) 'открытие целевого файла
objWordTarget.Visible = True objWordTarget.Activate 'GoTo ops objWordTarget.Run "replaceSymbolsPub" 'replaceSymbolsPubCopy - работает, а с заменой символов уже нет 'GoTo ops wrdTarget.Close False
test: MsgBox "oki" letQuit: objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Quit" Exit Sub ops: wrdTarget.Close False objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Ops" End Sub
[/vba]
Код ворда:
[vba]
Код
Public Sub replaceSymbolsPubCopy() Selection.WholeStory Selection.Copy End Sub
Public Sub replaceSymbolsPub() Selection.WholeStory Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 'замена неразрывных пробелов на пробел With Selection.Find .Text = "^s" .Replacement.Text = " " .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll 'РУГАЕТСЯ ТУТ !!!
'копия результата Selection.WholeStory Selection.Copy End Sub
[/vba]
Подскажите в чем ошибка, плизз
Странно.. код по замене символов при запуске в самом ворд работает, а из экселя уже нет. Причем просто копию делает, а весь код выполнять не хочет. Код экселя:
[vba]
Код
Sub ConvertFromWordToExcelTarget() 'On Error GoTo letQuit Dim fd As FileDialog Dim FSO As Object Dim objWordTarget As Object Dim wrdTarget As Object Dim strTargetFile As String 'целевой файл Set FSO = CreateObject("Scripting.FileSystemObject")
'выбор целевого файла: Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Filters.Clear .Filters.Add "Файлы Word", "*.doc*" .Show End With If fd.SelectedItems.Count = 0 Then MsgBox "файл не выбран, операция прервана" GoTo letQuit 'на выход End If strTargetFile = fd.SelectedItems(1) 'имя выбранного файла
Set objWordTarget = CreateObject("Word.Application") Set wrdTarget = objWordTarget.Documents.Open(strTargetFile, , True) 'открытие целевого файла
objWordTarget.Visible = True objWordTarget.Activate 'GoTo ops objWordTarget.Run "replaceSymbolsPub" 'replaceSymbolsPubCopy - работает, а с заменой символов уже нет 'GoTo ops wrdTarget.Close False
test: MsgBox "oki" letQuit: objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Quit" Exit Sub ops: wrdTarget.Close False objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Ops" End Sub
[/vba]
Код ворда:
[vba]
Код
Public Sub replaceSymbolsPubCopy() Selection.WholeStory Selection.Copy End Sub
Public Sub replaceSymbolsPub() Selection.WholeStory Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 'замена неразрывных пробелов на пробел With Selection.Find .Text = "^s" .Replacement.Text = " " .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll 'РУГАЕТСЯ ТУТ !!!
Sub ConvertFromWordToExcelTarget() 'On Error GoTo letQuit Dim fd As FileDialog Dim FSO As Object Dim objWordTarget As Object Dim wrdTarget As Object Dim strTargetFile As String 'целевой файл Set FSO = CreateObject("Scripting.FileSystemObject")
'выбор целевого файла: Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Filters.Clear .Filters.Add "Файлы Word", "*.doc*" .Show End With If fd.SelectedItems.Count = 0 Then MsgBox "файл не выбран, операция прервана" GoTo letQuit 'на выход End If strTargetFile = fd.SelectedItems(1) 'имя выбранного файла
Set objWordTarget = CreateObject("Word.Application") Set wrdTarget = objWordTarget.Documents.Open(strTargetFile, , True) 'открытие целевого файла With objWordTarget .Visible = True .Activate 'GoTo ops .Selection.WholeStory .Selection.Find.ClearFormatting .Selection.Find.Replacement.ClearFormatting 'замена неразрывных пробелов на пробел With .Selection.Find .Text = "^s" .Replacement.Text = " " .Forward = True .Wrap = 2 .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With .Selection.Find.Execute Replace:=2 'РУГАЕТСЯ ТУТ !!!
'копия результата .Selection.WholeStory .Selection.Copy End With ' objWordTarget.Run "replaceSymbolsPub" 'replaceSymbolsPubCopy - работает, а с заменой символов уже нет 'GoTo ops wrdTarget.Close False
test: MsgBox "oki" letQuit: objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Quit" Exit Sub ops: wrdTarget.Close False objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Ops" End Sub
Sub ConvertFromWordToExcelTarget() 'On Error GoTo letQuit Dim fd As FileDialog Dim FSO As Object Dim objWordTarget As Object Dim wrdTarget As Object Dim strTargetFile As String 'целевой файл Set FSO = CreateObject("Scripting.FileSystemObject")
'выбор целевого файла: Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Filters.Clear .Filters.Add "Файлы Word", "*.doc*" .Show End With If fd.SelectedItems.Count = 0 Then MsgBox "файл не выбран, операция прервана" GoTo letQuit 'на выход End If strTargetFile = fd.SelectedItems(1) 'имя выбранного файла
Set objWordTarget = CreateObject("Word.Application") Set wrdTarget = objWordTarget.Documents.Open(strTargetFile, , True) 'открытие целевого файла With objWordTarget .Visible = True .Activate 'GoTo ops .Selection.WholeStory .Selection.Find.ClearFormatting .Selection.Find.Replacement.ClearFormatting 'замена неразрывных пробелов на пробел With .Selection.Find .Text = "^s" .Replacement.Text = " " .Forward = True .Wrap = 2 .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With .Selection.Find.Execute Replace:=2 'РУГАЕТСЯ ТУТ !!!
'копия результата .Selection.WholeStory .Selection.Copy End With ' objWordTarget.Run "replaceSymbolsPub" 'replaceSymbolsPubCopy - работает, а с заменой символов уже нет 'GoTo ops wrdTarget.Close False
test: MsgBox "oki" letQuit: objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Quit" Exit Sub ops: wrdTarget.Close False objWordTarget.Quit Set wrdTarget = Nothing: Set objWordTarget = Nothing Set FSO = Nothing MsgBox "Ops" End Sub
Leprotto, что именно "не работает"? Выдаёт ошибку или не получается правильный результат? И если "вы пробовали" - то покажите пример "вашей пробы" в ваших же файлах.
Leprotto, что именно "не работает"? Выдаёт ошибку или не получается правильный результат? И если "вы пробовали" - то покажите пример "вашей пробы" в ваших же файлах.AndreTM
AndreTM, пробовал: 1) вызывать макрос Public Sub replaceSymbolsPub ,расположенного в "Normal" ворда. Коды в сообщении #5; 2) выполнять те же команды в самом коде эксель. Точно так же, как KuklP. Коды в сообщении #9.
В обоих случаях ошибка: run-time error 4605 (данная команда недоступна) на строку [vba]
Код
Selection.Find.Execute Replace:=wdReplaceAll
[/vba], в том числе на вариант [vba]
Код
Selection.Find.Execute Replace:=2
[/vba]
Цитата
И я пробовал. Все работает.
KuklP, не понятно как так? Попробовал подключить библиотеку Microsoft Word 15.0 Object Library, результат не изменился.
AndreTM, пробовал: 1) вызывать макрос Public Sub replaceSymbolsPub ,расположенного в "Normal" ворда. Коды в сообщении #5; 2) выполнять те же команды в самом коде эксель. Точно так же, как KuklP. Коды в сообщении #9.
В обоих случаях ошибка: run-time error 4605 (данная команда недоступна) на строку [vba]
Код
Selection.Find.Execute Replace:=wdReplaceAll
[/vba], в том числе на вариант [vba]
Код
Selection.Find.Execute Replace:=2
[/vba]
Цитата
И я пробовал. Все работает.
KuklP, не понятно как так? Попробовал подключить библиотеку Microsoft Word 15.0 Object Library, результат не изменился.Leprotto
Уж до этого-то я додумался ))))) Сейчас попробовал на другом компе с офисом 2010 и еще на другом с офисом 2013. Везде действительно работает, кроме моего компа!!! Тогда вопрос что может быть не так с моими настройками?
Цитата
Просто скопируйте мой код к себе.
Уж до этого-то я додумался ))))) Сейчас попробовал на другом компе с офисом 2010 и еще на другом с офисом 2013. Везде действительно работает, кроме моего компа!!! Тогда вопрос что может быть не так с моими настройками?Leprotto
AndreTM, замечательная цитата, только она делу не поможет. Я спросил "что может быть..." на случай, если кто-то сталкивался с подобной проблемой
AndreTM, замечательная цитата, только она делу не поможет. Я спросил "что может быть..." на случай, если кто-то сталкивался с подобной проблемойLeprotto