エクセルのデータをタブ区切りで出力したいのですが、「ファイル名を付けて保存」から「ファイルの種類」をタブ区切りにして保存した場合、カンマが含まれるセルにダブルクォーテーション「””」が付与されてしまいます。
やりたいことは以下の3つになります。
1.タブ区切りで出力する
2.カンマが含まれていてもダブルクォーテーションで括らない
3.先頭2行(1行目と2行目)を削除
※1行目はタイトル行、2行目はサンプル行です。
1と2を満たすVBAはできたのですが、3を実現するために以下の
処理を加えたところ、正しくタブ区切りで出力されなくなってしまいました。
・アクティブシートをコピー
・1~2行目を削除
・コピーしたシートを削除
作成したVBAは以下になります。
ーーーーーーーここからーーーーーーーーーーーー
Option Explicit
Public Sub ChangeTSV()
Dim FileName As String
FileName = WriteTsvFile(ActiveSheet)
If FileName <> "" Then
MsgBox "タブ区切りテキストファイルが作成されました。" & vbCrLf & "[PATH]" & vbCrLf & FileName, vbInformation, "タブ区切りテキストファイル作成完了"
End If
End Sub
Private Function WriteTsvFile(TargetSheet As Worksheet) As String
On Error GoTo WriteTabTxtFileErr
Dim FileName As String
Dim LastRow As Long
Dim LastCol As Long
Dim レコード As String
Dim c As Variant
Dim i As Long
Dim FileNo As Integer
' アクティブシートをコピー
ActiveSheet.Copy After:=Worksheets("最後のシート名")
' 1~2行目を削除
Range("1:2").Delete
' ファイル名を作成
FileName = Application.ThisWorkbook.Path & "\" & TargetSheet.Name & "_" & Format(Now, "yyyymmdd-hhmmss") & ".txt"
FileNo = FreeFile()
' 最終行と最終列の取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
i = 1
Open FileName For Output As #FileNo
' アラートOFF
Application.DisplayAlerts = False
Do Until i > LastRow
For Each c In Cells(i, 1).Resize(, LastCol)
レコード = レコード & vbTab & c.Value
Next c
Print #FileNo, Mid$(レコード, 2)
レコード = ""
i = i + 1
Loop
Close #FileNo
' コピーしたシートを削除
ActiveSheet.Delete
' アラートON
Application.DisplayAlerts = True
WriteTsvFile = FileName
Exit Function
WriteTabTxtFileErr:
MsgBox "[WriteTabTxtFile]" & vbCrLf & TargetSheet.Name & vbCrLf & Err.Description, vbCritical, "Exception"
WriteTsvFile = ""
Exit Function
End Function
ーーーーーーーここまでーーーーーーーーーーーー
タイトル行およびサンプル行を削除してから処理を行っているため、
どこまでがデータが入るべき列なのか判断できずに空白列にタブが入らないのは当たり前なのですが、
これを回避する方法がまったくわからず困っております。
お知恵をお貸しください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
エクセルで文字列をtxtファイルに変換すると"がつく
Excel(エクセル)
-
VB:Excelのデータを、区切りなしのtextファイルで出力したい
Visual Basic(VBA)
-
マクロから出力されるcsvのダブルコーテーションをなくしたい。
Visual Basic(VBA)
-
-
4
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBAでテキスト出力時のスペースについて
Visual Basic(VBA)
-
7
タブ区切りデータからダブルコーテーションを外したい
Excel(エクセル)
-
8
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
9
マクロを使ってフォルダー内にあるtxtデータをエクセルにデータに変換する方法をご教授願います
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Safariで、「プライベート」の...
-
youtubeのサムネイルを縦4列配...
-
firefoxで新しいタブを今開いて...
-
新しいタブと新しいウィンドウ...
-
Excel tab入力方法
-
QRコードで複数セルに一括入力...
-
NoEditorというソフトについて
-
accessタブコントロールのタブ...
-
パソコン バツを押すと全部消え...
-
iPadでiCloud ドライブ内のファ...
-
Chromeが強制終了
-
「タブ位置」と「既定値」(タ...
-
FFFTPの不具合
-
非タブブラウザを探しています。
-
firefoxで新しいウィンドウで開...
-
firefoxで、複数のウィンドウを...
-
YAHOOメールが別ウィンドウで開く
-
画面下のタブが重なって表示される
-
Chromeでctrlキーが押しっぱな...
-
【Excel質問】 必要な行だけ別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Safariで、「プライベート」の...
-
youtubeのサムネイルを縦4列配...
-
新しいタブと新しいウィンドウ...
-
Excel tab入力方法
-
Firefoxで設定を「前回のウィン...
-
QRコードで複数セルに一括入力...
-
firefoxで新しいタブを今開いて...
-
Firefoxで、メルカリを開くと、...
-
firefoxで新しいウィンドウで開...
-
Accessで独自メニューバーまた...
-
筆ぐるめ、 住所録一覧表が出ない
-
セルの値をグーグルで検索する...
-
Firefox タブを200くらい開いて...
-
Firefoxは、Chrome、Edgeのよう...
-
メモ帳のタブ幅を変更する方法
-
2つのウィンドウでGoogleChrome...
-
Firefox タブが50くらいしか使...
-
accessタブコントロールのタブ...
-
ブラウザが突然閉じてしまう・...
-
[Ctrl]押しながら[w]でタブが消...
おすすめ情報