2017-10-24 2 views
0

델파이 시애틀, PPT 2013.델파이 - Microsoft PowerPoint 통합 ... 설정 굵게 속성

프로그래밍 방식으로 PPT 데크를 작성하고 있습니다. 내가 사용하고있는 PPT 템플릿이 있습니다. 실행 파일에 리소스로 포함 된 PPT 파일을 추출하고, PPT를 시작하고, 파일을 열고, 슬라이드로 이동하여 내용을 채 웁니다. 현재 내가 싸우고있는 문제는 글꼴 속성과 관련이 있습니다. 텍스트 프레임이 있습니다. 그 텍스트 프레임에 CR/LF로 구분 된 여러 줄을 쓰려고합니다. PPT는 이것들이 내가 원하는 바른 구분 점임을 보여줍니다. 각 줄의 첫 번째 단어는 범주이므로 JUST THAT WORD가 굵게 표시됩니다.

코드에서, 나는 textframe에 첫 번째 줄을 추가 제품 3, product4입니다 - 제품 1, 제품 2

  • 구분 2 - 그것은

    • 카테고리 1 ...이처럼 보이는 끝낼한다 , 그리고 말하기 ... 문자 1-9에서 대담하게 설정하십시오. 이제 텍스트 프레임에 두 번째 줄을 추가하고 20 자에서 다음 9자를 굵게 ... 등으로 설정합니다. 이것은 4 줄의 작업입니다. 첫 번째 줄을 추가하고 굵게 설정하고 두 번째 줄을 추가하고 굵게 설정하십시오. 줄 1과 2는 작동하지만 두 번째 줄을 추가하자마자 모든 것이 굵게 표시됩니다. 내 코드의 순서를 변경하면 1 행을 추가하고 2 행을 추가하고 첫 번째 하위 문자열을 굵은 글꼴로 설정하고 두 번째 하위 문자열을 굵은 글꼴로 설정하면 효과가 있지만 여러 가지 다른 작업을 수행하는 방법에 따라 어려워집니다.

      줄 1을 추가하고 문자 1에서 9를 굵게 설정하고 문자 10을 굵게 설정하지 말고 지금 2 줄을 추가하려고 시도했지만 아무런 차이가없는 것 같습니다.

      다음은 코드 단편입니다.

      uses ... Office2000, msppt2000; 
      
          var 
          lFinalDeck: PowerPointPresentation; 
          lApplication: PowerPointApplication; 
          sl: _Slide; 
          sh1 : Shape; 
          FoundIt : Boolean; 
          i : Integer; 
          CRLF : String; 
          PPTFileName : String; 
      begin 
      
      lApplication := CoPowerPointApplication.Create; 
      ... 
      // Open File 
      lFinalDeck := lApplication.Presentations.Open(PPTFileName, msoFalse, msoFalse, msoFalse); 
      // The second parameter specifies whether the presentation should be opened in read-only mode. 
      // If the third parameter is True, an untitled copy of the file is made. 
      // The last parameter specifies whether the opened presentation should be visible. 
      
      // Get a handle to my slide and go to it. 
      sl := lFinalDeck.Slides.Item(2); 
      sl.Select; 
      
      FoundIt := False; 
      CRLF := #13#10; 
      
      // Now look for the textframe that has the TEXT 'TEXTBOX1' 
      for i := 1 to sl.Shapes.Count do 
          begin 
          sh1 := sl.Shapes.Item(i); 
          if sh1.HasTextFrame = msoTrue then 
           if sh1.TextFrame.TextRange.Text = 'TEXTBOX1' then 
           begin 
           FoundIt := True; 
           sh1.TextFrame.TextRange.Text := ''; 
           Break; 
           end; 
          end; 
      
          // Put data in the textframe, setting first 5 characters of each line bold 
          sh1.TextFrame.TextRange.Text := '1234567890' + CRLF; 
          sh1.TextFrame.TextRange.Characters(1,5).Font.Bold := msoTrue; 
      
      
          sh1.TextFrame.TextRange.Text := sh1.TextFrame.TextRange.Text + 'ABCDEFGHIJKLMNOP' + CRLF; 
          sh1.TextFrame.TextRange.Characters(13,5).Font.Bold := msoTrue; 
      end; 
      

      어떤 문제를 해결할 수 있습니까?

  • +0

    이 얼마나 일반적으로 행동하라에서 파워 포인트, 오피스 프로그램 , 나는 믿는다. 새 단락을 추가 할 때 이전 단락의 글꼴을 사용합니다.이 단락은 때때로 수동으로 수행하는 경우에도 약간의 고통입니다. 내가 제안 할 수있는 유일한 방법은 새 파라를 삽입하고 명시 적으로 굵게 글꼴을 설정하거나 선택을 추가하고 굵은 체로 설정하는 텍스트 선택을 설정하는 것입니다. 아마도 별도의 절차로 사물을 단순화 할 수 있습니다 당신이 그것을 여러 번 할 때. – Dsm

    +0

    '나는 그저 굵은 글씨로 말하고 싶다. '- 당신이 마이크로 소프트 오피스에서 일하기 때문에 거의 모든 질문에 대해 보편적 인 대답이 나온다. "Visual Basic 매크로 기록"을 시작하십시오. 그런 다음 단어를 선택하고 굵은 글씨로 만들고 선택을 해제하십시오.그런 다음 "매크로 기록 중지". 그런 다음 매크로 관리자를 열고 새 매크로를 찾아 편집기로 들어갑니다. Visual Basic 코드가 표시됩니다. 기본에서 파스칼로 변환하십시오. 추신. 해당 매크로 관련 명령이 Office 2013에서 숨겨진 곳을 알 수 없습니다. Office 시험판의 클래식 메뉴를 찾을 수없는 경우 –

    +0

    레코드 매크로 기능은 대부분 Office 제품이지만 Powerpoint는 아닙니다. 파워 포인트 2007은 마지막 버전이었습니다 ... – user1009073

    답변

    0

    여기 VBA에서 접근하는 한 가지 방법이 있는데, Delphi 또는 다른 언어로 변환 할 수있을 정도로 충분합니다.

    도형의 TextFrame.TextRange는 도형에있는 전체 텍스트 문자열을 나타냅니다. .Paragraphs 컬렉션을 반복하여 각 단락 (기본적으로 CRLF로 끝나는 모든 텍스트 문자열)에 액세스 할 수 있습니다. 각 단락에는 단어 컬렉션이 있으며 첫 번째 단어를 참조하면 해당 단어를 굵게 표시 할 수 있습니다. 굵게 문자의 특정 숫자을 대신해야하는 경우는,

    Set oRng = .Paragraphs(x).Characters(1, 12) ' 12 chars 
    

    대신 아래

    Set oRng = .Paragraphs(x).Words(1) 
    

    사용

    Sub BoldFirstWord(oSh As Shape) 
    ' Bold the first word of each paragraph in the shape 
    
        Dim x As Long 
        Dim oRng as TextRange 
    
        With oSh.TextFrame.TextRange 
    
         For x = 1 To .Paragraphs.Count 
    
          Set oRng = .Paragraphs(x).Words(1) 
          oRng.Font.Bold = True 
    
         Next 
    
        End With 
    
    End Sub 
    
    ' To test the above, select the text shape 
    ' you want to work with and run this: 
    Sub TestBFW() 
        Dim oSh As Shape 
        Set oSh = ActiveWindow.Selection.ShapeRange(1) 
        Call BoldFirstWord(oSh) 
    End Sub 
    
    관련 문제