Write # を使った書き込みの例。
下記の例のように、セルをそのまま書き込む場合は、
Variant型として扱われ、""で囲まれて記録される。
型に応じた変数、例えば、double型、long型等の変数をWrite #で書き込むと、
""で囲まれることはない。
型は、VarType(Cells(i, j).Value)で確認することができる。(使用例は、昨日のブログ参照)
Sub CsvWrite2()
Dim FilDlg As FileDialog
Dim SfsObj As Object
Dim PasNom As String
Dim SavNom As Variant
Dim ir As Long
Dim MaxRow As Long
Dim Mc As Long
Dim ic As Long
Dim MaxClm As Integer
Dim jCncel As Integer
Dim jer As Integer
Dim i As Long
Dim j As Integer
MaxRow = ActiveSheet.UsedRange.Rows.Count
MaxClm = ActiveSheet.UsedRange.Columns.Count
'保存するファイル名を取得する
PasNom = ThisWorkbook.Path
If Right(PasNom, 1) <> "\" Then PasNom = PasNom & "\"
SavNom = PasNom & "test.csv" 'デフォルトファイル名
SavNom = Application.GetSaveAsFilename( _
Title:="保存先の指定", _
InitialFileName:=SavNom, _
FileFilter:="csv形式,*.csv")
If SavNom = False Then
MsgBox "cancelが押されました"
Exit Sub
ElseIf Dir(SavNom) <> "" Then
If MsgBox("同名のファイルが存在します。上書きしますか?", vbYesNo) = _
vbNo Then Exit Sub
End If
On Error Resume Next '開けることの確認
Err.Clear
Open SavNom For Append As #1
Close #1
If Err.Number > 0 Then
MsgBox "ファイルが開けません"
jer = 1
Else
jer = 0
End If
On Error GoTo 0
If jer = 1 Then Exit Sub
Open SavNom For Output As #1
For i = 1 To MaxRow
Mc = 0
For j = MaxClm To 1 Step -1
If Cells(i, j) <> "" Then
Mc = j
Exit For
End If
Next j
Select Case Mc
Case Is < 1
Write #1, ""
Case 1
Write #1, Cells(i, 1)
Case Else
For j = 1 To Mc - 1
Write #1, Cells(i, j);
Next j
Write #1, Cells(i, Mc)
End Select
Next i
Close #1
End Sub