⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit3.~pas

📁 word 控件用法,vba.word 控件用法,vba
💻 ~PAS
字号:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WordXP, OleServer, StdCtrls, ExcelXP;

type
  TForm1 = class(TForm)
    Button1: TButton;
    WordApplication: TWordApplication;
    WordDocument: TWordDocument;
    OpenDialog: TOpenDialog;
    Label1: TLabel;
    Button2: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    exclplctn1: TExcelApplication;
    exclwrksht1: TExcelWorksheet;
    exclwrkbk1: TExcelWorkbook;
    procedure Button1Click(Sender: TObject);
    //  取word文档中非表格元素的试验方法
    //    1 :删表, 取非空字符串
    procedure GetString1;
    // 2 :返回表上面一行的字符串
    procedure GetString2;
    procedure testExcal;
    //
    procedure getWord;
    //判断字符串是否为空
    function  JudgeString(var str:string):boolean;
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  word_path:OleVariant;
implementation

uses StrUtils;
{$R *.dfm}
 function   TForm1.JudgeString(var str:string):boolean;
 var
   strTem:string ;
 begin
   strTem:=Trim(str);
   if pos(#13,strtem)=0 then
   begin
    result:=true; //true代表该行是空
    Delete(strtem,pos(#13,strtem),1) ;
    end
   else   result:=false; //true代表该行是不是空
 end;
 procedure TForm1.getWord;
 var
   unit1,count,s: OleVariant;
   DocInx:OleVariant;
   i:Integer;
   path:OleVariant;
   temp:string;
 begin
     count:=1;
//    unit1:=wdTabLeaderLines;
     unit1:=wdCharacter;
     //word 初始化
    Memo1.Clear;
    path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text  ;
    WordApplication.Connect;
    WordApplication.Documents.Open(path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
     DocInx:=1;
   WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));


    i:=0;


        WordDocument.Paragraphs.Item(1).Range.Select;
    if Trim(WordApplication.Selection.Text)='' then  ShowMessage('test');
//        temp:= Trim(WordApplication.Selection.Text);
//       WordApplication.Selection.Delete(unit1,count) ;
//    Delete(temp,pos(#13,temp),1) ;

//     WordDocument.Paragraphs.Item(2).Range.Select;

//    temp:= Trim(WordApplication.Selection.Text);
//    Memo1.Lines.Add(Trim(WordApplication.Selection.Text)) ;
    Memo1.Lines.Add((temp)) ;

//     inc(i);

    Memo1.Lines.Add('END') ;
     WordDocument.Save;

//     WordApplication.Documents.Save();
        WordDocument.Close;
     WordApplication.Disconnect;
     WordDocument.Disconnect;

     WordApplication.Quit;


   end;
procedure TForm1.testExcal;
var
  path:string;
  Temp_Worksheet: _Worksheet;
begin
  path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls';
   //excal 初始化
   exclplctn1.Connect;
     exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Open(path,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, 0));

    Temp_Worksheet:= exclwrkbk1.Worksheets.Item[2] as _worksheet;


  exclwrksht1.ConnectTo(Temp_Worksheet);
  exclwrksht1.Name:='test1';
   ShowMessage(exclwrksht1.Name);

   exclwrkbk1.Save;
   exclwrkbk1.Close(false);
   exclplctn1.Disconnect;
   exclwrksht1.Disconnect;
   exclplctn1.Quit;

  end;


procedure TForm1.GetString2;
var
  unit1,count,s: OleVariant;
  DocInx: OleVariant;
  t,i:Integer;
begin
    Memo1.Clear;
    count:=1;
    unit1:=wdTabLeaderLines;
    word_path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text  ;
    WordApplication.Connect;
    WordApplication.Documents.Open(word_path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    DocInx:=1;
    WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));
    i:=WordDocument.Tables.Count;
    t:=WordDocument.Styles._AddRef;
    Memo1.Lines.Add(IntToStr(i));


  end;

procedure TForm1.GetString1;
var
  TempStrings:string;
  unit1,count,s: OleVariant;
  DocInx: OleVariant;
  k,t,i:Integer;
  Temp_Worksheet,Temp_Worksheet2: _Worksheet;
  temp,temp2,temp3:string;
  path:string ;
  add:boolean;

begin
   path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls';

//    temp:=TStringList.Create;
  //word 初始化
    Memo1.Clear;
    count:=1;
    unit1:=wdCharacter;;
    word_path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text  ;
    WordApplication.Connect;
    WordApplication.Documents.Open(word_path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

   DocInx:=1;
   WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));
   //excal 初始化
   exclplctn1.Connect;
   exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Add(EmptyParam, 0));
   //执行代码区域
   i:=1;   add:=false;  k:=1; t:=1;
   t:=WordDocument.Tables.Count;
   Memo1.Lines.Add('现在的表数是'+IntToStr(t))  ; Memo1.Lines.Add('____________________________')  ;
    while WordDocument.Tables.Count<>0 do
      begin
            WordDocument.Paragraphs.Item(k).Range.Select;
             temp:=WordApplication.Selection.Text ;
            temp:=LeftStr(temp,18)  ;
           
//            Memo1.Lines.Add('测试名称是:'+temp+' k的值: '+IntToStr(k));
            while Trim(temp)='' do
            begin

             WordApplication.Selection.Delete(unit1,count);
             WordDocument.Paragraphs.Item(k).Range.Select;
            temp:=WordApplication.Selection.Text ;
             end;
           { if not JudgeString(temp) then
            begin
            inc(k);
            WordDocument.Paragraphs.Item(pk).Range.Select;
            temp:=WordApplication.Selection.Text ;
//            Memo1.Lines.Add('进入空temp判断 测试名称是:'+temp+' k的值: '+IntToStr(k));
             end;  }
          {  if (k-1<>0) then
             begin
            WordDocument.Paragraphs.Item(k-1).Range.Select;
            temp3:= WordApplication.Selection.Text ;
            if JudgeString(temp3) then inc(k);
            end ;      }
         {   WordDocument.Paragraphs.Item(k+1).Range.Select;
            temp2:= WordApplication.Selection.Text  ;
            if JudgeString(temp2) then inc(k);    }

            Memo1.Lines.Add('测试名称是:'+temp+' k的值: '+IntToStr(k));
            
    //  测试重名问题



          //创建workbook中的worksheet
          Temp_Worksheet := exclwrkbk1.Worksheets.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0) as _Worksheet;
          exclwrksht1.ConnectTo(Temp_Worksheet);
          exclwrksht1.Name := temp+IntToStr(k);
          exclwrksht1.Activate;
//          ShowMessage(exclplctn1.Workbooks.Item[1].Name);

         WordDocument.Tables.Item(1).Select;
         WordApplication.Selection.Copy;
         exclwrksht1.Paste(exclwrksht1.Range['A1', 'F1']);
        //删除表
          WordDocument.Tables.Item(1).Delete;
          Memo1.Lines.Add('正在删除表: '+IntToStr(i)+' ...')  ;
//          Memo1.Lines.Add('现在的表数是'+IntToStr(WordDocument.Tables.Count))  ;
          Inc(i);
          inc(k);
        end;
       Memo1.Lines.Add('删除表完成')  ;
        Memo1.Lines.Add(IntToStr(WordDocument.Paragraphs.Count))  ;
  exclwrkbk1.SaveCopyAs('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls');
   {  i:=1;
     while i< WordDocument.Paragraphs.Count do
      begin
          memo1.Lines.Add('文字的行数是: '+IntTostr(i));
          WordDocument.Paragraphs.Item(i).Range.Select;
//          Memo1.Lines.Add('正在读'+IntToStr(i))  ;
         if (WordApplication.Selection.Text<>#13)then
         begin

              TempStrings[i-1]:= WordApplication.Selection.Text ;
//            Memo1.Lines.Add(WordApplication.Selection.Text) ;
//              :=WordApplication.Selection.Text
//              exclplctn1.Workbooks.Item.Name;
//              ShowMessage(exclplctn1.Workbooks.Item.Name);
                 inc(i);
//              exclwrksht1.
         end;

         Inc(i);
     end;
    exclwrkbk1.SaveCopyAs('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls');

    exclplctn1.Connect;
    exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Open(path,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, 0));
     i:=1;
//     for i:=1 to exclwrkbk1.Worksheets.Count do
      while( i<exclwrkbk1.Worksheets.Count) do
     begin
          Memo1.Lines.Add('要改的表数:'+IntToStr(exclwrkbk1.Worksheets.Count)) ;

          Temp_Worksheet2:= exclwrkbk1.Worksheets.Item[i] as _worksheet;

          Memo1.Lines.Add('正在处理:'+IntToStr(i)) ;
          exclwrksht1.ConnectTo(Temp_Worksheet2);
          Memo1.Lines.Add(TempStrings[i-1]) ;
          exclwrksht1.Name:=TempStrings[i-1];
          inc(i);
      end;     }

     //收尾工作
     
     Memo1.Lines.Add('完成')  ;

     WordDocument.Save;
     WordDocument.Close;
     WordApplication.Disconnect;
     WordDocument.Disconnect;
     WordApplication.Quit;


//     exclwrkbk1.Save;
     exclwrkbk1.Close(false);
     exclplctn1.Disconnect;
     exclwrksht1.Disconnect;
     exclwrkbk1.Disconnect;
     exclplctn1.Quit;


  end;



procedure TForm1.Button1Click(Sender: TObject);
begin
//  test
// GetString2;
GetString1;
//  testExcal;
//  getWord;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //fdf
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  filename:string;
begin
   DateTimeToString(fileName, 'yyyymmdd-hhmm', Now);
//   MkDir('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log') ;
//   memo1.Lines.SaveToFile('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log' + fileName + '.txt');
//   MkDir('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log') ;
   memo1.Lines.SaveToFile('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log\' + fileName + '.txt');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -