質問編集履歴

1

タグにVBAを追加、リンク先をリンク挿入に変更、ソースコードを記載

2022/04/11 15:21

投稿

yokoazu
yokoazu

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  下記URLを参考にしています。
4
- https://excel.kuuneruch.com/vba-excel-read/
4
+ [リンク内容](url)https://excel.kuuneruch.com/vba-excel-read/
5
5
 
6
6
  リンク先のコードは、他のEXCELファイルデータを取り込む際のシート名が整数になっており整数型(Integer型)を使用しマクロを作成しています。
7
7
  私がやりたい事は、シート名を文字列(String)にして実行可能にしたいです。
@@ -9,3 +9,62 @@
9
9
  ですが、IntegerをStringに書き換えても型が一致しないというエラーになってしまいます。リンク先のコードをどのように修正したらよいのでしょうか。
10
10
  初心者のため説明が下手で申し訳ありませんがご教示頂けますと幸いです。
11
11
 
12
+ ```ここに言語を入力
13
+ ’「取り込むEXCELファイルのパス」と「取り込むEXCELファイルのデータが存在するシートNO」を引数に持つEXCEL関数を作成
14
+ Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) As Variant
15
+ Dim wb As Workbook
16
+ Dim ws As Worksheet
17
+
18
+ 'ワークブックを開く
19
+ Set wb = Workbooks.Open(FilePath)
20
+
21
+ 'シートを取得
22
+ Set ws = wb.Worksheets(SheetNo)
23
+
24
+ 'データ入力されている範囲を取得する
25
+ GetExcelData = ws.UsedRange
26
+
27
+ 'ワークブックを閉じる
28
+ wb.Close
29
+
30
+ 'メモリー開放
31
+ Set ws = Nothing
32
+ Set wb = Nothing
33
+
34
+ End Function
35
+ ```
36
+ ```ここに言語を入力コード
37
+ ’EXCELデータ取り込み関数を利用する関数を作成
38
+ Public Sub Test1()
39
+ Dim var As Variant
40
+ Dim FilePath As String
41
+ Dim InSheetNo As Integer
42
+ Dim OutSheetNo As Integer
43
+ Dim OutCell As String
44
+
45
+ With ThisWorkbook.Sheets(1)
46
+ FilePath = .Range("B1")
47
+ InSheetNo = .Range("B2")
48
+ OutSheetNo = .Range("B3")
49
+ OutCell = .Range("B4")
50
+ End With
51
+
52
+
53
+ '他のEXCELファイルデータを取り込む
54
+ var = GetExcelData(FilePath, InSheetNo)
55
+
56
+ Dim MaxRow As Long
57
+ Dim MaxCol As Long
58
+
59
+ '最大行数を取得する
60
+ MaxRow = UBound(var, 1)
61
+
62
+ '最大列数を取得する
63
+ MaxCol = UBound(var, 2)
64
+
65
+ '自ワークブックの1番目のシートのセルA1を基点に取り込んだデータを出力する
66
+ ThisWorkbook.Sheets(OutSheetNo).Range(OutCell).Resize(MaxRow, MaxCol).Value = var
67
+
68
+ End Sub
69
+ ```
70
+