質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

1211閲覧

VBA 他のブックのセル値がウィンドウに表示されない

Chandler_Bing

総合スコア673

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/05/18 15:18

表題の通りです。

ソース

vba

1 Dim path As String '// 集計ファイルパス 2 Dim wb As Workbook '// ワークブック 3 Dim index As Integer '// 集計シートインデクス 4 5 path = Worksheets(1).Cells(2, 1) 6 index = Worksheets(1).Cells(2, 2) 7 8 '集計情報 9 Dim dt_cnt As Integer 10 11 12 dt_cnt = Worksheets(1).Cells(2, 3) 13 14 Debug.Print index // 3 15 Debug.Print dt_cnt // 45 16 Debug.Print Worksheets(1).Cells(2, 3) // 45 17 18 Set wb = Workbooks.Open(Filename:=path, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True) 19 Debug.Print wb.Worksheets(index).Cells(13, 27)

変数
path :別EXCELブックのパス
indes : パスで指定されているブックのシートインデックス
dt_cnt : 特に関係ない値です。

「index」、「「dt_cnt」、「Worksheets(1).Cells(2, 3)」の値は問題なくウィンドウに表示されます。
ただし、別ブックを参照している「wb.Worksheets(index).Cells(13, 27)」のみ表示されません。

何か指定が必要でしょうか。ちなみに別ブック自体は開けているので問題ないと思うのですが。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/18 15:26

エラーは出ていますか?
Chandler_Bing

2020/05/18 15:36

エラーは出ていません。追記にも記載しますが、集計したいブックのシートをVBAが書かれているブックにコピーすると、値が表示されました。別ブックの値はイミディエイトに表示できないなどというルールがあるのですか???
meg_

2020/05/18 16:29

同じようなコードで試しましたが、イミディエイトウィンドウにちゃんと出力されました。
Chandler_Bing

2020/05/18 16:45

meg_様のソースを拝見してもいいですか。
meg_

2020/05/18 17:04

質問者さんのコードの抜粋ですよ。 Sub a() Dim path As String Dim index As Integer Dim wb As Workbook path = Worksheets(1).Cells(2, 1) #あるExcelブックの絶対パス index = Worksheets(1).Cells(2, 2) #1 Set wb = Workbooks.Open(Filename:=path, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True) Debug.Print wb.Worksheets(index).Cells(13, 27) End Sub
ttyp03

2020/05/18 23:59

別ブックは開けている、エラーは出ていない、のであれば参照先のセルが空なんじゃないでしょうか?という安易な推測。 最終行にDebug.Print "TEST"など入れたらこれは出ますか?
Chandler_Bing

2020/05/19 00:06

お疲れ様です。テストは表示されますが、他ブックを参照してるのはダメでした。
ttyp03

2020/05/19 00:09

参照先のセルが空なんじゃないですか?
guest

回答2

0

ただし、別ブックを参照している「wb.Worksheets(index).Cells(13, 27)」のみ表示されません。

セルの中身が空白か、空白に見える文字なのでは?

Debug.Print wb.Worksheets(index).Cells(13, 27)

ExcelVBA

1with wb.Worksheets(index).Cells(13, 27) 2 Debug.Print .address(,,,true) 3 Debug.Print .value 4 Debug.Print len(.value) 5 Debug.Print isempty(.value) 6end With

みたいな感じで思いつくことを色々やってみては?

投稿2020/05/23 06:31

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

・「path」に指定した方のファイルを開いているのみの状態でVBEを開いて、イミディエイトウィンドウで

?Cells(13, 27).value

で何が出てきますか。

・cells(行、列)の指定になりますが、数えて正しい所を参照していますか。あえて別の数の少ないセルを参照してみて、間違いが無いかを確認する事も検討しましょう。

・「Worksheets(index)」ですから、シートのインデックス番号が「1」のシートを参照、で間違いないですか。(インデックス番号とシート名は違います)VBEに出てきますので一度確認してください。
シートを開く

・「path」に指定した方のファイルを開いているのみの状態でVBEを開いて、イミディエイトウィンドウで

?Worksheets(1).Cells(13, 27).value

では何が出てきますか。

小さい部分的な要素から徐々に検証していって、自分の思ったとおりに
出てこない箇所があれば、その部分でトラブっていると思います。


・cellsではなくRangeを使ってみるのもありだと思います。
第11回.RangeとCellsの使い方

・Debug.Printで出て来ないなら変数を用意して格納し、ローカルウィンドウで確認するのはどうでしょう。あるいはmsgboxも使えると思います。

実質的な問題としては、参照出来ているのか、取得出来ているのかという部分になると思うので、代替手段を提起してみました。(それで出来たとして、なぜ元の方で出来ないのかという問題は残りますが)

問題点をズバリ指摘の回答とはならないですが。

投稿2020/05/23 05:55

glam0337_k

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問