#author("2016-09-08T06:51:59+09:00","default:Miyashita","Miyashita")
*行列データのファイル出力 [#c9ebe981]
シート上のセルに連続で並んだ行列の数値をtxt形式でファイルに掃き出したいときに.~
下記は固定長の出力としている.~
今のところ文字列がある場合には対応していない.~
#author("2018-02-21T15:00:44+09:00","default:Miyashita","Miyashita")

 Option Explicit 
 '行列配置をファイルに出力(固定長)
 Sub ファイル出力(sheetname As String, outfilename As String _
                , Rstart, Cstart _
                , strlength, degits)
 Dim WS As Worksheet
 Dim i, j, k As Long
 Dim fn As Long
 Dim formatstr As String
 Dim outdata, tmpline As String
 
 '画面の更新停止
 Application.ScreenUpdating = False
 '相対パス用に
 ChDrive ThisWorkbook.Path
 ChDir ThisWorkbook.Path
 
 Set WS = ThisWorkbook.Worksheets(sheetname)
 
 If degits <= 0 Then
  formatstr = "0"
 Else
  formatstr = "0."
  For k = 1 To degits
  formatstr = formatstr & "0"
  Next k
 End If
 
  ''出力ファイルを開く
  fn = FreeFile
  Open outfilename For Output As #fn
    
 i = Rstart
 Do Until WS.Cells(i, Cstart) = ""
   j = Cstart
   tmpline = ""
   Do Until WS.Cells(i, j) = ""
        outdata = Format(WS.Cells(i, j), formatstr)
        tmpline = tmpline & Right(Space(strlength) & outdata, strlength)
        j = j + 1
   Loop
 
  ' 文字列に変換した1行分を出力
   Print #fn, tmpline
   i = i + 1
 Loop
   Close #fn
 
 
 '画面の更新停止
 Application.ScreenUpdating = True
 
 MsgBox "おわり"
 
 End Sub

引数について
 sheetname   :出力したいシートの名前 String
 outfilename :出力するファイルの名前 String
 Rstart      :シート内のデータ開始行 Long か Integer
 Cstart      :シート内のデータ開始列 Long か Integer
 strlength   :1データ(数値)の幅      Long か Integer
 degits      :小数点以下の桁数       Long か Integer
degitsは適当な名前が思い浮かばなかった.decimal pointを入れようとすると長くなるのでやめた.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes