質問編集履歴
1
タグにVBAを追加、リンク先をリンク挿入に変更、ソースコードを記載
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
|
+
|