в общем суть такая, полазил я полазил по форумам, но такого вроде нет. я создал приложение виндовсформ, подключил его к референсу Microsoft::Office::Interop::Word (без всяких #import) дальше все работало замечательно открываю, ищу просто с помощью перебора, а вот сравнить его с тем что надо не могу так как когда пытаюсь обратиться к свойству Range->Text мне во первых не вылазиет подсказки после "->", что он там есть, хотя в обозревателе объектов он есть и во время отладки тоже получается посмотреть его значение.
Word::Application ^w = gcnew Word::Application();
w->Visible=true;
Word::Document ^doc = gcnew Word::Document();
System::Object ^objFilename = gcnew System::Object();
System::Object ^objMissing = gcnew System::Object();
objFilename = "C:\\rabota\\employee.doc";
objMissing = Missing::Value;
doc = w->Documents->Open(objFilename,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing);
String ^s="@id";
System::Object ^objBegin = gcnew System::Object();
System::Object ^objEnd = gcnew System::Object();
Word::Range ^r=doc->Content;
for(int i=0; i<=50-s->Length;i++) {
objBegin=i;
objEnd=i+s->Length;
r=doc->Range(objBegin,objEnd);
if (r->!!!!!!!!!!!!!!!!!!!!!!!==s){
r->Cut();
r->InsertAfter("пара слов");
};
как быть?
Здравствуйте, greyfrost, Вы писали:
G>(без всяких #import)
Ну и зря. Вы, получается, используете управляемые расширения неуправляемого языка, чтобы связаться с управляемой оберткой неуправляемого приложения
Для примера, я делал так (обычный C++, #import)
void FindAndReplaceText(const wchar_t* match, const wchar_t* replacement)
{
wordApp->Selection->Find->ClearFormatting();
wordApp->Selection->Find->Text = match;
wordApp->Selection->Find->Replacement->ClearFormatting();
wordApp->Selection->Find->Replacement->Text = replacement;
_variant_t vReplace(wdReplaceAll);
VARIANT_BOOL vb = wordApp->Selection->Find->Execute(&vtMissing, &vtMissing, &vtMissing, &vtMissing, &vtMissing,
&vtMissing, &vtMissing,&vtMissing, &vtMissing, &vtMissing, &vReplace);
}
Вам нужно сделать наподобие, только используя синтаксис С++/CLI
Здравствуйте, dmitry_npi, Вы писали:
_>Ну и зря. Вы, получается, используете управляемые расширения неуправляемого языка, чтобы связаться с управляемой оберткой неуправляемого приложения
я бы и рад использовать #Import, но к сожалению не знаю как его подключать в не консольном приложении. в консольном у меня все получается, а мне нужен виндовсформ.( Может и здесь подскажете?
Здравствуйте, dmitry_npi, Вы писали:
_>А в чем проблема-то? Или вам нужно сгенерировать чисто управляемый код (/clr:pure), без примесей обычного?
честно сказать не особо понлял)) но суть такая, мне нужно сделать приложение именно винформ, а я умею подключать импорт только в консольном приложении...
все заработало, за совет спасибо, но теперь новая проблема. если искать несколько слов подрят, то почемуто ищется только первое(((
Word::Application ^w = gcnew Word::Application();
Word::Document ^doc = gcnew Word::Document();
System::Object ^objFileName = gcnew System::Object();
System::Object ^objFileNameSave = gcnew System::Object();
System::Object ^objMissing = gcnew System::Object();
System::Object ^objReplace = gcnew System::Object();
objReplace=1;
w->Visible=true;
objFileName = "C:\\для rabota\\employee.doc";
objMissing = Missing::Value;
String ^sid="@id";
String ^sname="@name";
String ^sresume="@resume";
String ^sdob="@dob";
String ^spicture="@picture";
String ^srep;
for (int i=0; i<=this->dataGridView2->RowCount-1; i++){
doc = w->Documents->Open(objFileName,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing);
objFileNameSave = "C:\\для rabota\\employee"+dataGridView2->Rows[i]->Cells[0]->Value->ToString()+".doc";
doc->SaveAs(objFileNameSave,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,objMissing);
//id
srep=this->dataGridView2->Rows[i]->Cells[0]->Value->ToString();
w->Selection->Find->ClearFormatting();
w->Selection->Find->Text = sid;
w->Selection->Find->Replacement->ClearFormatting();
w->Selection->Find->Replacement->Text = srep;
w->Selection->Find->Execute(objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objReplace,objMissing,objMissing,objMissing,
objMissing);
//name
srep=this->dataGridView2->Rows[i]->Cells[1]->Value->ToString();
w->Selection->Find->ClearFormatting();
w->Selection->Find->Text = sname;
w->Selection->Find->Replacement->ClearFormatting();
w->Selection->Find->Replacement->Text = srep;
w->Selection->Find->Execute(objMissing,objMissing,objMissing,objMissing,
objMissing,objMissing,objMissing,objMissing,objMissing,
objMissing,objReplace,objMissing,objMissing,objMissing,
objMissing);
//и дальше еще несколько слов...
меняется толькопервое слово во всех документах
ой все. разобрался, всем еще раз спасибо, там же не 1, а реплэйс олл константу надо поставить)