1
/
5

【Python】簡単なプログラムやってみた

こんにちは、三橋です。

Pythonでできることは沢山ありますが、まず初歩的なエクセル操作、APIにアクセスをしてみたいと思います。


PythonでExcelマクロ実行(VBA)する

PythonではExcelを操作することができます。xlwingsを使用し、自動実行してみたいと思います。

xlwingsとはPythonでExcelを操作することが可能なライブラリです。

まずxlwingsをインポートし使用できるようにします。そしてPythonのプログラムと同じフォルダに「macroTest.xlsm」というExcelがあり、その中に「AddChart」というマクロがあるとします。Pythonのプログラムは以下のようになります。

import xlwings

app = xlwings.App()

wb = app.books.open('./macroTest.xlsm')

pg=wb.macro('AddChart')
pg()
 
wb.save('./macroTest.xlsm')
 
wb.close()
app.quit()


以下がグラフを作成するExcelマクロです。

Sub AddChart()
    Dim wk As Worksheet
    Dim data As Range
    Dim paste As Range
    
    Set wk = ThisWorkbook.Worksheets("test")
    Set data = wk.Range("A1:M2")
    Set paste = wk.Range("A8")
 
    'グラフ作成
    With wk.Shapes.AddChart.Chart
        .ChartType = xlColumnClustered
        .SetSourceData data
        .HasTitle = True
        .ChartTitle.Text = "売上"
     
        .Parent.Top = paste.Top
        .Parent.Left = paste.Left
    End With

End Sub


Pythonを実行します。

python3 macroTest.py


以下のようにグラフが作成されたので成功しました。


はい、ここまでPythonでExcel VBAを操作してみました。なぜこんな事する必要があるの?という疑問が出てきた人もいるかも知れません。

VBAは便利ですが、Excelの中にコード書くことになるので、ソースコード管理ができません。
複数人でコードを書くことも難しいです。できるだけPythonで書くことで管理しやすくなります。

PythonでAPIを呼び出してみる

次はPythonでAPIを呼び出してみます。

話題のChatGPTを呼び出してみることにします。

ChatGPTを使用するにはopenaiをインストールします。

ChatGPTからAPIキーを取得します。

以下のページにあるCreate new secret keyをクリックするとAPIキーが取得できます。

https://platform.openai.com/account/api-keys

api_keyに取得したAPIキーを入力し、promptに文章(質問など)を入力します。

import os
import openai

openai.api_key = 'xxxxxxxx'

response = openai.Completion.create(
  model="text-davinci-003",
  prompt="明日の天気は",
  temperature=0.9,
  max_tokens=150,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0.6,
  stop=None,
)

response = response.choices[0].text
print(response)


Pythonを実行してみます。下記の内容が返ってきました。こちらも成功です。

晴れです

明日はいい天気となりそうですね!お出かけ楽しみに!


株式会社クオリアシステムズでは一緒に働く仲間を募集しています

株式会社クオリアシステムズ's job postings

Weekly ranking

Show other rankings
Like 三橋 遥香's Story
Let 三橋 遥香's company know you're interested in their content