ChatGPTでVBAコードを作成できると聞いて、さっそく試してみた。
ChatGPTに聞いてみると、30秒ほどでサンプルを知ることができた。すごく簡単で、これまで、ネットでVBAコードを探すのに時間をかけていたのが、とっても無駄な時間を使っていたことを思い知らされた。
また、Pythonのサンプルコードも知りたくて、聞いてみると、こちらも30秒ほどで返ってきて、プログラミングがあまりにも簡単に作れることが分かり、ChatGPT抜きでは考えられなくなりました。
この記事を読むと、実際にChatGPTにサンプルコードの作成をお願いする方法が分かります。
質問(VBAサンプル)
複数のエクセルファイルの特定シート内の文字列を置き直すVBAコードを教えて
回答
以下は、複数のExcelファイルに含まれる特定のシートの文字列を置換するVBAコードの例です。
“Sheet1″のA列からE列の文字列の中で、”置換前の文字列”を”置換後の文字列”に置換します。
Sub ReplaceStringInSheets()
Dim myPath As String, myFile As String, myExtension As String
Dim FldrPicker As FileDialog
Dim wb As Workbook
Dim ws As Worksheet
Dim cell As Range
'ファイル選択ダイアログを表示し、選択されたフォルダのパスを取得する
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "フォルダを選択してください"
.AllowMultiSelect = False
If .Show <> -1 Then Exit Sub
myPath = .SelectedItems(1) & "\"
End With
'指定したフォルダ内のExcelファイルを検索する
myExtension = "*.xls*"
myFile = Dir(myPath & myExtension)
Do While myFile <> ""
'Excelファイルを開く
Set wb = Workbooks.Open(Filename:=myPath & myFile)
'シートをループ処理する
For Each ws In wb.Worksheets
If ws.Name = "Sheet1" Then '対象のシートの場合、文字列を置換する
For Each cell In ws.Range("A:E")
If InStr(cell.Value, "置換前の文字列") > 0 Then
cell.Value = Replace(cell.Value, "置換前の文字列", "置換後の文字列")
End If
Next cell
End If
Next ws
'Excelファイルを保存し、閉じる
wb.Save
wb.Close
'次のExcelファイルを検索する
myFile = Dir()
Loop
End Sub
このコードでは、ファイル選択ダイアログを表示して、対象のフォルダを選択することができます。また、特定のシート名(上記の例では”Sheet1″)と、置換前の文字列、置換後の文字列を指定することができます。必要に応じて、これらのパラメータを変更してください。
質問(Pythonサンプル)
続いて、pythonでのサンプルをお願いしたところ、回答が30秒で返ってきました。
pythonのサンプルコードを教えて
回答
以下は、Pythonを使って特定のディレクトリ内の複数のExcelファイルに含まれる特定のシートの文字列を置換するサンプルコードです。
“Sheet1″のA列からE列の文字列の中で、”置換前の文字列”を”置換後の文字列”に置換します。
import os
import openpyxl
# 変数の設定
directory = 'C:/Users/UserName/Directory' # 対象のディレクトリのパス
old_string = '置換前の文字列' # 置換前の文字列
new_string = '置換後の文字列' # 置換後の文字列
# ディレクトリ内のファイルをループ処理する
for filename in os.listdir(directory):
if filename.endswith(".xlsx"): # Excelファイルの場合
filepath = os.path.join(directory, filename)
wb = openpyxl.load_workbook(filepath)
# シートをループ処理する
for ws in wb:
if ws.title == "Sheet1": # 対象のシートの場合、文字列を置換する
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=5):
for cell in row:
if isinstance(cell.value, str) and old_string in cell.value:
cell.value = cell.value.replace(old_string, new_string)
wb.save(filepath)
このコードでは、ディレクトリのパス、置換前の文字列、置換後の文字列を変数として設定します。対象のファイルがExcelファイルであることを確認して、openpyxlライブラリを使用してExcelファイルを開きます。シートをループ処理して、対象のシートであれば、A列からE列のセルの中で置換前の文字列を含むセルを置換後の文字列に置換します。ファイルを保存して閉じます。必要に応じて、ファイルの拡張子、シート名、列範囲を変更してください。
pythonでMS-IMEを制御する方法
import win32api
import win32con
def enable_ime(): # MS-IMEを有効にする
win32api.keybd_event(win32con.VK_KANA, 0, 0, 0) # VK_KANAキーを押す
win32api.keybd_event(win32con.VK_KANA, 0, win32con.KEYEVENTF_KEYUP, 0) # VK_KANAキーを離す
def disable_ime(): # MS-IMEを有効にする
win32api.keybd_event(win32con.VK_KANA, 0, 0, 0) # VK_KANAキーを押す
win32api.keybd_event(win32con.VK_KANA, 0, win32con.KEYEVENTF_KEYUP, 0)