ChatGPTで簡単!初心者でもできるVBAコードのサンプル入手方法

スポンサーリンク
プログラミング

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) 
タイトルとURLをコピーしました