Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2729 / 13646 ツリー ←次へ | 前へ→

【66335】CSVの保存について たっくん 10/8/23(月) 21:53 質問[未読]
【66337】Re:CSVの保存について kanabun 10/8/23(月) 22:21 発言[未読]
【66349】Re:CSVの保存について たっくん 10/8/24(火) 23:00 お礼[未読]
【66340】Re:CSVの保存について kanabun 10/8/23(月) 22:43 発言[未読]
【66348】Re:CSVの保存について よろずや 10/8/24(火) 19:18 回答[未読]

【66335】CSVの保存について
質問  たっくん  - 10/8/23(月) 21:53 -

引用なし
パスワード
   CSVのファイルをメモ帳等のテキストエディタで開いて1行目に空白を入れて保存したとする。そのファイルをExcelで開くと1行目は空白が入ってあります。
そのままExcelでCSV(カンマ区切り)の形式で保存すると、その1行目は空白がなくなります。
1行目の空白を削除せずそのまま保存できるようにしたい。
またそのVBAも教えてください。
よろしくお願いいたします。

【66337】Re:CSVの保存について
発言  kanabun  - 10/8/23(月) 22:21 -

引用なし
パスワード
   ▼たっくん さん:

もっと良い方法があるかもしれませんが、
とりあえず以下でも一行目は失われません。
(ダミーのCSVファイルでテストしてみてください)

Sub Try1()
  Dim fName As String
  Dim ss As String
  Dim io As Integer
  
  io = FreeFile()
  fName = ActiveWorkbook.FullName
  ActiveSheet.Range("A1").CurrentRegion.Copy
  With GetObject("new:1C3B4210-F441-11CE-B9EA-00AA006B1A69")
    .GetFromClipboard
    ss = .GetText
  End With
  With Application
    .CutCopyMode = True
    .DisplayAlerts = False
  End With
  ActiveWorkbook.Close False
  Open fName For Output As io
  Print #io, Replace(ss, vbTab, ",");
  Close io
  
End Sub

【66340】Re:CSVの保存について
発言  kanabun  - 10/8/23(月) 22:43 -

引用なし
パスワード
   ▼たっくん さん:

思いつきですが、別法を

Sub Try2()
  ActiveSheet.Range("A1").Formula = "="""""
  
  Dim fName
  With ActiveWorkbook
    fName = Application.GetSaveAsFilename(.FullName, "CSV,*.csv")
    If VarType(fName) = vbBoolean Then Exit Sub
    
    Application.DisplayAlerts = False
    .SaveAs fName, xlCSV
    .Close False
    Application.DisplayAlerts = True
  End With
End Sub

【66348】Re:CSVの保存について
回答  よろずや  - 10/8/24(火) 19:18 -

引用なし
パスワード
   ▼たっくん さん:
>CSVのファイルをメモ帳等のテキストエディタで開いて1行目に空白を入れて保存したとする。そのファイルをExcelで開くと1行目は空白が入ってあります。
>そのままExcelでCSV(カンマ区切り)の形式で保存すると、その1行目は空白がなくなります。
>1行目の空白を削除せずそのまま保存できるようにしたい。
CSVとして保存したい範囲を罫線で囲んでから、CSV形式で保存。

【66349】Re:CSVの保存について
お礼  たっくん  - 10/8/24(火) 23:00 -

引用なし
パスワード
   Sub saveCsv()
  Dim myTxtfile As String, myFNo As Integer
  Dim myLastRow As Long, i As Long
  
  Application.ScreenUpdating = False
  
  myTxtfile = "c:\1.csv"
  
  Worksheets("csv").Activate
  myLastRow = Range("A1").CurrentRegion.Rows.Count
  
  myFNo = FreeFile
  Open myTxtfile For Output As #myFNo
  
'表7列からなっている場合
  For i = 1 To myLastRow
    Write #myFNo, Cells(i, 1), Cells(i, 2), Cells(i, 3), _
      Cells(i, 4), Cells(i, 5), Cells(i, 6), Cells(i, 7)
  Next
  
  Close #myFNo
  
End Sub


このVBAで解決いたしました。
みなさんどうもありがとうございました。

2729 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free