Mémorandum d'opération Excel Python pywin32 (win32com)

introduction

Un amateur non programmeur Laisser Python faire les choses ennuyeuses Ceci est un mémorandum lors de l'examen de pywin32.

Puisqu'il s'agit d'une confirmation avec une plage d'utilisation étroite et une faible fréquence d'utilisation, Il peut y avoir des erreurs ou des malentendus dans la description. Veuillez vous référer au contenu suivant à vos propres risques.

Arguments nommés et facultatifs

L'argument de méthode est Similaire aux arguments par défaut de C ++ Il semble qu'il n'est pas possible d'omettre l'argument du milieu.

Le site que j'ai utilisé comme référence pour pywin32 (win32com)

Comment faire fonctionner Excel à partir de pywin32 en utilisant COM https://sites.google.com/site/pythoncasestudy/home/pywin32kara-comwo-tsuka-tsu-te-excelwo-sousa-suru-houhou Exploitez Excel à partir de Python avec win32com https://qiita.com/kumarstack55/items/9ae3432446afca06497f Utiliser Excel (pywin32: win32com) https://excel-ubara.com/python/python025.html

Le site que j'ai utilisé comme référence pour Excel VBA

L'essence d'Excel https://excel-ubara.com/ Livre d'histoires de l'instructeur https://www.relief.jp/ Office TANAKA - Excel VBA http://officetanaka.net/excel/vba/ Petite salle de Yone's Word et Excel http://www.eurus.dti.ne.jp/~yoneyama/

Mémorandum d'opération Excel avec pywin32 (win32com) de Python

# coding:utf-8
import os
import win32com.client
import win32con
import win32gui

def main():

    # ------------------------------------------------------------------
    #Définir des constantes Excel
    # ------------------------------------------------------------------
    # https://excel-ubara.com/EXCEL/EXCEL905.html
    # https://docs.microsoft.com/en-us/office/vba/api/excel(enumerations)
    # https://docs.microsoft.com/ja-jp/office/vba/api/excel(enumerations)
    # ------------------------------------------------------------------
    #Il semble y avoir un moyen d'obtenir des constantes Excel.
    # https://wacky.hatenadiary.com/entry/20091011/1255240572
    # ------------------------------------------------------------------
    # Excel Enum Constants
    # ------------------------------------------------------------------
    xlAbove       =  0
    xlBelow       =  1
    xlSolid       =  1
    xlFirst       =  0
    xlLast        =  1
    xlLastCell    = 11
    xlTopToBottom =  1
    xlLeftToRight =  2
    xlGeneral     =  1
    xlAutomatic   = -4105
    xlFormats     = -4122
    xlNone        = -4142
    xlCenter      = -4108
    xlDistributed = -4117
    xlJustify     = -4130
    xlBottom      = -4107
    xlLeft        = -4131
    xlRight       = -4152
    xlTop         = -4160
    xlRTL         = -5004
    xlLTR         = -5003
    xlContext     = -5002
    # ------------------------------------------------------------------
    # Excel Enum XlAutoFillType
    # ------------------------------------------------------------------
    xlFillDefault  =  0
    xlFillCopy     =  1
    xlFillSeries   =  2
    xlFillFormats  =  3
    xlFillValues   =  4
    xlFillDays     =  5
    xlFillWeekdays =  6
    xlFillMonths   =  7
    xlFillYears    =  8
    xlLinearTrend  =  9
    xlGrowthTrend  = 10
    xlFlashFill    = 11
    # ------------------------------------------------------------------
    # Excel Enum XlAutoFilterOperator
    # ------------------------------------------------------------------
    xlAnd             =  1
    xlOr              =  2
    xlTop10Items      =  3
    xlBottom10Items   =  4
    xlTop10Percent    =  5
    xlBottom10Percent =  6
    xlFilterValues    =  7
    xlFilterCellColor =  8
    xlFilterFontColor =  9
    xlFilterIcon      = 10
    xlFilterDynamic   = 11
    # ------------------------------------------------------------------
    # Excel Enum XLBordersIndex
    # ------------------------------------------------------------------
    xlDiagonalDown     =  5
    xlDiagonalUp       =  6
    xlEdgeLeft         =  7
    xlEdgeTop          =  8
    xlEdgeBottom       =  9
    xlEdgeRight        = 10
    xlInsideHorizontal = 12
    xlInsideVertical   = 11
    # ------------------------------------------------------------------
    # Excel Enum XLBorderWeight
    # ------------------------------------------------------------------
    xlHairline = 1
    xlThin     = 2
    xlThick    = 4
    xlMedium   = -4138
    # ------------------------------------------------------------------
    # Excel Enum XlCellType
    # ------------------------------------------------------------------
    xlCellTypeConstants            =  2
    xlCellTypeBlanks               =  4
    xlCellTypeLastCell             = 11
    xlCellTypeVisible              = 12
    xlCellTypeFormulas             = -4123
    xlCellTypeComments             = -4144
    xlCellTypeAllFormatConditions  = -4172
    xlCellTypeSameFormatConditions = -4173
    xlCellTypeAllValidation        = -4174
    xlCellTypeSameValidation       = -4175
    # ------------------------------------------------------------------
    # Excel Enum XlColorIndex
    # ------------------------------------------------------------------
    xlColorIndexAutomatic = -4105
    xlColorIndexNone      = -4142
    # ------------------------------------------------------------------
    # Excel Enum XlCutCopyMode
    # ------------------------------------------------------------------
    xlCopy = 1
    xlCut  = 2
    # ------------------------------------------------------------------
    # Excel Enum XlDeleteShiftDirection
    # Excel Enum XlInsertShiftDirection
    # ------------------------------------------------------------------
    xlShiftUp      = -4162
    xlShiftDown    = -4121
    xlShiftToLeft  = -4159
    xlShiftToRight = -4161
    # ------------------------------------------------------------------
    # Excel Enum XlDirection
    # ------------------------------------------------------------------
    xlUp      = -4162
    xlDown    = -4121
    xlToLeft  = -4159
    xlToRight = -4161
    # ------------------------------------------------------------------
    # Excel Enum XlFileFormat
    # ------------------------------------------------------------------
    xlCSV                         =  6
    xlHtml                        = 44
    xlWorkbookDefault             = 51
    xlOpenXMLWorkbook             = 51
    xlOpenXMLWorkbookMacroEnabled = 52
    xlWorkbookNormal              = -4143
    xlCurrentPlatformText         = -4158
    # ------------------------------------------------------------------
    # Excel Enum XlFixedFormatType
    # ------------------------------------------------------------------
    xlTypePDF = 0
    xlTypeXPS = 1
    # ------------------------------------------------------------------
    # Excel Enum XlFixedFormatQuality
    # ------------------------------------------------------------------
    xlQualityStandard = 0
    xlQualityMinimum  = 1
    # ------------------------------------------------------------------
    # Excel Enum XlFindLookIn
    # ------------------------------------------------------------------
    xlFormulas = -4123
    xlComments = -4144
    xlValues   = -4163
    # ------------------------------------------------------------------
    # Excel Enum XlLineStyle
    # ------------------------------------------------------------------
    xlContinuous    =  1
    xlDashDot       =  4
    xlDashDotDot    =  5
    xlSlantDashDot  = 13
    xlDash          = -4115
    xldot           = -4118
    xlDouble        = -4119
    xlLineStyleNone = -4142
    # ------------------------------------------------------------------
    # Excel Enum XlOrientation
    # ------------------------------------------------------------------
    xlHorizontal = -4128
    xlVertical   = -4166
    xlDownward   = -4170
    xlUpward     = -4171
    # ------------------------------------------------------------------
    # Excel Enum XlPasteType
    # ------------------------------------------------------------------
    xlPasteValues                       = -4163
    xlPasteComments                     = -4144
    xlPasteFormulas                     = -4123
    xlPasteFormats                      = -4122
    xlPasteAll                          = -4104
    xlPasteValidation                   =  6
    xlPasteAllExceptBorders             =  7
    xlPasteColumnWidths                 =  8
    xlPasteFormulasAndNumberFormats     = 11
    xlPasteValuesAndNumberFormats       = 12
    xlPasteAllUsingSourceTheme          = 13
    xlPasteAllMergingConditionalFormats = 14
    # ------------------------------------------------------------------
    # Excel Enum XlSheetVisibility
    # ------------------------------------------------------------------
    xlSheetVisible    = -1
    xlSheetHidden     =  0
    xlSheetVeryHidden =  2
    # ------------------------------------------------------------------
    # Excel Enum XlSpecialCellsValue
    # ------------------------------------------------------------------
    xlNumbers    =  1
    xlTextValues =  2
    xlLogical    =  4
    xlErrors     = 16
    # ------------------------------------------------------------------
    # Excel Enum XlSortDataOption
    # ------------------------------------------------------------------
    xlSortNormal        = 0
    xlSortTextAsNumbers = 1
    # ------------------------------------------------------------------
    # Excel Enum XlSortMethod
    # ------------------------------------------------------------------
    xlPinYin = 1
    xlStroke = 2
    # ------------------------------------------------------------------
    # Excel Enum XlSortOrder
    # ------------------------------------------------------------------
    xlAscending  = 1
    xlDescending = 2
    xlManual     = -4135
    # ------------------------------------------------------------------
    # Excel Enum XlSortOrientation
    # ------------------------------------------------------------------
    xlSortColumns = 1
    xlSortRows    = 2
    # ------------------------------------------------------------------
    # Excel Enum XlSortOn
    # ------------------------------------------------------------------
    xlSortOnValues    = 0
    xlSortOnCellColor = 1
    xlSortOnFontColor = 2
    xlSortOnIcon      = 3
    # ------------------------------------------------------------------
    # Excel Enum XlSortType
    # ------------------------------------------------------------------
    xlSortValues  = 1
    xlSortLabels  = 2
    # ------------------------------------------------------------------
    # Excel Enum XlUnderlineStyle
    # ------------------------------------------------------------------
    xlUnderlineStyleNone             = -4142
    xlUnderlineStyleDouble           = -4119
    xlUnderlineStyleSingle           = 2 
    xlUnderlineStyleSingleAccounting = 4
    xlUnderlineStyleDoubleAccounting = 5
    # ------------------------------------------------------------------
    # Excel Enum XlYesNoGuess
    # ------------------------------------------------------------------
    xlGuess = 0
    xlYes   = 1
    xlNo    = 2
    # ------------------------------------------------------------------

    #Démarrez Excel
    xlApp = win32com.client.Dispatch("Excel.Application")

    # https://stackoverflow.com/questions/2790825/
    #Maximisation de la fenêtre Excel
    win32gui.ShowWindow(xlApp.hwnd, win32con.SW_MAXIMIZE)

    #Affichage Excel
    xlApp.Visible = 1

    #Fichier Excel ouvert
    wb = xlApp.Workbooks.Open(f"{os.getcwd()}\\sample.csv")

    #Objet de feuille Excel
    ws = wb.Worksheets(1)

    # ------------------------------------------------------------------

    #Sélectionnez la feuille spécifiée
    # Select()Activez la feuille avant de l'utiliser()Est nécessaire
    ws.Activate()

    # ------------------------------------------------------------------

    #Sélectionnez la cellule A1
    ws.Range("A1").Select()

    #Sélectionnez A1 à B2
    ws.Range("A1:B2").Select()

    #Sélectionnez A1, B2, C3 et D4
    ws.Range("A1,B2,C3,D4").Select()

    #Sélectionnez A1 à B2 et C3 à D4
    ws.Range("A1:B2,C3:D4").Select()

    # ------------------------------------------------------------------

    #Sélectionnez la cellule A1
    ws.Cells(1, 1).Select()

    #Sélectionnez A1 à B2
    ws.Range(
        ws.Cells(1, 1),
        ws.Cells(2, 2)
    ).Select()

    # ------------------------------------------------------------------

    #Sélectionnez toutes les cellules
    ws.Cells.Select()

    # ------------------------------------------------------------------

    #Sélectionnez 1-2 lignes
    ws.Range("1:2").Select()

    #Sélectionnez les colonnes A à B
    ws.Range("A:B").Select()

    # https://www.relief.jp/docs/excel-vba-difference-range-rows-columns.html
    #Sélectionnez 1-2 lignes
    ws.Rows("1:2").Select()

    # https://www.relief.jp/docs/excel-vba-difference-range-columns.html
    #Sélectionnez les colonnes A à B
    ws.Columns("A:B").Select()

    # ------------------------------------------------------------------

    #Sélectionnez la première ligne de la plage spécifiée
    ws.Range("A1:D4").Rows(1).Select()

    #Sélectionnez la première colonne de la plage spécifiée
    ws.Range("A1:D4").Columns(1).Select()

    # ------------------------------------------------------------------

    # (Basé sur la cellule A1)Sélectionnez toute la ligne
    ws.Range("A1").EntireRow.Select()

    # (Basé sur la cellule A1)Sélectionnez la colonne entière
    ws.Range("A1").EntireColumn.Select()

    # ------------------------------------------------------------------

    # (Basé sur la cellule A1)Sélectionnez la ligne jusqu'à la dernière colonne
    ws.Range(
        ws.Range("A1"),
        ws.Cells(1, ws.Columns.Count).End(xlToLeft)
    ).Select()

    # (Basé sur la cellule A1)Sélectionnez les colonnes jusqu'à la dernière ligne
    ws.Range(
        ws.Range("A1"),
        ws.Cells(ws.Rows.Count, 1).End(xlUp)
    ).Select()

    # ------------------------------------------------------------------

    # (Basé sur la cellule A1)Sélectionnez la zone actuelle
    ws.Range("A1").CurrentRegion.Select()

    # (De la feuille courante)Sélectionnez la zone utilisée
    ws.UsedRange.Select()

    # (Basé sur la cellule A1)Sélection finale de la cellule en bas à droite
    ws.Range("A1").SpecialCells(xlLastCell).Select()

    # (Basé sur la cellule A1)Sélection de cellules visibles
    ws.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Select()

    # ------------------------------------------------------------------

    # https://thecodingforums.com/threads/328174/
    # Range.Offset()Obtenir un décalage pour la propriété()Method
    #Décaler la plage spécifiée
    ws.Range("A1:D4").GetOffset(2, 2).Select()

    # Range.Offset()Obtenir un décalage pour la propriété()Method
    #Décaler la plage spécifiée
    ws.Range("A1:D4").GetOffset(RowOffset = 3, ColumnOffset = 3).Select()

    # Range.Offset()Obtenir un décalage pour la propriété()Method
    #Décale verticalement la plage spécifiée
    ws.Range("A1:D4").GetOffset(RowOffset = 3).Select()

    # Range.Offset()Obtenir un décalage pour la propriété()Method
    #Décale la plage spécifiée horizontalement
    ws.Range("A1:D4").GetOffset(RowOffset = 0, ColumnOffset = 3).Select()

    # ------------------------------------------------------------------

    # https://stackoverflow.com/questions/63112880/
    # Range.Resize()GetResize pour la propriété()Method
    #Redimensionner la plage spécifiée
    ws.Range("A1:H8").GetResize(2, 2).Select()

    # Range.Resize()GetResize pour la propriété()Method
    #Redimensionner la plage spécifiée
    ws.Range("A1:H8").GetResize(RowSize = 3, ColumnSize = 3).Select()

    # Range.Resize()GetResize pour la propriété()Method
    #Redimensionner la direction verticale de la plage spécifiée
    ws.Range("A1:H8").GetResize(RowSize = 3).Select()

    # Range.Resize()GetResize pour la propriété()Method
    #Redimensionner la direction horizontale de la plage spécifiée
    ws.Range("A1:H8").GetResize(RowSize = ws.Range("A1:H8").Rows.Count, ColumnSize = 3).Select()

    # ------------------------------------------------------------------

    #Obtenez le nombre de lignes dans la cellule spécifiée
    n = ws.Range("A1").Row
    print( n )

    #Obtenez le nombre de colonnes dans la cellule spécifiée
    n = ws.Range("A1").Column
    print( n )

    #Obtenir le nombre de lignes incluses dans la plage spécifiée
    n = ws.Range("A1:D4").Rows.Count
    print( n )

    #Obtenir le nombre de colonnes incluses dans la plage spécifiée
    n = ws.Range("A1:D4").Columns.Count
    print( n )

    # (Basé sur la cellule A1)Obtenez le nombre de dernières lignes
    n = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    print( n )

    # (Basé sur la cellule A1)Obtenez le nombre de dernières colonnes
    n = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    print( n )

    # ------------------------------------------------------------------

    # https://binary-star.net/excel-vba-columnchange
    #Convertir une chaîne numérique en chaîne alphabétique
    a = (xlApp.ActiveWorkBook.ActiveSheet.Cells(1, 1).Address).split("$")[1]
    print( a )
    a = (xlApp.ActiveWorkBook.ActiveSheet.Cells(1, 2).Address).split("$")[1]
    print( a )
    a = (xlApp.ActiveWorkBook.ActiveSheet.Cells(1, 3).Address).split("$")[1]
    print( a )
    a = (xlApp.ActiveWorkBook.ActiveSheet.Cells(1, 27).Address).split("$")[1]
    print( a )
    a = (xlApp.ActiveWorkBook.ActiveSheet.Cells(1, 53).Address).split("$")[1]
    print( a )
    #Convertir une chaîne alphabétique en chaîne numérique
    n = xlApp.ActiveWorkBook.ActiveSheet.Cells(1, "A").Column
    print( n )
    n = xlApp.ActiveWorkBook.ActiveSheet.Cells(1, "B").Column
    print( n )
    n = xlApp.ActiveWorkBook.ActiveSheet.Cells(1, "C").Column
    print( n )
    n = xlApp.ActiveWorkBook.ActiveSheet.Cells(1, "AA").Column
    print( n )
    n = xlApp.ActiveWorkBook.ActiveSheet.Cells(1, "BA").Column
    print( n )

    # ------------------------------------------------------------------

    #Définir la valeur dans la cellule A1
    ws.Range("A1").Value = 99999

    #Définir la formule dans la cellule A1
    ws.Range("A1").Formula = "=(3.14159-3)*100000"

    # ------------------------------------------------------------------

    #Définir le format d'affichage de la cellule A1
    ws.Range("A1").NumberFormatLocal = "0.00"

    # ------------------------------------------------------------------

    #Définir la position verticale du placement des cellules A1
    ws.Range("A1").VerticalAlignment = xlCenter

    #Définir la position horizontale du placement des cellules A1
    ws.Range("A1").HorizontalAlignment = xlCenter

    #Définir la direction de la chaîne de caractères dans la cellule A1
    ws.Range("A1").Orientation = xlUpward

    #Définir la direction de la chaîne de caractères dans la cellule A1
    ws.Range("A1").Orientation = 45

    #Définir la direction de la chaîne de caractères dans la cellule A1
    ws.Range("A1").Orientation = 0

    # ------------------------------------------------------------------

    #Définir la police dans la cellule A1
    ws.Range("A1").Font.Name = "Yu Gothic UI"

    #Définir la taille de la police pour la cellule A1
    ws.Range("A1").Font.Size = 12

    #Définissez la police de la cellule A1 en gras
    ws.Range("A1").Font.Bold = True

    #Définir la police de la cellule A1 en biseau
    ws.Range("A1").Font.Italic = True

    #Soulignez la police dans la cellule A1
    ws.Range("A1").Font.Underline = xlUnderlineStyleSingle

    #Définir le barré pour la police de cellule A1
    ws.Range("A1").Font.Strikethrough = True

    # ------------------------------------------------------------------

    #Définir la couleur du texte de la cellule A1(R+Gx256+Bx256x256)
    ws.Range("A1").Font.Color = 255 + 0*256 + 0*256*256

    #Définir la couleur du texte de la cellule A1(Commande spécifiée BGR)
    ws.Range("A1").Font.Color = int("FF0000",16)

    #Définir la couleur du texte de la cellule A1(Ordre spécifié RVB)
    ws.Range("A1").Font.Color = int("".join(list(reversed(["FF0000"[i: i+2] for i in range(0, 6, 2)]))),16)

    #Définir la couleur du texte de la cellule A1(Défaut)
    ws.Range("A1").Font.ColorIndex = xlColorIndexAutomatic

    # ------------------------------------------------------------------

    #Définir la couleur d'arrière-plan de la cellule A1(R+Gx256+Bx256x256)
    ws.Range("A1").Interior.Color = 255 + 255*256 + 0*256*256

    #Définir la couleur d'arrière-plan de la cellule A1(Commande spécifiée BGR)
    ws.Range("A1").Interior.Color = int("FFFF00",16)

    #Définir la couleur d'arrière-plan de la cellule A1(Ordre spécifié RVB)
    ws.Range("A1").Interior.Color = int("".join(list(reversed(["FFFF00"[i: i+2] for i in range(0, 6, 2)]))),16)

    #Définir la couleur d'arrière-plan de la cellule A1(Défaut)
    ws.Range("A1").Interior.ColorIndex = xlColorIndexNone

    # ------------------------------------------------------------------

    #Définir une bordure dans la cellule A1
    ws.Range("A1").Borders.Color = int("".join(list(reversed(["FF0000"[i: i+2] for i in range(0, 6, 2)]))),16)
    ws.Range("A1").Borders.LineStyle = xlContinuous
    ws.Range("A1").Borders.Weight = xlMedium

    #Relâchez la bordure de la cellule A1
    ws.Range("A1").Borders.LineStyle = xlLineStyleNone

    #Définir une bordure au bas de la cellule A1
    ws.Range("A1").Borders(xlEdgeBottom).Color = int("".join(list(reversed(["FF0000"[i: i+2] for i in range(0, 6, 2)]))),16)
    ws.Range("A1").Borders(xlEdgeBottom).LineStyle = xlContinuous
    ws.Range("A1").Borders(xlEdgeBottom).Weight = xlMedium

    #Supprimer la bordure au bas de la cellule A1
    ws.Range("A1").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone

    # ------------------------------------------------------------------

    #Effacer les valeurs et les formules dans la cellule A1
    ws.Range("A1").ClearContents()

    #Effacer le format de cellule A1
    ws.Range("A1").ClearFormats()

    #Effacer la cellule A1
    ws.Range("A1").Clear()

    #Supprimer la cellule A1
    ws.Range("A1").Delete()

    #Supprimer la cellule A1(Décalage vers le haut)
    ws.Range("A1").Delete(xlShiftUp)

    #Supprimer la cellule A1(Déplacer vers la gauche)
    ws.Range("A1").Delete(xlShiftToLeft)

    #Insérer dans la cellule A1
    ws.Range("A1").Insert()

    #Insérer dans la cellule A1(Rétrograder)
    ws.Range("A1").Insert(xlShiftDown)

    #Insérer dans la cellule A1(Déplacer vers la droite)
    ws.Range("A1").Insert(xlShiftToRight)

    # ------------------------------------------------------------------

    # (Norme de ligne A1)Définir la hauteur
    ws.Range("A1").RowHeight = 30

    # (Norme de colonne A1)Définir la largeur
    ws.Range("A1").ColumnWidth = 30

    # (Norme de ligne A1)Réglage automatique de la hauteur
    ws.Range("A1").EntireRow.AutoFit()

    # (Norme de colonne A1)La largeur est automatiquement ajustée
    ws.Range("A1").EntireColumn.AutoFit()

    # ------------------------------------------------------------------

    #Comment afficher et masquer des groupes individuels
    # https://vbabeginner.net/%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e5%8c%96%e3%81%ae%e8%a1%a8%e7%a4%ba%e3%81%a8%e9%9d%9e%e8%a1%a8%e7%a4%ba/

    #Définir le regroupement de lignes
    ws.Range("A1").EntireRow.Group()

    #Masquer le regroupement de lignes
    ws.Outline.ShowLevels(RowLevels = 1)

    #Afficher le regroupement de lignes
    ws.Outline.ShowLevels(RowLevels = 8)

    #Dissocier des lignes
    ws.Range("A1").EntireRow.Ungroup()

    #Définir le regroupement des colonnes
    ws.Range("A1").EntireColumn.Group()

    #Masquer le regroupement de colonnes
    ws.Outline.ShowLevels(RowLevels = 0, ColumnLevels = 1)

    #Afficher le regroupement de colonnes
    ws.Outline.ShowLevels(RowLevels = 0, ColumnLevels = 8)

    #Dissocier les colonnes
    ws.Range("A1").EntireColumn.Ungroup()

    # ------------------------------------------------------------------

    #Copier la cellule A1 dans la cellule B1
    ws.Range("A1").Copy(ws.Range("B1"))

    #Copier la cellule A1 dans la cellule A1 de la feuille Sheet2
    ws.Range("A1").Copy(wb.Worksheets("Sheet2").Range("A1"))

    #Copiez la zone actuelle de la référence de cellule A1 dans la référence de cellule Sheet2 A1
    ws.Range("A1").CurrentRegion.Copy(wb.Worksheets("Sheet2").Range("A1"))

    #Copier la cellule A1 dans le presse-papiers
    ws.Range("A1").Copy()

    #Copiez le presse-papiers dans la cellule B2
    ws.Activate()
    ws.Range("B2").Select()
    ws.Paste()

    #Copiez le presse-papiers dans la cellule C3(Coller la valeur)
    ws.Range("C3").PasteSpecial(xlPasteValues)

    #Copiez le presse-papiers dans la cellule C3(Coller le format)
    ws.Range("C3").PasteSpecial(xlPasteFormats)

    #Copiez le presse-papiers dans la cellule C3(Formule en pâte)
    ws.Range("C3").PasteSpecial(xlPasteFormulas)

    #Annuler le mode coupe ou le mode copie
    xlApp.CutCopyMode = False

    # ------------------------------------------------------------------

    #Déplacer la cellule A1 vers la cellule B1
    ws.Range("A1").Cut(ws.Range("B1"))

    #Déplacer la cellule A1 vers la cellule A1 de Sheet2
    ws.Range("A1").Cut(wb.Worksheets("Sheet2").Range("A1"))

    #Déplacer la cellule A1 vers le clip
    ws.Range("A1").Cut()

    #Annuler le mode de coupe ou le mode de copie
    xlApp.CutCopyMode = False

    # ------------------------------------------------------------------

    #Copie par lots le contenu de la colonne de gauche de la plage A1 à D4 dans la plage
    ws.Range("A1:D4").FillRight()

    #Copie par lots le contenu de la ligne supérieure dans la plage de E1 à H4 dans la plage
    ws.Range("E1:H4").FillDown()

    #Copiez par lots le contenu de la colonne de droite dans la plage A5 à D8 dans la plage
    ws.Range("A5:D8").FillLeft()

    #Copiez par lots le contenu de la ligne inférieure dans la plage de E5 à H8 dans la plage
    ws.Range("E5:H8").FillUp()

    # ------------------------------------------------------------------

    #Remplissage automatique de A1 à H1 à A1 à H8
    ws.Range("A1:H1").AutoFill(ws.Range("A1:H8"))

    #Remplissage automatique de A1 à H2 à A1 à H8
    ws.Range("A1:H2").AutoFill(ws.Range("A1:H8"), xlFillDefault)

    # ------------------------------------------------------------------

    #Filtre automatique de la zone actuelle par rapport à la cellule A1
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(Field = 1, Criteria1 = ">30")

    #Filtre automatique de la zone actuelle par rapport à la cellule A1
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(Field = 1, Criteria1 = ">30", Operator = xlAnd, Criteria2 = "<80")

    #Filtre automatique de la zone actuelle par rapport à la cellule A1
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(1, ">30")

    #Filtre automatique de la zone actuelle par rapport à la cellule A1
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(1, ">30", xlAnd, "<80")

    #Filtre automatique de la zone actuelle par rapport à la cellule A1
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(1, ">30", xlAnd, "<80")
    ws.Range("A1").CurrentRegion.AutoFilter(2, ">40", xlAnd, "<60")

    #Sélectionnez la plage d'AutoFilter
    ws.AutoFilter.Range.Select()

    #Sélection de cellule visible dans la plage de filtre automatique
    ws.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Select()

    #Nombre de lignes de cellules visibles dans la plage de filtre automatique
    n = int(ws.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count / ws.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Columns.Count)
    print( n )

    #Application du filtre automatique
    ws.AutoFilter.ApplyFilter()

    #Filtre automatique sans filtre
    if ws.FilterMode:
        ws.ShowAllData()

    #Annuler le filtre automatique
    if ws.AutoFilterMode:
        ws.AutoFilterMode = False

    # ------------------------------------------------------------------

    #Trier la zone actuelle en fonction de la cellule A1( Range Sort Method )
    #Si Type est omis, la spécification de Order2 etc. après Type est ignorée.
    #Si Type est défini sur Aucun, aucune erreur ne se produira, mais il fonctionnera mal.
    ws.Activate()
    ws.Range("A1").CurrentRegion.Select()
    ws.Range("A1").CurrentRegion.Sort(
        Key1 = ws.Range("A1"), Order1 = xlDescending,
        Key2 = ws.Range("B1"), 
        Type = None,
                               Order2 = xlDescending,
        Key3 = ws.Range("C1"), Order3 = xlAscending,
        Header = xlYes,
        MatchCase = False,
        Orientation = xlSortColumns,
        SortMethod = xlPinYin,
        DataOption1 = xlSortNormal, 
        DataOption2 = xlSortNormal, 
        DataOption3 = xlSortNormal, 
    )

    #Trier la zone actuelle en fonction de la cellule A1( Sort Object )
    #Bien que cela soit facultatif dans la référence VBA de Microsoft,
    #Notez que s'il est omis, il peut ne pas être trié normalement.
    ws.Activate()
    ws.Range("A1").CurrentRegion.Select()
    ws.Sort.SortFields.Clear()
    ws.Sort.SortFields.Add(Key = ws.Range("A1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlAscending)
    ws.Sort.SortFields.Add(Key = ws.Range("B1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlAscending)
    ws.Sort.SortFields.Add(Key = ws.Range("C1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlDescending)
    ws.Sort.SetRange(            ws.Range("A1").CurrentRegion)
    ws.Sort.Header = xlYes
    ws.Sort.MatchCase = False
    ws.Sort.Orientation = xlSortColumns
    ws.Sort.SortMethod = xlPinYin
    ws.Sort.Apply()

    # ------------------------------------------------------------------

    #Trier après avoir exécuté le filtre automatique( Sort Object )
    #Bien que cela soit facultatif dans la référence VBA de Microsoft,
    #Notez que s'il est omis, il peut ne pas être trié normalement.
    ws.Activate()
    ws.Range("A1").CurrentRegion.Select()
    ws.Range("A1").CurrentRegion.AutoFilter()
    ws.Range("A1").CurrentRegion.AutoFilter(1, ">30", xlAnd, "<80")
    ws.AutoFilter.Sort.SortFields.Clear()
    ws.AutoFilter.Sort.SortFields.Add(Key = ws.Range("A1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlDescending)
    ws.AutoFilter.Sort.SortFields.Add(Key = ws.Range("B1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlDescending)
    ws.AutoFilter.Sort.SortFields.Add(Key = ws.Range("C1"), SortOn = xlSortOnValues, DataOption = xlSortNormal, Order = xlAscending)
   #ws.AutoFilter.Sort.SetRange()
    ws.AutoFilter.Sort.Header = xlYes
    ws.AutoFilter.Sort.MatchCase = False
    ws.AutoFilter.Sort.Orientation = xlSortColumns
    ws.AutoFilter.Sort.SortMethod = xlPinYin
    ws.AutoFilter.Sort.Apply()

    # ------------------------------------------------------------------

    #Masquer la feuille
    ws.Visible = xlSheetHidden

    #Affichage de la feuille
    ws.Visible = xlSheetVisible

    # ------------------------------------------------------------------

    #Paramètres de protection des feuilles
    ws.Protect()

    #Libération de la protection de la feuille
    ws.Unprotect()

    #Définir la protection de la feuille avec un mot de passe
    ws.Protect(Password = "hoge")

    #Déprotéger la feuille avec un mot de passe
    ws.Unprotect(Password = "hoge")

    # ------------------------------------------------------------------

    #Paramètres de protection des livres
    wb.Protect()

    #Déprotéger le livre
    wb.Unprotect()

    #Protégez votre classeur avec un mot de passe
    wb.Protect(Password = "hoge")

    #Supprimer la protection par mot de passe pour les classeurs
    wb.Unprotect(Password = "hoge")

    # ------------------------------------------------------------------

    #Réglage de l'agrandissement du zoom
    ws.Activate()
    ws.Range("A1").Select()
    xlApp.ActiveWindow.Zoom = 90

    # ------------------------------------------------------------------

    # https://stackoverflow.com/questions/43146073/
    #Fixation du cadre
    ws.Activate()
    ws.Range("C3").Select()
    xlApp.ActiveWindow.FreezePanes = True

    # ------------------------------------------------------------------

    # https://qiita.com/Tachy_Pochy/items/64fe16ec076c52556b2d
    # CTRL+HOME (Désolé lorsque vous utilisez le filtre automatique)
    ws.Activate()
    ws.Range("A1").Select()
    xlCtrlHomeRow    = int(xlApp.ActiveWindow.SplitRow)    + int(xlApp.ActiveWindow.Panes(1).ScrollRow)    if (1 < xlApp.ActiveWindow.Panes.Count) else 1
    xlCtrlHomeColumn = int(xlApp.ActiveWindow.SplitColumn) + int(xlApp.ActiveWindow.Panes(1).ScrollColumn) if (1 < xlApp.ActiveWindow.Panes.Count) else 1
    ws.Cells(xlCtrlHomeRow, xlCtrlHomeColumn).Select()

    # https://excel-ubara.com/excelvba4/EXCEL272.html
    # CTRL+Sélection de cellules A1 de type HOME
    ws.Activate()
    ws.Range("A1").Select()
    xlApp.Goto(ws.Range("A1"), True)

    # ------------------------------------------------------------------

    #Recalcul
    xlApp.Calculate()

    #Arrêter d'afficher les messages d'avertissement dans Excel
    xlApp.DisplayAlerts = False

    #Commencer à afficher des messages d'avertissement dans Excel
    xlApp.DisplayAlerts = True

    #Arrêter de mettre à jour l'écran Excel
    xlApp.ScreenUpdating = False

    #Commencez à mettre à jour l'écran Excel
    xlApp.ScreenUpdating = True

    # ------------------------------------------------------------------

    #Changer le nom de la feuille
    wb.Worksheets("Sheet2").Name = "Sheet9"

    #Ajouter une feuille
    xlApp.Worksheets.Add()

    #Copie de feuille(Copier avant la feuille désignée)
    ws.Copy(Before = wb.Worksheets("Sheet9"))

    # https://stackoverflow.com/questions/52685699/
    #Copie de feuille(Copier après la feuille désignée)
    ws.Copy(Before = None, After = wb.Worksheets("Sheet9"))

    #Déplacer le siège(Passer au début de la feuille spécifiée)
    ws.Move(Before = wb.Worksheets("Sheet9"))

    # https://stackoverflow.com/questions/52685699/
    #Déplacer le siège(Se déplacer après la feuille spécifiée)
    ws.Move(Before = None, After = wb.Worksheets("Sheet9"))

    #Supprimer la feuille
    wb.Worksheets("Sheet9").Delete()

    # ------------------------------------------------------------------

    #Feuille de sortie au format PDF
    ws.ExportAsFixedFormat(Type = xlTypePDF, Quality = xlQualityStandard, Filename = f"{os.getcwd()}\\output.pdf")

    # ------------------------------------------------------------------

    #Enregistrer le classeur dans un fichier
    wb.Save()

    #Enregistrer le classeur dans un fichier XLSX
    wb.SaveAs(f"{os.getcwd()}\\outputSaveAs.xlsx", FileFormat = xlOpenXMLWorkbook)

    #Enregistrer le classeur dans un fichier XLS
    wb.SaveAs(f"{os.getcwd()}\\outputSaveAs.xls", FileFormat = xlWorkbookNormal)

    #Enregistrer le classeur dans un fichier CSV
    wb.SaveAs(f"{os.getcwd()}\\outputSaveAs.csv", FileFormat = xlCSV)

    # ------------------------------------------------------------------

    #Ferme le livre
    wb.Close()

    #Fermer sans enregistrer le livre
    wb.Close(SaveChanges = False)

    # ------------------------------------------------------------------

    #Quitter Excel
    xlApp.Quit()

    # ------------------------------------------------------------------

if __name__ == "__main__":
    main()

Exemple de mémorandum d'opération Excel avec pywin32 (win32com) de Python

sample.py sample.csv

Recommended Posts

Mémorandum d'opération Excel Python pywin32 (win32com)
Python pywin32 (win32com) Excel Range.Offset Range.Resize Range.Address
Mémorandum Python
Mémorandum Python 2
Mémorandum Python
mémorandum python
mémorandum python
Mémorandum Python
mémorandum python
Mémorandum Python
Mémorandum de base Python
Mémorandum de Python Pathlib
[python] Opération vectorielle
Mémorandum Python (algorithme)
Fonctionnement du système d'exploitation Python
[Python] Opération de matrice
Mémorandum d'opération Pandas
Mémorandum Python [liens]
Excel avec Python
mémorandum python (mise à jour séquentielle)
Exécutez Python à partir d'Excel
Mémorandum Python (signet personnel)
Gérez Excel avec python
Mémorandum de base Python partie 2
Résumé des opérations d'annuaire Python
Obstacle à la logique Python
Programmation Python avec Excel
Mémo d'opération de décorateur Python
Mémorandum @ Python OR Séminaire
mémorandum python super basique
Utiliser Excel avec Python (1)
[python] Opération de tranche de tableau
Utiliser Excel avec Python (2)
Mémorandum Cisco _ configuration d'entrée avec Python
Opération S3 avec python boto3
Mémorandum ABC [ABC163 C --managementr] (Python)
fonction de mémorandum python pour débutant
Mémorandum @ Python OR Séminaire: matplotlib
[Python] Mémorandum sur l'évitement des erreurs SQLAlchemy
Mémorandum sur la corrélation [Python]
Mémorandum @ Python OR Séminaire: Pulp
Un mémorandum sur le simulacre de Python
Mémorandum @ Python OU Séminaire: Pandas
Aim Python Library Master (12) Excel
[python] Mémorandum de génération aléatoire
Mémorandum @ Python OR Seminar: scikit-learn