
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
お邪魔します。まず、誤解されている方が非常に多いので説明しておきますが、
csvファイルといっても一様に統一された規格がある訳ではなくて、
殆どローカルルールで運用されるものです。
(共通語を持たない方言に喩えられることが多いですが、
言語で喩えるなら"ヨーロッパ語"ほどの曖昧さを持ったものです
つまり、通じない、場面が容易に想像できる"csv"なのです)
引用符の扱い、
引用符(で挟む単セル)内のカンマの扱い、
引用符(で挟む単セル)内の改行の扱い、
引用符(で挟む単セル)内の引用符の扱い、
等、確認できないと、テキストデータとして編集することは不可能です。
"csv'に'出力する"
とか
"csvデータ'に'出力する"
という言葉通りだと、
一般には「テキストデータとして編集した後、テキストファイルを出力する」
という意味になるのだと思いますが、
その場合は、ローカルルールを詳細に説明しておかないと
誰にも手が付けられない質問ということになってしまいます。
「Excelシートの一部をcsv形式で保存する」
ということだと、似ているようでも全然意味が違っていて、
Excelのcsv保存の機能を使って(Excelのcsv保存の仕様に合わせて)
ファイルを作成する、とうことになります。
その場合のサンプルを以下挙げてみます。
行区間指定の一例として対話型で書いてあります。
「★」の行までの記述は専ら、
先頭行(nTop)最終行(nBtm)を決める為の記述です。
「シート名 要 指定 ■」の部分は、
運用に合わせて正しいシート名を指定してください。
Sub Re8138672()
Const 出力行数初期設定 As Long = 3000 ' 指定変更可 □
Dim rtn
Dim sFn As String
Dim nTop As Long
Dim nBtm As Long
With Sheets("Sheet1") ' シート名 要 指定 ■
With .UsedRange
nTop = .Row
nBtm = .Rows(.Rows.Count).Row
End With
rtn = Application.InputBox(Prompt:="出力する範囲の先頭行を数字で指定" _
& vbLf & vbLf & "先頭行 ↓", _
Title:="csv出力:行指定1", Default:=nTop, Type:=1)
If rtn <> "False" Then
nTop = rtn
Else
Exit Sub
End If
If nBtm > nTop + 出力行数初期設定 - 1 Then nBtm = nTop + 出力行数初期設定 - 1
rtn = Application.InputBox(Prompt:="出力する範囲の最終行を数字で指定" _
& vbLf & vbLf & "先頭行 : " & nTop _
& vbLf & "最終行 ↓", _
Title:="csv出力:行指定2", Default:=nBtm, Type:=1)
If rtn <> "False" Then
nBtm = rtn
Else
Exit Sub
End If
' ' ★
sFn = "Title_" & nTop & "―" & nBtm & ".csv"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
.Rows(nTop & ":" & nBtm).Copy Destination:=Workbooks.Add.Sheets(1).Cells(1)
End With
ActiveSheet.SaveAs Filename:=sFn, FileFormat:=xlCSV
ActiveWorkbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox Prompt:="以下のファイル名でcsvファイルを出力しました" _
& vbLf & vbTab & sFn, _
Buttons:=vbInformation, Title:="csv出力:完了"
End Sub
詳細にご説明いただき、ありがとうございました!
ご丁寧に私の不勉強を指摘いただき、ありがたいです。
テストしたところ、私の思うとおりにcsvデータが出力できました。
おっしゃるように、「テキストデータを編集した後、テキストファイルを出力する」でした。
No.1
- 回答日時:
自ブックのSheet1の2行目から3000行目をSample01.csvと言うファイル名で保存するサンプルです。
Sub Sample()
Workbooks.Add
ThisWorkbook.Sheets("Sheet1").Rows("2:3000").Copy Destination:=Range("A1")
ActiveWorkbook.SaveAs Filename:="C:\Temp\Sample01.csv", FileFormat:=xlCSV
ActiveWindow.Close False
End Sub
ありがとうございました!
テストしたところ、csvで出力できてもデータがコピーされませんでした。
短かな構文なので何とかカスタマイズするなどして活用したいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) Excel VBAでフォルダが何層にもなっていて最下層の中にCSVファイルがあり最上層のファイルを指 4 2022/06/08 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
CSVデータの文字列置換
-
Excelマクロ 空白セルを無視し...
-
ファイル名を変数で書きこむfwr...
-
【C#】 csvファイルをバイナリ...
-
rubyを用いたCSVファイルの分割...
-
PowerShellでファイルの連結方法
-
vbaマクロについて 次のような...
-
複数のファイルをまたぐエクセ...
-
pythonでリストをCSVに出力する...
-
pythonのpandasのcsvの外部結合...
-
CSVファイルの比較と結果の取得...
-
VBAで複数のCSVからレコードセ...
-
PowerShellからGhostscriptを動...
-
Pythonのコードエラーについて...
-
ファイル保存ダイアログ表示に...
-
DOSコマンドでVBSで取得した値...
-
EXCEL→CSV保存時のダブルクォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロ 空白セルを無視し...
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
ファイル名を変数で書きこむfwr...
-
複数のファイルをまたぐエクセ...
-
バッチファイルでcsvファイルに...
-
【C#】 csvファイルをバイナリ...
-
PowerShellでファイルの連結方法
-
vbaマクロについて 次のような...
-
CSVで余計な空行が入る
-
IPアドレスのゼロパディング
-
バッチファイルでCSVの中身を仕...
-
PowerShellからGhostscriptを動...
-
CSVデータの文字列置換
-
VBAで複数のCSVからレコードセ...
-
pythonでリストをCSVに出力する...
-
EXCEL→CSV保存時のダブルクォー...
-
StringGridの中身をCSV形式で保...
-
VBAで文字列を引数とするアドイ...
おすすめ情報