[[20170829182800]] 『ExecuteExcel4Macroを使用し、ダイアログを非表示』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ExecuteExcel4Macroを使用し、ダイアログを非表示にすると#REF!が出る』(初心者)

他ブックのデータを、ブックを開かずにセル値を取得するときに
ExecuteExcel4Macroを使用しようとしていますが
取得するときに何度も値の更新というダイアログが表示されます
参照場所やファイル名、シートは間違いありません

面倒になったのでApplication.DisplayAlerts = Falseを挿入したのですが
今度は取得したセル値が#REF!になってしまいました
因みに一度はダイアログが表示された際にExcelファイルを選択していると、次からはダイアログ非表示でも正しく更新されます

どうしたら一度目でダイアログを表示せずに正しく更新できるのでしょうか?

Sub 日計更新()

    '変数の使用宣言
    Dim m As Long, d As Long, x As Long, i As Long
    Dim Name As String
    Dim Myaddress As String

    '日付の取得と判別しやすく
    y = Right(Year(Date), 2)
    m = Month(Date)
    d = Day(Date)
    x = Cells(Rows.Count, "G").End(xlUp).Row
    Name = StrConv(y, vbWide) & " " & StrConv(m, vbWide) & "月"

    '記述の簡略化
    Myaddress = "'\\<<アドレス名なので伏せます>>\[集計.xlsm]"

    '正誤確認
    If d + 2 <= x Then GoTo Err
    If d + 1 = x Then GoTo Err2

back:

    '更新作業
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    For i = x - 1 To d - 1
        k = 2 * i + 5
        Cells(i + 2, 7) = ExecuteExcel4Macro(Myaddress & Name & "'!R32C" & k)
    Next i
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

Exit Sub

    'エラー
Err:
    MsgBox "エラーです" & vbCrLf & "日計の下が空欄か、確認をしてください"
Exit Sub

Err2:

    If MsgBox("既に入力されています" & vbCrLf & "それでも実行しますか?", vbYesNo, "日計更新") = vbYes Then GoTo back
End Sub

< 使用 Excel:Excel2010、使用 OS:WindowsVista >


 >値の更新というダイアログが表示されます

 Myaddress & Name に問題がありそう...
(seiya) 2017/08/29(火) 19:09

 こんばんわ。

 まだ外なので確認出来ないので、
 的外れでしたらすいません。

 Name の右の文字列に
 '!R32C と ' があるけど Name の左には無いのでは?

(sy) 2017/08/29(火) 19:19


>seiya
確認した気になっているのかもと思い再起動し
とりあえず一度何も変えず試行するとそのまま更新できました
まだ作成途中だったので違うセル値も参照してみましたが
普通にできました
何が原因で出来なかったのか特定できず終わってしまいました……

また再発するかもしれないので様子見しますが腑に落ちません

>sy
Myaddressの方に入っています
ぶっちゃけ他の人のを流用しただけなので'の意味自体はあまり分かりませんが……
(初心者) 2017/08/29(火) 19:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.