lib_steak
@lib_steak

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Excel VBAで選択ファイルの行削除&シート名変更

Discussion

Closed

解決したいこと

Excel VBAで複数の.csvファイルをエクセルで開き、1行目を削除し保存して閉じるプログラムを作ったのですが、各csvファイルのワークシート名も変更してほしいとの要望があり修正することになりました。
色々調べて試してみたのですがうまくいかず、わかる方がいらっしゃればご教示いただきたいです。
コードは以下になります。


Sub Open_File_Edit()
' 複数のCSVファイルを選択し、同じ作業を繰り返すマクロ
'====================================================================================
'//ファイルを開くダイアログを開く
Dim selectFileName As Variant
Dim ws As Worksheet
Dim raw As String

selectFileName = _
    Application.GetOpenFilename( _
        FileFilter:="CSVファイル(*.csv),*.csv", _
        FilterIndex:=1, _
        Title:="読み込むファイルを選択してください。", _
        MultiSelect:=True _
    )
Dim oneFileName As Variant
If IsArray(selectFileName) Then

For Each oneFileName In selectFileName
    '//選択されたファイルを開く
        Workbooks.Open oneFileName
             
    '//変数を定義
        Dim nameCSV As String
        Dim newCSV As Workbook
        Dim sh1st As Worksheet
        nameCSV = Dir(oneFileName)      'ファイル名を取得
        Set newCSV = Workbooks(nameCSV) 'ワークブックとして定義
        Set sh1st = newCSV.Worksheets(1) '1枚目のワークシートを定義
        
    '処理内容記述
        
        Rows(1).Delete
        
    '//ワークブックを保存する
        On Error Resume Next
        newCSV.Save
    '//ワークブックを閉じて次へ
        Application.DisplayAlerts = False
        newCSV.Close
        Application.DisplayAlerts = True
        Next
        
Else
    MsgBox ("ファイルを選択しないで終了")
End If

End Sub

こちらの'処理内容を記述の部分にNameプロパティで変更すればうまくいくのではと思って試しているのですがうまくいきません。(エラーは起きないのですが、変更もされないといった感じです。)
初歩的な質問で申し訳ありませんが、ご教示いただけると幸いです。
宜しくお願い致します。

0

Workbooks.Open oneFileName

CSV から Excelブックに出力するで良いのですか? 読み込み時にヘッダーを読まない指定が簡単です。(StartRow:=2)

Workbooks.Worksheets(1).Name = "sheet1"
Workbooks.Save
Workbooks.Close

かな?

1Like

CSVを開き、CSVで保存しているようです。
ワークブック形式で保存しないと、ワークシート名などは反映されません。
お試しとして、以下の様にしてみて下さい。

sh1st.Name = "hoge"
newCSV.SaveAs Filename:=oneFileName & ".xlsx", _
FileFormat:=xlWorkbookDefault '@newCSV.Save
2Like

Your answer might help someone💌