LoginSignup
brian67
@brian67

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

openpyxl .xlsx 保存後、エクセルファイルに問題発生

解決したいこと

.xlsxファイルを読み込み、書き込んだ後に保存すると、該当のエクセルファイルを開くときに"一部の内容に問題が見つかりました"という表示が出るので、問題なく開けるようにしたいです。

エクセルで表示されるエラー

修復されたレコード: /xl/externalLinks/externalLink1.xml パーツ内の外部数式参照 (外部数式参照によってキャッシュされた値)
修復されたレコード: /xl/externalLinks/externalLink4.xml パーツ内の外部数式参照 (外部数式参照によってキャッシュされた値)
修復されたレコード: /xl/externalLinks/externalLink5.xml パーツ内の外部数式参照 (外部数式参照によってキャッシュされた値)

該当するソースコード

import os
from datetime import datetime
import datetime
import pdfminer
from pdfminer.high_level import extract_pages
from pdfminer.layout import LAParams
import shutil
from openpyxl import load_workbook
import time

def previous_thursday(date_str):
    # 引数の日付を解析する
    date = datetime.datetime.strptime(date_str, '%y.%m.%d').date()
    
    # 前の木曜日を見つける
    current_day = date
    while current_day.weekday() != 3:  # 木曜日は週の第4日目(0が月曜日、1が火曜日...)
        current_day -= datetime.timedelta(days=1)
    
    formatted_date = current_day.strftime('%y.%m.%d')
    year = current_day.year
    month = current_day.month
    
    return formatted_date, year, month

def generate_file_path(year, month):
    # ファイルパスのフォーマットを指定
    file_path_format = r"\\1111\2222\Test\{}\{}月\あ.xlsx"
    
    # 西暦と月をファイルパスに挿入して返す
    file_path = file_path_format.format(year, month)
    return file_path

# 現在の年と月を取得
current_datetime = datetime.datetime.now()
current_year = current_datetime.year
current_month = current_datetime.month
current_day = current_datetime.day


thursday, fileYear, fileMonth = previous_thursday("24.5.23")

excelFilepath = generate_file_path(fileYear, fileMonth)

wb = load_workbook(filename=excelFilepath)
wb.save(excelFilepath)

自分で試したこと

読み書きをせず開いて保存だけで実行しましたが、それでも同様のエラーでした。問題はエクセルの外部参照で、外部参照を外すともちろんエラーは出ません。外部参照を外さずこのまま保存したいです。

0

1Answer

直接 外部参照しているのを、INDIRECT関数で間接化したら、壊れませんでした。

0

Your answer might help someone💌