|    | 
     こんにちわ。 
ご意見いただいた皆様、 
貴重なご意見ありがとうございます。 
 
実際にご教授いただいた通りに記述したのですが、 
出力されたCSVは全ての項目が出力してしまいます。 
 
 そこで、まる1日かけていろいろ調べたら自分のやりたい 
ように出力することができました。 
 ただ、いろいろな参考プログラムから貼り付けて修正して 
作成したのですが、細かくコードの意味などを理解していない 
のもございます。 
 下記に完成したVBAソースを記載致しますので、コメント欄の 
間違いやよくわからないものなどをご教授願えたらと思います。 
 
______________VBAコード___________________________________ 
 
Private Sub csv_Click() 
 
Dim targetRange As Range, myArea As Range, myColumn As Range 
Dim i As Long, j As Long, columnCount As Long 
Dim buf As Variant, buf2 As String 
Dim FSO As Object 
 
Dim myDir As String 
Dim myFname As String 
 
'デスクトップのパス 
myDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") 
'ファイル名の指定 
myFname = myDir & "\" & "TEST.csv" 
 
 
'ユニオンでA2:A100とE2:E100を抽出 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set targetRange = Union(Range("a2:a100"), Range("e2:e100")) 
 
 
’範囲セルのカウント? 
For  
 Each myArea In targetRange.Areas 
 columnCount = columnCount + myArea.Columns.Count 
Next myArea 
 
 
'ファイルの出力指定記述 
'With FSO.createTextFile("C:\Sample.txt", True) 'overwrite 
With FSO.CreateTextFile(myFname, True) 'overwrite 
 
 
'よくわかりません・・・ 
For i = 1 To targetRange.Areas(1).Rows.Count 
ReDim buf(1 To columnCount) 
j = 1 
For Each myArea In targetRange.Areas 
For Each myColumn In myArea.Columns 
buf(j) = myColumn.Cells(i).Text 'Value 
j = j + 1 
Next myColumn 
Next myArea 
'A,Eとカンマ区切りで出力 
buf2 = Join(buf, ",") 
 .writeline buf2 
  
Next i 
 
.Close 
End With 
 
MsgBox "出力しました" 
 
End Sub 
 
------------------------------------------------------------------------ 
 
お時間のあるときご教授下さい。 
 
 
▼mura さん: 
>>下記のコードだとA1〜E100まですべてのデータが出力されてしまいます。 
> 
>それはそうでしょう。そのようなコードになってますから。 
>SaveAsの前に 1行とB列〜D列を削除しましょう。 
> Rows(1).Delete 
> Columns("B:D").Delete 
> .SaveAs myFname, xlCSV 
 | 
     
    
   |