سؤال

أحاول صنع الجداول داخل الجداول في Word. بالطبع في برنامج Finall، سيكون Dinamical، وهو ليس في هذه العينة.

هنا هو نموذجي عينة بلدي.

 var
  aTable, bTable, cTable : OLEVariant;
begin
  m_WordApplication := CreateOleObject('Word.Application') ;
  m_WordDocument := m_WordApplication.Documents.Add;

  aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
  aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
  bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
  cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  m_WordDocument.SaveAs('C:/test.doc', False) ;
  m_WordApplication.Quit(False);

أولا، أضع طاولة جديدة (2 صفوف، عمود واحد) في موضع المؤشر، ثم أحاول وضع الجدول الثاني في الخلية (1،1) والثالث في الخلية (2،1) من الجدول الأول. يحتوي الجدول الثاني أيضا على 2 صفين وعمود واحد، ولكن الطاولة الثالثة تحتوي على 3 صفوف وعمود واحد. ولكن بدلا من ما أريد أن أحصل على الجدول الثاني والثالث يتأرجح فقط صف واحد فقط، بغض النظر عما إذا كنت قد وضعت شيئا في خلية عالية أم لا. أنا دائما أرى فقط السلسلة الأخيرة التي وضعت فيها هذا الجدول.

أكثر من ذلك، إذا وضعت 1 صف واحد وطاولة عمودين داخل الطاولة الأولى، فكل شيء طبيعي.

هل بإمكانك مساعدتي.

شكرا يا روك

هل كانت مفيدة؟

المحلول

عندما يكون لديك مشاكل في إنشاء هذه الجداول في التعليمات البرمجية، قم بما يلي:

  • كلمة مفتوحة
  • سجل ماكرو جديد
  • أثناء التسجيل، قم ببناء الجدول الذي تريده، ثم أوقف التسجيل.
  • عرض رمز الماكرو الخاص بك في محرر Visual Basic ومحاولة ترجمة ذلك إلى رمز أتمتة OLE (وهو أمر صعب، إنه نفسه تقريبا)

نصائح أخرى

aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

سيكون عليك أن تفعل الشيء نفسه بالنسبة ل BTable & CTable.

عند إضافة أكثر من صف واحد / عمود، ستحتاج إلى حدود لفصله (أي لفصل صف واحد من عمود آخر أو منفصل من آخر).

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top