[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『値の更新ウィンドウについて』(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
> 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.