Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Word.Application Добавлено: 30.05.08 18:48  

Автор вопроса:  nat-z
Столкнулась с проблемой - мне надо вызвать из VB ворд. Ворд вызывается, файл загружается, но проблемы с кодировкой и шрифтами. У меня открываемые файлы - текстовые *.txt в кодировке MS-DOS. Брала Encoding:=msoEncodingOEMCyrillicII и все проч. значения - не помогает! И вообще после вставки "кодированный текст" ворд не выходит в меню выбора кодировки (а запущенный "вручную" -норм). Пробовала менять ConfirmConversions:=True/False - при false вообще файл не открывает (код возврата не смотрела).
А мне надо ВСЕГДА открывать в досовской кодировке и всегда шрифт Курьер, только размер шрифта менять!
Помогите, кто знает! Только на вставку VB в ворде не отсылайте - там я уже была!

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 1
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #1
Добавлено: 30.05.08 19:31
Нат, а ты не пробовала банально записать макрос и посмотреть, как оно в макросе выглядит.

Не знаю какой у тебя но вот мой Word 2003 придумал такую конструкцию :)

Documents.Open FileName:="""! Регистрация.txt""", ConfirmConversions:= _
        False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        Encoding:=866

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #2
Добавлено: 30.05.08 19:34
и все проч. значения - не помогает!

Примечателен параметр последнего Named argument-а, Encoding:=866, ты и это пробовала?

Ответить

Номер ответа: 3
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #3 Добавлено: 31.05.08 08:16
Не поняла - что значит "записать"? (я с макросами вообще-то не дружу).
Я смотрела по Properties своего досовского документа и старалась оттуда выбрать параметры!
Вот эти параметры Documents.Open - как они получаются? В Properties этого нет, что значит:
мой Word 2003 придумал??
И где бы глянуть еще шрифт и размер шрифта?

Ответить

Номер ответа: 4
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #4 Добавлено: 31.05.08 09:56
И сейчас только попробовала, у меня (правда Office-2007) выдает на этом Open error 4198, ошибка команды!
Что делать????

Ответить

Номер ответа: 5
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #5
Добавлено: 31.05.08 13:54
Не поняла - что значит "записать"? (я с макросами вообще-то не дружу).


А стоит подружиться. Незнаю как в 2007, а в 2003 есть такой пункт меню "Сервис" - "Макрос" - "Начать запись" называется.

1. В новом документе начинаешь запись.

2. Открываешь свой дос текст, указывая ворду кодировку и т.п.

3. Потом, "Правка" - "Выделить всё", и устанавливаешь имя и размер шрифта.

4. Нажимаешь квадратик "Остановить запись" и ищешь макрос записанный "придуманный" Вордом в результате твоих действий.

Ответить

Номер ответа: 6
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #6 Добавлено: 31.05.08 19:13
Ничего не поняла!!! У меня есть “Макрос” “Создать”. Но там Sub Макрос() End Sub и все. И никаких “Начать запись “ нигде!!!! И никаких подсказок и всплывающих названий полей!!
 Кодировку файла я и так вижу в Properties в TextEncoding для этого документа.
Но как бы с файлом ни возилась, - выделение, замена шрифта и проч - ничего ни в какой макрос не попадает!!!
В 2007 ворде там же где макросы есть “Организатор”. Но он по командам ворда и как я поняла – формирует нов шаблон.
Мне все это не для изучения нужно!!!
И мне нужно не именно для моего компьютера, а чтобы во всех вордах работало!!!!!!
Просто открытие файла, который заведомо в ДОСовской кодировке, замена размера шрифта и все!!! И кодировку я уже знаю, Но почему-то objWord.ActiveDocument.TextEncoding=… якобы не поддерживается!!!
Обычный Sub(<имя и путь файла>,<портрет/пейзаж>,<шрифт>,<size>;) и все!!!
Вот эта конструкция при любом Encoding не переводит из ДОСа!!! А при ConfirmConversions:=false вообще не открывает файл без всяких визгов!!!!!
Set objWord = CreateObject("Word.Application";)
    objWord.Documents.Open FileName:=NFile, ReadOnly:=False, Encoding:=866, ConfirmConversions:=true

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 31.05.08 19:53
Это вставка из буфера обмена.
Таким образом можно в ВБ загрузить файл, скопировать его в буфер и вставить в ворд.
Буфер обмена, должен сработать универсально для любого ворда.

Ответить

Номер ответа: 8
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #8 Добавлено: 01.06.08 01:57
No....
Error 91. Я даже картинку с сообщением и текстом модуля с экрана сохранила!!!!

Ответить

Номер ответа: 9
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #9 Добавлено: 01.06.08 02:00
nat, пойми, написанное для 2007-го офиса никогда не будет работать для всех других вордов.
- но ведь я пишу просто для ворда!!! Тексты досовские (*.txt) берутся просто со стороны, из других программ и сформированы не вордом (они же досовские)!!!

Но написала все в точности, могу и картинку с экрана прислать!!!

Ответить

Номер ответа: 10
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #10 Добавлено: 01.06.08 05:23
Это обязательно открывать именно в ворде?

В самой программе можно выставить нужный шрифт в текстбоксе и грузить туда текст из файла.

Перекодировать из 866 тоже не проблема.

Ответить

Номер ответа: 11
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #11 Добавлено: 01.06.08 13:47
Set objWord = CreateObject("Word.Application";)
    objWord.Selection.Paste
- работает, мои извинения!!! Просто я вчера уже затупила и как мне послали так и вставила, без Open. Так что Paste работает норм.

Конечно, вариант поставить 2003 (тем более что 2007 во многих вопросах почему-то тупит и внешне неприятный),
Но хотелось бы решение найти!!!

Ответить

Номер ответа: 12
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #12 Добавлено: 01.06.08 13:56
ворд я использую как вьювер и для печати. Именно его - потому что надо переформатировать текст часто (файлы часто очень широкие).

Всю ночь прорыдала, чувствую, буду искать и ставить Office2003.
Кто-то может мне написать начисто Documents.Open с параметрами, как это будет выглядеть в 2003, чтобы файл txt открывался в 866 кодировке, без запроса преобразования, с заданным разворотом бумаги (в 2007 почему-то
objWord.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
не работает, приходится разворачивать лист прямым указанием высоты и ширины.
И чтобы можно было указывать шрифт и размер шрифта?
А я в понедельник буду искать 2003 и ставить!

Ответить

Номер ответа: 13
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #13 Добавлено: 02.06.08 01:14
Поствыила 2003 -
objWord.Documents.Open FileName:=NFile, ReadOnly:=False, Encoding:=866,
- заработала кодировка.
Но все равно проблемы остались! То ли я уже не порнимаю что-то, то ли в умных книжках неправильно пишут!!:
1)
objWord.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
– все равно не работает (но и ошибки не выдает). Приходится ориентацию листа указывать значениями высоты и ширины. Это терпимо, но неприятно.
2) Если в Open указываю ConfirmConversions:=True, выводится диалог не преобразование файла (а мне бы не надо!!!), если даю false – файл *.txt не открывается, но у него ставится отметка о занятости и при след запуске – уже только на чтение. А если ставлю дополнительно в Open Format:=wdOpenFormatEncodedText – вообще VB выдает ошибку!!
3) Пробую:
  With objWord.ActiveDocument.Styles(wdStyleBodyText).Font     '    . wdStyleNormal).Font
        .Bold = True  ' - запрашиваемый номер семейства не существует...
        .Name = "Arial"
        .Size = 24
    End With
- выдает error 5941: запрашиваемый номер семейства не существует! Пробовала и цифры и буквы и все значения! Что писать для *.txt вместо wdStyleBodyText)???
Кто может высказаться по этим трем вопросам? (третий для меня самый важный!!)

Ответить

Номер ответа: 14
Автор ответа:
 nat-z



Вопросов: 13
Ответов: 85
 Профиль | | #14 Добавлено: 02.06.08 11:05
Спасибо!! Диковинный конечно способ через выделение. Но, действительно, почему-то PageSAetup.font не работает. И видела word.font (это общие установки ворда что ли?) но у меня тоже не спрцювало. Может, неправильно написала?
Сейчас у меня вот такая угловатая, но работающая вещь.

Public Sub exe_word0(NFile As String, orient As Integer, nsize As Integer)
Dim n1, n2 As Long
Dim objWord As Object
If orient = 1 Then  ' портрет.
   n1 = 29.7
   n2 = 21
Else  ' пейзаж.
   n2 = 29.7
   n1 = 21
End If
Set objWord = CreateObject("Word.Application";)
objWord.Documents.Open FileName:=NFile, ReadOnly:=False, Encoding:=866, ConfirmConversions:=True
objWord.ActiveDocument.PageSetup.PageWidth = objWord.CentimetersToPoints(n2)  ' - работает.
objWord.ActiveDocument.PageSetup.PageHeight = objWord.CentimetersToPoints(n1) ' - работает.
objWord.Selection.WholeStory
objWord.Selection.Font.Name = "Courier New"
objWord.Selection.Font.Size = nsize
Set objWord = Nothing
End Sub

Еще бы от диалога по перекодировке текста избавиться, чтобы сразу молча брала как досовский текст!

Ответить

Номер ответа: 15
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #15 Добавлено: 02.06.08 13:40
Nat, какая разница реадонли или нет, смущает заголовок?

Как превью перед печатью он и так справляется отлично. Проверено:

    Dim objWord As Object

    Set objWord = CreateObject("Word.Application";)
    objWord.Documents.Open FileName:=NFile, ReadOnly:=True, Encoding:=866
    With objWord.ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = vbNull
        .TopMargin = objWord.CentimetersToPoints(3)
        .BottomMargin = objWord.CentimetersToPoints(1.5)
        .LeftMargin = objWord.CentimetersToPoints(2)
        .RightMargin = objWord.CentimetersToPoints(2)
        .Gutter = objWord.CentimetersToPoints(0)
        .HeaderDistance = objWord.CentimetersToPoints(1.25)
        .FooterDistance = objWord.CentimetersToPoints(1.25)
        .PageWidth = objWord.CentimetersToPoints(29.7)
        .PageHeight = objWord.CentimetersToPoints(21)
        .FirstPageTray = 0
        .OtherPagesTray = 0
        .SectionStart = 2
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = 0
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = 0
    End With
    objWord.Selection.WholeStory
    objWord.Selection.Font.Name = "Courier New"
    objWord.Selection.Font.Size = 14
    objWord.Selection.MoveUp Unit:=5, Count:=1
    objWord.Visible = True
    Set objWord = Nothing


Это варварский код естественно, хлама лишнего немеренно.

Зато будет тебе над чем поработать.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам