見出し画像

019_質問:【自己責任】質問者、作ってもらったマクロをさらに改良して欲しいと頼む

 この記事書いている時間帯は夜。
 眠れないので先週作ってもらったマクロを試運転。
 仕事で使う前に、変な挙動がないか確認しないと落ち着かない。
 そこで気になったのが、.xls形式に別名保存した時にでる【互換性チェックの表示】。なんでチェックボックスと新しいシートにコピーのボタンが近くにあるのだろうか。うっかり押しそうで軽くストレス。
 だから、今日はAIさんにその部分を潰してもらおうと思います。
【追記】
 エラーが出たコードの個所を削除しました。
 そのせいで【互換性チェックの表示】でるので、次回はそこらへんを潰します。

今回の質問形式1
日本語で質問しますので、以下の形式で回答してください。
1.【今回の質問・またはお願い】
 前回作成していたマクロ……Excelファイルがたくさん入っているフォルダがあります。
そのフォルダに入っているExcelファイルをすべて.xlsxから.xlsに別名保存にて、続いて【互換性チェックの表示】が出たらチェックボックスにチェックを入れるマクロを作って欲しい。

2.【質問の英訳】
3.【英訳に対する英語の回答】
4.【英語の回答の日本語訳】

今回の質問形式2
ありがとうございます。その上でさらにフォルダに入っているエクセルファイルすべてにパスワードをかけるマクロを作ってください。
……ふつうに素でうちこんでしまいました。

AI回答1
【今回の質問・またはお願い】
前回作成していたマクロ……Excelファイルがたくさん入っているフォルダがあります。そのフォルダに入っているExcelファイルをすべて.xlsxから.xlsに別名保存にて、続いて【互換性チェックの表示】が出たらチェックボックスにチェックを入れるマクロを作って欲しい。

【質問の英訳】
I have a folder containing many Excel files, and I want to create a macro that will save all of these files with a different name from .xlsx to .xls. Additionally, if the "Compatibility Checker" dialog box appears, I want the macro to check the checkbox.

【英訳に対する英語の回答】
Sure, I can help you with that. Here is the VBA code for the macro you requested:

Sub ChangeFileFormat()
    Dim FilePath As String
    Dim FileName As String
    Dim wb As Workbook
    
    FilePath = "C:\YourFolderPath\" ' Replace with the path to your folder
    FileName = Dir(FilePath & "*.xlsx")
    
    Do While FileName <> ""
        Set wb = Workbooks.Open(FilePath & FileName)
        wb.SaveAs Filename:=FilePath & Left(FileName, Len(FileName) - 5) & ".xls", _
            FileFormat:=xlExcel8
        On Error Resume Next ' Ignore the error if the dialog box doesn't appear
        Application.Dialogs(xlDialogSaveAsCompatibility).Show
        On Error GoTo 0 ' Reset error handling
        wb.Close SaveChanges:=True
        FileName = Dir
    Loop
    
    Set wb = Nothing
End Sub

Please make sure to replace "C:\YourFolderPath" with the actual path to your folder. Also, note that the code will overwrite any existing files with the same name, so make sure to back up your files before running the macro.

【英語の回答の日本語訳】
はい、お手伝いいたします。以下が、リクエストされたマクロのVBAコードです。

Sub ChangeFileFormat()
    Dim FilePath As String
    Dim FileName As String
    Dim wb As Workbook
    
    FilePath = "C:\YourFolderPath\" ' 実際のフォルダのパスに置き換えてください
    FileName = Dir(FilePath & "*.xlsx")
    
    Do While FileName <> ""
        Set wb = Workbooks.Open(FilePath & FileName)
        wb.SaveAs Filename:=FilePath & Left(FileName, Len(FileName) - 5) & ".xls", _
            FileFormat:=xlExcel8
        On Error Resume Next ' ダイアログボックスが表示されない場合はエラーを無視します
        Application.Dialogs(xlDialogSaveAsCompatibility).Show
        On Error GoTo 0 ' エラー処理をリセットします
        wb.Close SaveChanges:=True
        FileName = Dir
    Loop
    
    Set wb = Nothing
End Sub

フォルダの実際のパスに "C:\YourFolderPath" を置き換えることを忘れないでください。また、コードは同じ名前の既存ファイルを上書きしてしまうので、マクロを実行する前にファイルをバックアップすることをお勧めします。また、ファイル形式を変更するために、Excel 2003以前のバージョンで使用されていたファイル形式 (.xls) が使用されます。最新バージョンのExcelで使用されるデフォルトのファイル形式 (.xlsx) は、機能やセキュリティの向上によって推奨されます。ただし、特定のシナリオでは、過去のバージョンのExcelとの互換性のために、.xls形式が必要になる場合があります。

さらにお願い。どうせなら、一つにできればむてきじゃね? と頭の悪い理論が働いた。

AI回答2
以下は、フォルダ内のすべてのExcelファイルを.xls形式に変換し、互換性チェックの表示が出たら自動でチェックボックスにチェックを入れ、すべてのファイルにパスワードを設定するVBAマクロのサンプルコードです。マクロを実行する前に、ファイルをバックアップすることをお勧めします。

Sub ConvertAndProtectFiles()
    Dim folderPath As String
    Dim fileName As String
    Dim currentWorkbook As Workbook
    Dim ws As Worksheet
    
    ' フォルダパスを指定する
    folderPath = "C:\Users\Username\Documents\Excel Files\"
    
    ' フォルダ内のすべてのExcelファイルをループ処理
    fileName = Dir(folderPath & "*.xlsx")
    Do While fileName <> ""
        ' Excelファイルを開く
        Set currentWorkbook = Workbooks.Open(folderPath & fileName)
        
        ' .xlsx形式から.xls形式に変換する
        currentWorkbook.SaveAs folderPath & Left(fileName, Len(fileName) - 5) & ".xls", FileFormat:=xlExcel8
        
      
        
        ' パスワードを設定する
        currentWorkbook.Password = "password"
        
        ' Excelファイルを閉じる
        currentWorkbook.Close SaveChanges:=True
        
        ' 次のExcelファイルを取得する
        fileName = Dir()
    Loop
End Sub

このマクロは、指定されたフォルダ内のすべての.xlsxファイルを.xls形式に変換し、互換性チェックの表示が出たら自動でチェックボックスにチェックを入れ、すべてのファイルにパスワードを設定します。フォルダパスを自分の環境に合わせて変更し、必要に応じてパスワードを変更してください。

AIも夢を見るのだろうか?
そんなことを考える。

この記事が気に入ったらサポートをしてみませんか?