title: Edit word (.docx) file using Python when it is opened in Word
body: <p>I write python script to edit MS Office Word documents. It is very important for me to edit .docx file when it is opened in Word. Python must change it.
  I use python library docx to do it. Code works fine, but it cannot edit ms-word document when it is opened in MS Word.
  I get error</p>
  <pre><code>PermissionError: [Errno 13] Permission denied: 'demo.docx'
  </code></pre>
  <p>To solve this problem I tried everything recommended in this post:</p>
  <p><a href="https://stackoverflow.com/questions/36434764/permissionerror-errno-13-permission-denied/36469464">PermissionError: [Errno 13] Permission denied</a></p>
  <ol>
  <li>Running cmd.exe as and admin</li>
  <li>Creating shortcut with elevated privileges</li>
  <li>Changing the permissions on the python executable</li>
  </ol>
  <p>Nothing helps. I always get Error:</p>
  <pre><code>PermissionError: [Errno 13] Permission denied: 'demo.docx'
  </code></pre>
  <p>Python code doesn't matter, but I post it here too (code works, problem is in permissions):</p>
  <pre><code>from docx import Document
  from docx.shared import Inches
  import traceback 
  try: 
      document = Document()
      document.add_heading('Document Title', 0)
      p = document.add_paragraph('A plain paragraph having some ')
      p.add_run('bold').bold = True
      p.add_run(' and some ')
      p.add_run('italic.').italic = True
      document.add_heading('Heading, level 1', level=1)
      document.add_paragraph('Intense quote', style='Intense Quote')
      document.add_paragraph(
          'first item in unordered list', style='List Bullet'
      )
      document.add_paragraph(
          'first item in ordered list', style='List Number'
      )
      #document.add_picture('monty-truth.png', width=Inches(1.25))
      records = (
          (3, '101', 'Spam'),
          (7, '422', 'Eggs'),
          (4, '631', 'Spam, spam, eggs, and spam')
      )
      table = document.add_table(rows=1, cols=3)
      hdr_cells = table.rows[0].cells
      hdr_cells[0].text = 'Qty'
      hdr_cells[1].text = 'Id'
      hdr_cells[2].text = 'Desc'
      for qty, id, desc in records:
          row_cells = table.add_row().cells
          row_cells[0].text = str(qty)
          row_cells[1].text = id
          row_cells[2].text = desc
      document.add_page_break()
      document.save('demo.docx')
  except:
      traceback.print_exc() 
  </code></pre>