回答編集履歴

1

追記:コードをちょっと修正

2020/03/31 01:23

投稿

Y.H.
Y.H.

スコア7918

test CHANGED
@@ -1,4 +1,4 @@
1
- このような表があったとして
1
+ このような表(シートA)があったとして
2
2
 
3
3
  |-|A|B|C|
4
4
 
@@ -22,33 +22,41 @@
22
22
 
23
23
  ```VBA
24
24
 
25
- Sheets("Sheet1").Select
25
+ Sheets("シートA").Range("A1").AutoFilter Field:=1, Criteria1:="東京都"
26
26
 
27
- ActiveSheet.Range("A1").AutoFilter Field:=1, Criteria1:="東京都"
27
+ With Sheets("シートA").Range("A1").CurrentRegion.Offset(1, 0) ' Offset()でタイトル行を除外しています。
28
28
 
29
+ Dim targetRow As Range
29
30
 
30
-
31
- Dim targetRow As Range
32
-
33
- With Range("A1").CurrentRegion.Offset(1, 0) ' Offset()でタイトル行を除外しています。
34
-
35
- ' フィルター後の行でループする
31
+ ' フィルター後の行(SpecialCells(xlCellTypeVisible)抽出)でループする
36
32
 
37
33
  For Each targetRow In .Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Rows
38
34
 
39
35
  ' targetRow がフィルター後の1行のRangeオブジェクトになります。
40
36
 
37
+ Debug.Print targetRow.Columns(1).Text ' A列の値
38
+
41
39
  Debug.Print targetRow.Columns(2).Text ' B列の値
42
40
 
43
-
41
+ Debug.Print targetRow.Columns(3).Text ' C列の値
44
42
 
45
43
  ' ここで、以下を行ってください。
46
44
 
47
- ' ②targetRowから名前を抽出(targetRow.Columns(2).Text でよい?)し、
45
+ ' ②targetRowから名前(targetRow.Columns(2).Textでよい?)を抽出し、
48
46
 
49
- ' シートBの特定のセルにセットする。
47
+ ' シートBの特定のセル(例としてX3)にセットする。↓こんな感じ?
50
48
 
49
+ ' Sheets("シートB").Range("X3").value = targetRow.Columns(2).Text
50
+
51
- ' ③シートBのPDF出力を行う。
51
+ ' ③シートBのPDF出力を行う。↓こんな感じ?
52
+
53
+ ' Sheets("シートB").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
54
+
55
+ ' targetRow.Columns(2).Text & ".pdf", Quality:=xlQualityStandard, _
56
+
57
+ ' IncludeDocProperties:=True, IgnorePrintAreas:=False, _
58
+
59
+ ' OpenAfterPublish:=False
52
60
 
53
61
  Next targetRow
54
62