Excel'de bir klasörün içerisinde bulunan farklı excel dosyalarını tek bir sayfaya kopyalamam gerekiyordu. Normalde Excel'in bu iş için görseldeki gibi bir aracı var. Ama sadece dosyaların içerisindeki çalışma sayfalarının isimleri aynı ise çalışıyor.
Bende çalışma sayfalarının adını toplu bir şekilde değiştirmenin yolunu aradım ve aşağıdaki python scriptini buldum. Hem not olarak dursun hem de lazım olan olursa kolay bulsun.

#excel


import openpyxl
import os
for x in os.listdir():
if x.endswith(".xlsx"): #eğer dosya uzantısı xlsx ise
ss=openpyxl.load_workbook(x) #ss değişkenine x dosyasını yükle
ws=ss.worksheets[0] #ws değişkenine ss deki ilk sayfayı yükle
ss_sheet = ss[ws.title] #ss_sheet değişkenine ss deki ws.title sayfasını yükle
ss_sheet.title = 'Fruit' #ss_sheet değişkeninin ismini Fruit yap
ss.save(x) #ss değişkenini x dosyasına kaydet

BeğenFavori PaylaşYorum yap
  • lterlemez :) :\ :( @lterlemez

    Excel de yapabiliyordur (VBA), kurcalamak lazım.

    • okanaytimur @okanaytimur

      Benimde ilk tercihim o olurdu ama kapalı olan excel dosyalarına erişebilir mi emin olamadım.

    • okanaytimur @okanaytimur

      Hocam o da varmış 😀 Hem daha pratik. Python ile venv oluşturmaya gerek yok

      Sub OPEN_ALL_FILES_IN_FOLDER_RUN_MACRO()

      Dim Path As String
      'path to your folder with excel files
      Path = "C:\Users\LENOVO\Desktop\Fiyat\r\"
      Dim fileName As String

      ' ANY EXCEL FILE
      fileName = Dir(Path & "*.xls*")

      Application.DisplayStatusBar = False
      Application.EnableEvents = False
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False

      Do While fileName ""
      Workbooks.Open Path & fileName

      ' *****************************************************add code to run on each workbook in the folder********************************************
      ActiveSheet.Name = "Balance Sheet"
      ' ****************************************************end code to run on each workbook in the folder*********************************************
      Workbooks(fileName).Close True
      fileName = Dir()
      Loop
      Application.DisplayStatusBar = True
      Application.EnableEvents = True
      Application.ScreenUpdating = True
      Application.DisplayAlerts = True

      End Sub

    • lterlemez :) :\ :( @lterlemez

      @okanaytimur: Vardır, sonuçta yapmak istediğiniz şey ortak dosya türleri için istenebilecek bir iş.... Kolay gelsin.