質問するログイン新規登録

回答編集履歴

1

追記

2021/07/05 02:06

投稿

jinoji
jinoji

スコア4592

answer CHANGED
@@ -8,4 +8,23 @@
8
8
  makeCSV = WorksheetFunction.TextJoin(Split(WorksheetFunction.Rept(", ", ws.UsedRange.Columns.Count - 1) & vbLf), False, ws.UsedRange)
9
9
  End Function
10
10
 
11
+ ```
12
+ ---
13
+ <追記>
14
+ 元のセル値に関わらず全てのセルをダブルクォーテーションで括るのがお望みだったでしょうか。
15
+ 考えてみましたが今一つスッキリと書けませんでした。
16
+ ```VBA
17
+ Function makeCSV(ws As Worksheet)
18
+ Const wxw = """*""", x = "*"
19
+ With ws.UsedRange
20
+ Dim r, c, i, j, t
21
+ r = .Rows.Count: c = .Columns.Count
22
+ ReDim arr(1 To r, 1 To c)
23
+ For i = 1 To r: For j = 1 To c
24
+ t = .Cells(i, j).Text
25
+ arr(i, j) = IIf(t Like wxw, t, Replace(wxw, x, t))
26
+ Next j, i
27
+ makeCSV = WorksheetFunction.TextJoin(Split(WorksheetFunction.Rept(", ", c - 1) & vbLf), False, arr)
28
+ End With
29
+ End Function
11
30
  ```