[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『全ファイルに反映させる』(ニワ)
同一フォルダに,A,B,C のファイルがあります。 ここで,「任意の1つのファイル」を選択し A1セルに あ B1セルに い C1セルに う と入力します。 そして,これらの あ,い,うのデータを,マクロを使って,残りの2つのファイルの A1,B1,C1セルにも反映されるようにしたいのですが,できますか。
たとえば,任意のファイルとして,Bファイルを選択し,BファイルのA1,B1, C1セルにデータを入力し,そのデータを残りのAファイル,CファイルのA1, B1, C1セルに反映させる また,Cファイルを選択したら,同じようにA,BファイルのA1, B1, C1セルに反映させる
というマクロを作りたいのですが。
任意のファイルはどのファイルか決まっていないので,A,B,C全ファイルに, 同じマクロを設定するイメージなんですが。
いかがでしょうか。
< 使用 Excel:unknown、使用 OS:unknown >
>< 使用 Excel:unknown、使用 OS:unknown >
大事な情報ですが、分かりませんか? (カリーニン) 2014/07/13(日) 17:00
エクセル2010 ウィンドウズ7 です。
(ニワ) 2014/07/13(日) 17:59
>「任意の1つのファイル」を選択し
ファイル選択はどのようにして行うのでしょう?
> 任意のファイルはどのファイルか決まっていないので,A,B,C全ファイルに, > 同じマクロを設定するイメージなんですが。
マクロブックから3つのファイルを制御、ではだめですか? 3つのブックすべてにマクロを記述しておく必要はないように思えるのですが。 (カリーニン) 2014/07/13(日) 18:58
ファイルの選択は、任意で規則性はありません。 任意のファイルを開いて、データを入力して、 開いているファイル上でマクロを実行して、他のファイルに反映される というふうにしたいのですが。
(ニワ) 2014/07/13(日) 20:23
>任意のファイルを開いて、データを入力して、 >開いているファイル上でマクロを実行して、他のファイルに反映される
マクロブックから開いているブックを取得して制御できますが、やはりデータブック にマクロを記述しておくのでしょうか?
同じコードを複数のブックに記述しておく必要性を感じません。 (カリーニン) 2014/07/13(日) 20:34
"C:\test"の中に aaa.xlsx bbb.xlsx ccc.xlsx という3つのブックがあり、そのなかの一つのブックを 開いて編集している、との仮定です。
開いているブックのSheet(1)の"A1"、"B1"、"C1"のデータを 他のブックの同じセルに転記します。
このマクロは3つのブック以外のマクロブックの記述して実行 します。
Sub test() Dim fol As String Dim wbAmei As String Dim wbBmei As String Dim wbCmei As String Dim wbdic As Object Dim wb As Workbook Dim mywb As Workbook Dim newwb As Workbook Dim RngA As Range Dim RngB As Range Dim RngC As Range Dim flg As Boolean Dim wbkys As Variant Dim wbky As Variant fol = "C:\test" wbAmei = "aaa.xlsx" wbBmei = "bbb.xlsx" wbCmei = "ccc.xlsx" Set wbdic = CreateObject("Scripting.Dictionary") wbdic.Add wbAmei, fol & "\" & wbAmei wbdic.Add wbBmei, fol & "\" & wbBmei wbdic.Add wbCmei, fol & "\" & wbCmei flg = False For Each wb In Workbooks If wbdic.exists(wb.Name) Then flg = True Set mywb = wb wbdic.Remove (wb.Name) End If Next wb If flg = True Then Set RngA = mywb.Worksheets(1).Range("A1") Set RngB = mywb.Worksheets(1).Range("B1") Set RngC = mywb.Worksheets(1).Range("C1") wbkys = wbdic.keys For Each wbky In wbkys Set newwb = Workbooks.Open(wbdic(wbky)) newwb.Worksheets(1).Range(RngA.Address(0, 0)).Value = RngA.Value newwb.Worksheets(1).Range(RngB.Address(0, 0)).Value = RngB.Value newwb.Worksheets(1).Range(RngC.Address(0, 0)).Value = RngC.Value newwb.Save newwb.Close Set newwb = Nothing Next wbky End If wbdic.RemoveAll Set wbdic = Nothing Set mywb = Nothing End Sub (カリーニン) 2014/07/13(日) 21:36
一部修正
If wbdic.exists(wb.Name) Then
↓
If wbdic.exists(wb.Name) And wb.Path = fol Then (カリーニン) 2014/07/14(月) 09:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.