[解決済み] ワークブック内の各シートを別々のCSVファイルに保存する
2023-05-24 12:43:09
質問
Excel のワークブックの各シートを別々のファイルに保存するにはどうしたらよいでしょうか。
CSV
ファイルに保存する方法を教えてください。
私は複数のシートを持つExcelを持っており、私は各シートを別の
CSV (comma separated file)
. Excelでは、すべてのシートを別々の
CSV
ファイルに保存することができません。
どのように解決するのですか?
ファイルを保存するフォルダを選ぶための視覚的なファイル選択ツールを提供し、CSV デリミタ (私のフィールドにはカンマが含まれており、引用符を処理したくないのでパイプ '|' を使用します) を選択できるものを紹介します。
' ---------------------- Directory Choosing Helper Functions -----------------------
' Excel and VBA do not provide any convenient directory chooser or file chooser
' dialogs, but these functions will provide a reference to a system DLL
' with the necessary capabilities
Private Type BROWSEINFO ' used by the function GetFolderName
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetFolderName(Msg As String) As String
' returns the name of the folder selected by the user
Dim bInfo As BROWSEINFO, path As String, r As Long
Dim X As Long, pos As Integer
bInfo.pidlRoot = 0& ' Root folder = Desktop
If IsMissing(Msg) Then
bInfo.lpszTitle = "Select a folder."
' the dialog title
Else
bInfo.lpszTitle = Msg ' the dialog title
End If
bInfo.ulFlags = &H1 ' Type of directory to return
X = SHBrowseForFolder(bInfo) ' display the dialog
' Parse the result
path = Space$(512)
r = SHGetPathFromIDList(ByVal X, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetFolderName = Left(path, pos - 1)
Else
GetFolderName = ""
End If
End Function
'---------------------- END Directory Chooser Helper Functions ----------------------
Public Sub DoTheExport()
Dim FName As Variant
Dim Sep As String
Dim wsSheet As Worksheet
Dim nFileNum As Integer
Dim csvPath As String
Sep = InputBox("Enter a single delimiter character (e.g., comma or semi-colon)", _
"Export To Text File")
'csvPath = InputBox("Enter the full path to export CSV files to: ")
csvPath = GetFolderName("Choose the folder to export CSV files to:")
If csvPath = "" Then
MsgBox ("You didn't choose an export directory. Nothing will be exported.")
Exit Sub
End If
For Each wsSheet In Worksheets
wsSheet.Activate
nFileNum = FreeFile
Open csvPath & "\" & _
wsSheet.Name & ".csv" For Output As #nFileNum
ExportToTextFile CStr(nFileNum), Sep, False
Close nFileNum
Next wsSheet
End Sub
Public Sub ExportToTextFile(nFileNum As Integer, _
Sep As String, SelectionOnly As Boolean)
Dim WholeLine As String
Dim RowNdx As Long
Dim ColNdx As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim StartCol As Integer
Dim EndCol As Integer
Dim CellValue As String
Application.ScreenUpdating = False
On Error GoTo EndMacro:
If SelectionOnly = True Then
With Selection
StartRow = .Cells(1).Row
StartCol = .Cells(1).Column
EndRow = .Cells(.Cells.Count).Row
EndCol = .Cells(.Cells.Count).Column
End With
Else
With ActiveSheet.UsedRange
StartRow = .Cells(1).Row
StartCol = .Cells(1).Column
EndRow = .Cells(.Cells.Count).Row
EndCol = .Cells(.Cells.Count).Column
End With
End If
For RowNdx = StartRow To EndRow
WholeLine = ""
For ColNdx = StartCol To EndCol
If Cells(RowNdx, ColNdx).Value = "" Then
CellValue = ""
Else
CellValue = Cells(RowNdx, ColNdx).Value
End If
WholeLine = WholeLine & CellValue & Sep
Next ColNdx
WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
Print #nFileNum, WholeLine
Next RowNdx
EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
End Sub
関連
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
-
[解決済み] UTF-8のCSVファイルをExcelに強制的に自動認識させることは可能ですか?
-
[解決済み] CSVファイル内のカンマの扱いについて
-
[解決済み】Excel 2013で.csvファイルを正しく表示する方法は?
-
[解決済み] 列の最後の非空白セル
-
[解決済み] リンク更新の警告を表示しないようにするには?
-
[解決済み] 行番号と列番号を指定してセルの内容を取得する
-
[解決済み] VBAを使用してプログラム的に参照を追加する方法
-
[解決済み] Cellの値がColumnに存在するかどうかを確認し、Next Cellの値を取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Excel で範囲の各行をループする
-
[解決済み] CSV/Excelに最適なタイムスタンプ形式は?
-
[解決済み] While...Wendループからの脱却
-
[解決済み] リンク更新の警告を表示しないようにするには?
-
[解決済み] 1行目とA列目を同時に凍らせる
-
[解決済み] VBAを使用してカスタムリボンタブを追加するには?
-
[解決済み] Excel での ISO8601 日付/時刻 (TimeZone を含む) のパース
-
[解決済み] NodejsでExcelファイルを作成するには?
-
[解決済み] Cellの値がColumnに存在するかどうかを確認し、Next Cellの値を取得する。
-
[解決済み] Excel CSV - 数値セルのフォーマット