前提・実現したいこと
Excelシートの一部分を選択してテキスト出力するマクロを組んでいます。
前提として、9割はできています。
しかし、手作業でコピペしたものとマクロを組んで出力されたテキストファイルを比べると、ほんの少しですが誤差が生まれます。
その誤差を改善させる解決案が欲しいです。
VBA初心者なのでここまでで手一杯でした。
似ている現象としては、コピペの際に
”Range("A1").PasteSpecial paste:=xlPasteValues”
を使えば、正しい値が貼り付けられましたが、
今回はコピペではなく、選択したセルをテキスト出力する形にしたいので手が止まってしまいました、、
発生している問題・エラーメッセージ
マクロの結果 コピペ 793.930882 0 724.365153 793.9308822 0 724.3651534
該当のソースコード
VBA
1Private Sub CommandButton1_Click() 2 Call autoMakeCGSetFileMain 3End Sub 4 5Public Function autoMakeCGSetFileMain() 6 7 Dim tmpRngBuff As Range 'コピー範囲を一時的に格納するバッファ 8 Dim sFilePath As String 'パス\ファイル名 9 10 sFilePath = ActiveWorkbook.Path & "\CGtxt" 11 12 Sheets("■CG").Select 13 Range("G4") = "STD" 14 Range("H4") = "STD" 15 Range("I4") = "STD" 16 Application.ScreenUpdating = False 17 18 'コピー元の選択 19 Set tmpRngBuff = Range("A15:E1163").Cells 20 21 '取得Raneをファイル出力 22 Call rngToFile(tmpRngBuff, sFilePath) 23End Function 24 25Public Function rngToFile(rUsed As Range, sFilePath As String) 26 27 Dim fs As New FileSystemObject '// FileSystemObject 28 Dim ts As TextStream '// TextStream 29 Dim crtRng As Range 'For Eachのカレント行Range 30 Dim jdgRow As Integer 'Dim iRow As Integer '判定用 31 Dim tmpStr As String '文字列バッファ 32 33 '// FileSystemObjectで新規ファイル作成 34 Set ts = fs.CreateTextFile(sFilePath, True, False) 35 36 ' 変数初期化 37 jdgRow = 0 38 tmpStr = "" 39 40 '// 1セルずつループ 41 For Each crtRng In rUsed 42 If jdgRow <> crtRng.Row Then 43 '// ループ初回時ではない場合 44 If crtRng.Row <> rUsed.Row Or crtRng.Column <> rUsed.Column Then 45 '// 行が変わったため改行コードを付与 46 tmpStr = tmpStr & vbCrLf 47 End If 48 49 '// 行の先頭値を連結 50 tmpStr = tmpStr & crtRng.Text 51 Else 52 '// タブ文字区切りで連結 53 tmpStr = tmpStr & vbTab & crtRng.Text 54 End If 55 56 '// 現在行取得 57 jdgRow = crtRng.Row 58 Next 59 60 ' ファイルに書き込む 61 ' セルの文字列が存在する場合 62 If tmpStr <> "" Then 63 Call ts.WriteLine(tmpStr) 64 End If 65 66 '// ファイルClose 67 Call ts.Close 68 69End Function 70
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。