No.3ベストアンサー
- 回答日時:
#2です。
非連続な列群を指定した場合に対応させてみました。ご参考まで。Unionに各範囲を与えるところは、ご自分でお願いします。
Sub test()
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
Set FSO = CreateObject("Scripting.FileSystemObject")
Set targetRange = Union(Range("a1:a3"), Range("c1:d3"), Range("f1:f3"))
'データチェック 先頭行位置、行数の一致チェック 必要ならご自分で作成下さい。
'If Not checkRanges(targetRange) Then Exit Sub
For Each myArea In targetRange.Areas
columnCount = columnCount + myArea.Columns.Count
Next myArea
With FSO.createTextFile("C:\Sample.txt", 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
buf2 = Join(buf, ",")
.writeline buf2
Next i
.Close
End With
End Sub
なるほど、Unionというのを使うのですね。
ソースを参考にしてうまく書き出せるようになりました。
回答ありがとうございました!
No.2
- 回答日時:
で回答した者ですが、そのコードで、targetRangeに書き出したい範囲を与え、
(例)
With ActiveSheet
Set targetRange = .Range("B2:C100")
End With
Join関数で、区切り文字を#→カンマに替えれば、お望みの事ができます。
ご参考まで。
なお、B,C列の最後までという事でしたら、
Set targetRange = .Range(.Range("B2"), .Range("C" & .Rows.Count).End(xlUp))
でいけると思います。(空白セルがC列の一番下に無い事が前提です)
この回答への補足
回答ありがとうございます!
ご指摘の方法で
Set targetRange = .Range(.Range("B2"), .UsedRange.Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count))
としてデータを抽出することができました。
別のデータの取得方法としてA列とC列(住所と電話番号)を抽出するといった場合も考えていたのですが、
ご指摘の方法だと列が連続していないとだめですよね。
RangeとFor文の使い方がキモなのかもしれませんが、ソースはなんとなくわかる、程度の初心者です。
良い方法がありましたがご教示ください。(丸投げですいません。。。)
一応解決?しましたのでこちらでご報告させていただきます。
ソースは以下のようにしました。
----------------------------------------------------
Sub XLS2HASH()
Dim targetRange As Range, myRow As Range
Dim buf() As String, buf2 As String
Dim i As Long
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
Set targetRange = .Range(.Range("A2"), .Range("C" & .Rows.Count).End(xlUp))
End With
For Each ws In ThisWorkbook.Sheets
With FSO.CreateTextFile(Application.ThisWorkbook.Path + "\" + ActiveSheet.Name + ".txt", True)
For Each myRow In targetRange.Rows
ReDim buf(1 To myRow.Columns.Count)
For i = 1 To myRow.Columns.Count
If i = 2 Then
Else
buf(i) = myRow.Cells(i).Text + "#"
buf2 = Join(buf, "")
buf2 = Left(buf2, Len(buf2) - 1)
End If
Next i
.WriteLine buf2
Next myRow
.Close
End With
Next
Set FSO = Nothing
End Sub
----------------------------------------------------
一旦全てを範囲選択し、該当する列だけ何もしないようにしました。
少々力技のような気がします。
他によい方法があればご教授お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- Excel(エクセル) エクセルの関数を教えてください。② 9 2023/05/25 15:28
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
基準となる列を参照して、別の...
-
エクセルで最初のスペースまで...
-
「B列が日曜の場合」C列に/...
-
Excelの行、列の左方向シフト、...
-
Excelで半角の文字を含むセルを...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
エクセルで、列の空欄に隣の列...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
いまさらですけど流列とは・・
-
A列がない・・・A列が非表示に...
-
VBAで文字列を数値に変換したい
-
エクセル(勝手に太字になる)
-
お店に入るために行列に並んで...
-
複素数を描けるソフトについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセルVBA、別ブックへ転記す...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
VBAで文字列を数値に変換したい
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
「B列が日曜の場合」C列に/...
-
Excelで半角の文字を含むセルを...
-
エクセルの並び変えで、空白セ...
-
Excel、市から登録している住所...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
エクセル初心者です 関数の入れ...
-
A列がない・・・A列が非表示に...
-
オートフィルターをかけ、#N/A...
-
エクセルで、列の空欄に隣の列...
おすすめ情報