Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326

Вставка jpg-изображений из папки в Word

31.07.2011, 17:04. Показов 11867. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Коллеги собираюсь написать программу, которая бы из папки в которой находятся картинки, грузила их в документ Word.
Причем перед каждой картинкой в ворде была подпись - наименование рисунка.

Кто нибудь писал что то подобное?
Какие варианты можете предложить?
Интересно с вами посоветоваться.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2011, 17:04
Ответы с готовыми решениями:

Вставка изображений в документ Word
Добрый день. Проблема в следующем: Нужно вставить изображение с диска в закладку документа word. Ищу информацию уже несколько дней и не...

Вставка изображений в Word из буфера
С помощью нижеприведенного кода, я достаю изображение хранящееся в базе данных в поток, затем из потока я передаю в буфер обмена, и делаю...

Вставка изображений в Word, ShapeLine конвертация в Shape, транспонирование
Здравствуйте. Недавно на работе столкнулся с одной проблемой, а именно со вставкой в готовый форматный штамп документа Word изображений...

64
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
09.08.2011, 20:31  [ТС]
Студворк — интернет-сервис помощи студентам
Хорошо, завтра по поводу ошибки отпишусь


Цитата Сообщение от Sasha Посмотреть сообщение
Вместо ДЕСТРУКТОР УМА напиши КИБЕР БОГ

Это вам быть кибер богом суждено)
0
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
11.08.2011, 14:57  [ТС]
Ничего не понимаю.
Не смотря на то что заменил код вылетает по прежнему месбокс с тектом ошибка.

а не может быть проблемы в разнице ОС?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
11.08.2011, 19:23
Цитата Сообщение от log Посмотреть сообщение
Ничего не понимаю.
Не смотря на то что заменил код вылетает по прежнему месбокс с тектом ошибка.

а не может быть проблемы в разнице ОС?

Нажми Build проекта после того как поменяешь код.

А что там за операционка?
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
12.08.2011, 15:37  [ТС]
XP

у меня работает на Vista.



Цитата Сообщение от Sasha Посмотреть сообщение
Нажми Build проекта после того как поменяешь код.
Сделаю, завтра отпишусь.
И заодно попробую запустить программу на 7-ке, хр и на другом ком-ре где виста и поэкспериментировать с компьютерами которые находятся в локальных сетях и у которых ограниченные права.

Добавлено через 20 часов 2 минуты
Вообщем даже после builda по-прежнему "Ошибка".

Sasha, попробовал убрать добавление картинок и подписей. оставил лишь создание ворд документа.

Все пашет. Может быть дело в шаблоне ворда. Normal.dot. И на тех компах где вылетает ошибка, они подключены в сеть с ограниченными правами и может быть не разрешено менять этот шаблон и изза этого появляется ошибка.

Еще попробую запустить и посмотреть что будет. К вечеру дам знать.
0
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
13.08.2011, 17:18  [ТС]
Вообщем ошибка по-прежнему вылетает. На любом компе кроме моего...

Все таки думаю дело в шаблоне..

Добавлено через 23 минуты
C++
1
 Word = CreateOleObject("Word.Application");
Документ будет создаваться несмотря на любую версию ворда?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.08.2011, 00:44
Цитата Сообщение от log Посмотреть сообщение
Документ будет создаваться несмотря на любую версию ворда?
Да будет создаваться

Добавлено через 8 минут
Прочти
http://wladm.narod.ru/Borland/word.html
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
16.08.2011, 10:05  [ТС]
Sasha, проверил на разных ком-рах.
Пашет только на моем..
И как я понимаю на вашем.
Может дело в версии билдера? Или может в каких патчах?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
16.08.2011, 14:30
Скинь сюда свой проект я гляну, что там у тебя
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
16.08.2011, 16:10  [ТС]
На форме Вutton и OleContainer.
С папкой image с картинками jpg на диске D

C++
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStringList *b = new TStringList();
  b->Clear();
  b->Sorted = true;
  AnsiString str,Path = "D:\\image\\*.jpg";
 
  TSearchRec sr;
  int iAttributes = faAnyFile;
  int done = FindFirst( Path, iAttributes, sr );
  while(!done)
 {
  b->Add(sr.Name);
  done = FindNext(sr);
 }
 
  FindClose(sr);
 
 Variant vVarParagraph,Var,Dms,Word;
 Word = CreateOleObject("Word.Application");
 Word.OlePropertySet("Visible", false);
 Variant Doc = Word.OlePropertyGet("Documents");
 Doc.OleProcedure("Add");
 
 if(Doc.OlePropertyGet("Count") != 1)
 {
  //MessageBox(0, "Ошибка при создании документов",
  //               "Ошибка", MB_OK);
    ShowMessage(SysErrorMessage(GetLastError()));
   return;
 }
 Dms=Doc.OleFunction("Item",1);
 //Смотреть будем тоже на первый документ
 Dms.OleProcedure("Activate");
 Var=Dms.OlePropertyGet("Paragraphs");
 
 int d = 0;
 for(int i = 0; i < b->Count;i++)
 {
  d++;
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", (Path.SubString(1,3)+ b->Strings[i]).c_str(), false, true);
  vVarParagraph.OlePropertySet("Alignment",1);
  d++;
  str= b->Strings[i];
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
 }
 
 Word.OlePropertySet("Visible", true);
 
 delete b;
 b = NULL;
 
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
16.08.2011, 16:51
Я тебя просил не код сбросить, а проект со всеми юнитами и т.п
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
16.08.2011, 17:19  [ТС]
Прошу прощения, не так понял.
xx.rar
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
16.08.2011, 17:50
Нашёл глюк дома проверю дам знать
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
16.08.2011, 17:55  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Нашёл глюк дома проверю дам знать
буду ждать.
А вообще
Sasha у вас запускается проект?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
16.08.2011, 21:39
Ну во первых вверху добавь вот это
C++
1
2
3
#include <utilcls.h>
#include <sysvari.h>
#include "ComObj.hpp"
А во вторых вот код я его переделал

C++
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
void __fastcall TForm2::Button3Click(TObject *Sender)
{
 TStringList *b = new TStringList();
  b->Clear();
  b->Sorted = true;
  AnsiString str,Path = "D:\\image\\*.jpg";
 
  TSearchRec sr;
  int iAttributes = faAnyFile;
  int done = FindFirst( Path, iAttributes, sr );
  while(!done)
 {
  b->Add(sr.Name);
  done = FindNext(sr);
 }
 
  FindClose(sr);
 
 Variant vVarParagraph,Var,Dms,Word;
 Word = CreateOleObject("Word.Application");
 Word.OlePropertySet("Visible", false);
 Variant Doc = Word.OlePropertyGet("Documents");
 Doc.OleProcedure("Add");
 
 if(Doc.OlePropertyGet("Count") != 1)
 {
  MessageBox(0, "Îøèáêà ïðè ñîçäàíèè äîêóìåíòîâ",
                 "Îøèáêà", MB_OK);
   return;
 }
 
 Dms=Doc.OleFunction("Item",1);
 //Ñìîòðåòü áóäåì òîæå íà ïåðâûé äîêóìåíò
 Dms.OleProcedure("Activate");
 Var=Dms.OlePropertyGet("Paragraphs");
 
 int d = 0;
 for(int i = 0; i < b->Count;i++)
 {
  d++;
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", (Path.SubString(1,Path.Pos("*")-1)+ b->Strings[i]).c_str(), false, true);
  vVarParagraph.OlePropertySet("Alignment",1);
 
  d++;
  str= b->Strings[i];
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
 }
 
 Word.OlePropertySet("Visible", true);
 
 delete b;
 b = NULL;
 
}
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
17.08.2011, 17:37  [ТС]
Спасибо
Sasha завтра отпишусь на счет программы.

Добавлено через 19 часов 45 минут
Да все идеально работает как часы.

Sasha, а вот к примеру подпись сделать...
"Рисунок(всегда такая надпись)" "N(номер загружаемого рисунка)" "-" "image(название файла только без .jpg)"

Нужно прописывать в части:
C++
1
2
3
4
5
6
str= b->Strings[i];
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.08.2011, 18:12
Ща подумаю

Добавлено через 24 минуты
Держи
C++
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *b = new TStringList();
  b->Clear();
  b->Sorted = true;
  AnsiString str,Path = "D:\\*.jpg";
 
  TSearchRec sr;
  int iAttributes = faAnyFile;
  int done = FindFirst( Path, iAttributes, sr );
  while(!done)
 {
  b->Add(ChangeFileExt(sr.Name,""));
  done = FindNext(sr);
 }
 
  FindClose(sr);
 
 Variant vVarParagraph,Var,Dms,Word;
 Word = CreateOleObject("Word.Application");
 Word.OlePropertySet("Visible", false);
 Variant Doc = Word.OlePropertyGet("Documents");
 Doc.OleProcedure("Add");
 
 if(Doc.OlePropertyGet("Count") != 1)
 {
  MessageBox(0, "Îøèáêà ïðè ñîçäàíèè äîêóìåíòîâ",
                 "Îøèáêà", MB_OK);
 
  return;
 }
 Dms=Doc.OleFunction("Item",1);
 //Ñìîòðåòü áóäåì òîæå íà ïåðâûé äîêóìåíò
 Dms.OleProcedure("Activate");
 Var=Dms.OlePropertyGet("Paragraphs");
 
 int d = 0,c = 0;
 for(int i = 0; i < b->Count;i++)
 {
  d++;
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", (Path.SubString(1,3)+ b->Strings[i]+".jpg").c_str(), false, true);
  vVarParagraph.OlePropertySet("Alignment",1);
  d++;
  c++;
  str= AnsiString("Ðèñóíîê ¹")+IntToStr(c)+AnsiString(" - image")+b->Strings[i];
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
 }
 
 Word.OlePropertySet("Visible", true);
 
 delete b;
 b = NULL;
 
}
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
17.08.2011, 20:55  [ТС]
Спасибо, вечером отпишусь, дома попробую.

Добавлено через 2 часа 25 минут
Sasha, все пашет

C++
1
str= AnsiString("Рисунок №")+IntToStr(c)+AnsiString(" - ")+b->Strings[i];
шрифт к примеру 14 сделать.

C++
1
2
vVarParagraph.OlePropertyGet("Range").
                OlePropertyGet("Font").OlePropertySet("Size",14);
у меня шрифт не изменился, а подпись ушла на другую страницу.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
18.08.2011, 09:23
Цитата Сообщение от log Посмотреть сообщение
vVarParagraph.OlePropertyGet("Range").
OlePropertyGet("Font").OlePropertySet("S ize",14);
А в какое место кода ты эту строку вставляешь?
0
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
18.08.2011, 17:37  [ТС]
C++
1
2
3
4
5
6
7
8
str= AnsiString("Рисунок №")+IntToStr(c)+AnsiString(" - image")+b->Strings[i];
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertyGet("Range").
                OlePropertyGet("Font").OlePropertySet("Size",14);
               vVarParagraph.OlePropertySet("Alignment",1);
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
18.08.2011, 17:47
Сделай так
C++
1
2
3
4
5
6
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
                OlePropertyGet("Font").OlePropertySet("Size",14);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2011, 17:47
Помогаю со студенческими работами здесь

Вставка картинок из папки вместо слов (макрос в Word)
Добрый день! Подскажите, пожалуйста, как осуществить множественную замену слов на картинки? Важно то, что картинки вставляются в таблицы с...

При перемещении папки с excel и jpg файлами ссылки в ячейках на jpg файлы не работают!
Здравствуйте! Уважаемые форумчане у меня такая проблема: я создаю excel файл, где используя опцию (ВСТАВКА - ВСТАВИТЬ ОБЪЕКТ), создаю...

Перенос изображений в папки по имени изображений
Доброго времени суток. Помогите с бат файлом. Я думаю он очень прост, но поскольку я не соображаю в этом практически ничего, то все что...

Загрузка jpg изображений из dll
Здравствуйте. Я понимаю, что темы с таким названием уже существуют, но ответа в них я так и не нашел... Я разобрался как создать dll, но в...

AS 3.0 Загрузка изображений jpg в приложение флеш
Пишу этот код: private function startLoad():void{ var loader:Loader = new Loader(); ...


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

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

Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru