Macro (VBA) qui convertit la sélection de plage dans Excel en code d'initialisation de liste Python

Aperçu

** Code VBA qui convertit le contenu de la sélection sur Excel en ** code d'initialisation de liste Python et le copie dans le presse-papiers. Générez un programme Python avec la première ligne de la sélection comme ** nom de variable ** et les lignes suivantes comme ** éléments ** de la liste, comme illustré dans la figure suivante.

無題.png

Comment copier du texte dans le presse-papiers est présenté dans "Comment copier une chaîne VBA non défaillante dans le presse-papiers" J'ai utilisé le code tel quel.

code

Sélection(Range)Vers une liste Python (code d'initialisation)


Sub Range2PythonList()

  If TypeName(Selection) <> "Range" Then
    Exit Sub
  End If
      
  sCol = Selection(1).Column               'Colonne de début de plage
  eCol = Selection(Selection.Count).Column 'Colonne de fin de plage
  sRow = Selection(1).Row                  'Ligne de départ de la plage
  eRow = Selection(Selection.Count).Row    'Ligne de fin de gamme
      
  If sRow = eRow Then
    Exit Sub
  End If
      
  pCode = ""
  For c = sCol To eCol
    pCode = pCode & Cells(sRow, c).Value & "=["
    For r = sRow + 1 To eRow
      v = Cells(r, c).Value
      Select Case TypeName(v)
        Case "String"
          pCode = pCode & "'" & v & "'"
        Case "Empty", "Null", "Nothing"
          pCode = pCode & "None"
        Case "Date"
          pCode = pCode & "datetime.datetime(" _
                & Year(v) & "," _
                & Month(v) & "," _
                & Day(v) & "," _
                & Hour(v) & "," _
                & Minute(v) & "," _
                & Second(v) & ")"
        Case Else
          pCode = pCode & v
      End Select
      pCode = pCode & ","
    Next r
    pCode = Left(pCode, Len(pCode) - 1) & "]" & vbCrLf
  Next c
  
  Debug.Print pCode
  SetClip (pCode)

End Sub

'Copier le texte dans le clip
' https://info-biz.club/windows/vba/vba-set-clipboard.html
Sub SetClip(S As String)
  With CreateObject("Forms.TextBox.1")
    .MultiLine = True
    .Text = S
    .SelStart = 0
    .SelLength = .TextLength
    .Copy
  End With
End Sub

Méthode d'exécution

Démarrez Excel, démarrez l'éditeur de code VBA avec "** Alt + F11 **" et sélectionnez le classeur cible en double-cliquant.

f1.png

Une fenêtre pour écrire le code VBA s'ouvrira, alors copiez et collez le code ci-dessus.

Revenez dans Excel, ** sélectionnez une plage, puis ** lancez la macro avec "** Alt + F8 **" et sélectionnez "ThisWorkbook.Range2PythonList" pour l'exécuter.

f2.png

Le contenu de la sélection est converti en code d'initialisation de liste Python et copié dans le presse-papiers. Après cela, collez-le dans un éditeur approprié et utilisez-le (ajoutez ʻimport datetime` si nécessaire).

f3.png

Matériel de référence

Recommended Posts

Macro (VBA) qui convertit la sélection de plage dans Excel en code d'initialisation de liste Python
Obtenir la liste de codes EDINET en Python
Obtenez la valeur sélectionnée dans le menu déroulant Selenium Python VBA
Manipulez le presse-papiers en Python et collez le tableau dans Excel
L'histoire selon laquelle le remplacement de la liste bidimensionnelle n'a pas fonctionné en python
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Prenez la somme logique de List en Python (fonction zip)
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Copiez la liste en Python
Lire le nom / la plage de cellules Excel avec Python VBA
Code Python qui supprime les espaces contigus en un
À propos du fait que le contenu de l'impression Python n'est pas visible dans les journaux du docker
Une note qui implémente une tâche en Python qui charge un fichier GCS dans BigQuery
Comment trouver le premier élément qui correspond aux critères de la liste Python