回答編集履歴
1
typoの修正と追記
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
とその場でインスタンス化してしまっていいのではないですか?
|
18
18
|
|
19
|
-
`CreateObject`は`Object`型で返ってくる為、パフォーマンス的にも不利です(とは言え体感できるような差はありせんが…)
|
19
|
+
`CreateObject`は`Object`型で返ってくる為、パフォーマンス的にも不利です(とは言え体感できるような差はありませんが…)
|
20
20
|
|
21
21
|
`CreateObject`を使う目的がマシンにインストールされているExcelのバージョンに依存しないプログラムを作ることであるなら、`myXls` `sheet`共に`Object`型であるべきです。そしてCOM参照をしてはいけません。
|
22
22
|
|
@@ -31,3 +31,41 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
なお、`Excel.Application`の他に`Excel.Application.14`などのバージョン番号を付けてインスタンス化する方法もありますので(あまり推奨はされませんが)併せて覚えておくと役に立つこともあるかもしれません。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
【追記】
|
40
|
+
|
41
|
+
コードを再読しました。
|
42
|
+
|
43
|
+
```vbnet
|
44
|
+
|
45
|
+
sheet = myXls.Worksheets(1)
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
とされているところ、ここが問題があるような気がします。
|
50
|
+
|
51
|
+
`Worksheets`オブジェクトは`Workbook`オブジェクトが持っています。
|
52
|
+
|
53
|
+
従って
|
54
|
+
|
55
|
+
```vbnet
|
56
|
+
|
57
|
+
Dim books = myXls.Workbooks
|
58
|
+
|
59
|
+
Dim book = books(1)
|
60
|
+
|
61
|
+
Dim sheets = book.Worksheets
|
62
|
+
|
63
|
+
sheet = sheets(1)
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
としてみてください。
|
68
|
+
|
69
|
+
確かにMSDNを見ると`Application`オブジェクトにも`Worksheets`プロパティはあると書かれていますが、私の記憶ではこれを参照したことがありません。
|
70
|
+
|
71
|
+
今手元にWindows機がない為、ある程度憶測になってしまうことはお許しいただきたい…。
|