[[20170806235509]] 『値の更新ウィンドウについて』(water melon) ページの最後に飛ぶ

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

 

『値の更新ウィンドウについて』(water melon)

初めて質問させて頂きます。
vba初心者です。

ファイル1にファイルダイアログオブジェクトを使って、
特定のファイル2を指定し、ファイル2の値をファイル1に転記する
マクロを作りました。

転記する際は、Formulaプロパティを使って、転記元が分かるように
ファイル1に数式を入れています。

マクロを実行するとファイルダイアログに従って、ファイルを特定した後、
値の更新ダイアログが出てきて、消えません。

ネットで原因を調べたところ、リンクの更新の設定を変更することで
解決するということなので、試してみましたが、変わらず、値の更新
ダイアログが出てきて、困っています。

解決方法を教えて頂けないでしょうか?

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 状況が今一つクリアじゃないです。

 > 特定のファイル2を指定し、ファイル2の値をファイル1に転記するマクロを作りました。 

 多分、Formulaプロパティにセットする情報が不十分なのだと思います。

(半平太) 2017/08/07(月) 09:12


半平太さん、コメントありがとうございます。

簡易化したコードは以下の通りです。
以下コードは特定のファイル2(file2)とファイル3(file3)のデータをファイル1に
転記したいというものです。(オリジナルの質問はファイル1のみですが、実際は複数ファイルに元データがあり、ファイル1が集計ファイルになるというものです)


Sub filedialog()

    Dim file2 As String 'file2のファイルパス
    Dim file3 As String  'file3のファイルパス

    With Application.filedialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Filters.Clear
    .Title = "転記元ファイルを選択してください"
    .InitialFileName = "ファイル1のファイルパス"

        If .Show = True Then
            file2 = .SelectedItems(1)
            file3 = .SelectedItems(2)

        Else

            MsgBox "キャンセルされました"

        End If

    End With

    Workbooks("ファイル1").Worksheets("AAA").Range("C5:J9").Formula = "=IFERROR(HLOOKUP(C$4,[file2]Sheet2!$C$4:$J$9,MATCH([file2]Sheet2!$B5,$B$4:$B$9,0),FALSE),0)"

    Workbooks("ファイル1").Worksheets("BBB").Range("C5:J9").Formula = "=IFERROR(HLOOKUP(C$4,[file3]Sheet2!$C$4:$J$9,MATCH([file3]Sheet2!$B5,$B$4:$B$9,0),FALSE),0)"

    MsgBox "データ転記完了"

End Sub


(watermelon) 2017/08/07(月) 09:46

 > file2 = .SelectedItems(1)
    ↑
   これは変数の file2
                                           こっちは、文字列の "file2"
                                                  ↓
 >Workbooks("ファイル1.xlsm").Worksheets("AAA").Range("C5:J9").Formula = "=IFERROR(HLOOKUP(C$4,[file2]Sheet2!$C$4:$J$9,MATCH([file2]Sheet2!$B5,$B$4:$B$9,0),FALSE),0)"
                                                 ~~~~~
 両者に同一性はないです。

 ※変数(Fiel2)の中身はファイルのフルパスで、その中には目的のファイル名が含まれていますが、
  そのファイル名がいつも file2 なんてこともあり得ないです。

 じゃ、どうすればいいの? ってことになりますが、

 フルパスを分解して、正しい数式用文字列(※)を再組成する必要があるんでしょうが、
 私の脳力でちょっとやったくらいでは、旨く作ることが出来ませんでした。退散します。m(__)m

 ※正しい数式用文字列は、file2をオープン後、あるべき数式を入れ、
   その後file2を閉じると、数式がフルパス付の"正しい"数式になるので、それを見れば確認できます。

(半平太) 2017/08/07(月) 15:48


半平太さん、ご検討いただきありがとうございます!
色々調べて見ます。

(water melon) 2017/08/07(月) 16:45


コメント返信:

[ 一覧(最新更新順) ]


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