Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/54: Рейтинг темы: голосов - 54, средняя оценка - 4.98
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326

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

31.07.2011, 17:04. Показов 11463. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru