[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの転記についてご教授いただければと思います。』(VBA初心者)
エクセルのVBAについて質問です。
データの転記についてご教授いただければと思います。
メインファイルのセルに記載しているファイル名から特定セルの数字や文字をメインファイルの特定のセルにデータを転記したいです。
メインファイルのセルを選択(複数選択)しファイルを開くところまで(ファイルは開かず出来ればなお助かります)は出来たのですが、そこからメインファイルへのデータの転記のやり方があれば教えていただけると幸いです、宜しくお願い致します。
なお、メインファイルの転記先のセルは、選択した列によって変わります。
作業の流れです。
1、メインファイルのセルを選択(ファイル名)
2、マクロを実行(データ転記ボタン)
3、メインファイルのセルに選択したファイル名の中からデータが転記
Sub 複数選択()
Dim f As String, fld As String, key As String
Dim buf As Range
'フォルダ
fld = "C:\OOOO\OOOO\OOOO\OOOO\"
For Each buf In Selection
'ファイルキーワード(先頭部分)
f = Dir(fld & "\" & buf.Value & "*.xlsx")
If f = "" Then
Else
Do While f <> ""
Workbooks.Open fld & "\" & f
f = Dir()
Loop
End If
Next buf
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows8 >
教えていただいたものは式のどこに記入すれば良いのでしょうか?
またデータ転記後ファイルを閉じるのはどうすれば良いでしょうか?
どうぞよろしくお願いします。
(VBA初心者) 2021/04/07(水) 14:29
Sub 複数選択() Dim f As String Dim fld As String 'Dim key As String Dim buf As Range
'フォルダ fld = "C:\OOOO\OOOO\OOOO\OOOO\"
For Each buf In Selection 'ファイルキーワード(先頭部分) f = Dir(fld & "\" & buf.Value & "*.xlsx") Do While f <> "" 'データを収集 With Workbooks.Open(fld & "\" & f) 'ファイルを開く '開いたファイルからデータを収集 .Close SaveChange:=False 'セーブしないで閉じる End With
'データを転記 Select Case buf.Column 'bufの列により分岐 Case 1 To 10 'A〜J列の場合 Case 11 To 20 'K〜T列の場合 Case 21 To 30 'U〜AD列の場合 Case Else '上記以外の場合 End Select f = Dir() Loop End If Next buf End Sub (参考) 2021/04/07(水) 14:43
'データを転記 Select Case buf.Column 'bufの列により分岐 Case 1 To 10 'A〜J列の場合 Case 11 To 20 'K〜T列の場合 Case 21 To 30 'U〜AD列の場合 Case Else '上記以外の場合 End Select
こちらの部分ですが、転記元のA1セルの値や文字をbuf列のB2セルに転記したい場合どういったコードになりますでしょうか?
教えていただけると幸いです。宜しくお願い致します。
(VBA初心者) 2021/04/07(水) 17:53
(もこな2 ) 2021/04/08(木) 08:23
メインファイルの該当シートのレイアウト
→A列に転記元のファイル名が記入されております。(ファイルの一部名の場合もあり)
【特定セル】の説明(シート、セル番地等)
→メインファイルのA列の任意のセルを選択しマクロを実行します。
A25を選択する場合もあれば、A569を選択する場合もあります。
転記先のシートと転記元のシートは変動しません。
転記したいセル(複数あります)
転記元D8から転記先E(選択した列番号)
転記元F12から転記先F(選択した列番号)
など
【転記先セル】の説明(シート、セル番地等)
→シートはマクロを実行する際にセルを選択しファイルを開くシートが転記先のシートになります。
セルの番地は例としてA25を選択しファイルを開きデータを転記した場合は列は25で行はEやFになります。
説明がわかりにくく申し訳ありませんが宜しくお願い致します。
(VBA初心者) 2021/04/08(木) 09:13
【メインファイルxlsm】の【1番目?】シート _______A________B________C________D________E_____ 1 ああ かか ささ たた なな 2 いい きき しし ちち 【にに】 3 【うう】 くく すす つつ ぬぬ 4 ええ けけ せせ 【てて】 ねね 5 おお ここ そそ とと のの
↑のようなときは、「にに.xlsx」 「うう.xlsx」 「てて.xlsx」から、それぞれ転記するけども、転記先の【列】が違うと解釈しました。
でも、追加された説明だと、
_______A______ 1 ああ 2 いい . . 25 【うう】 26 ええ . . 568 おお 569 【かか】 570 きき . .
↑のようなときに「うう.xlsx」「かか.xlsx」から転記ということになるように思いますが、この解釈で正しいですか?
■2
「■1」の理解が正しいとなると、"選択した列番号"というのがよくわからなくなるのですが、【いつ】選択するのですか?
また、【行】はどこになるのですか?
■3
>転記先のシートと転記元のシートは変動しません。
ちょっとよくわからないので↓のように、ブック、シート、セル番地等を含めて説明してもらえませんか?
「うう.xlsx」の「1番目」のシートの「D3」セル→「メインファイルxlsm」の「集計用」という名前のシートの「25行目・D列」に転記
■4
>ファイルの一部名の場合もあり
↑例示がないとわかりません。
どのようなときに、どんなファイル名のものをヒットさせればよいか提示してください。
(もこな2 ) 2021/04/08(木) 19:46
ちょっとよくわからないので再確認。
>なお、メインファイルの転記先のセルは、選択した列によって変わります。
ですから、
【メインファイルxlsm】の【1番目?】シート _______A________B________C________D________E_____ 1 ああ かか ささ たた なな 2 いい きき しし ちち 【にに】 3 【うう】 くく すす つつ ぬぬ 4 ええ けけ せせ 【てて】 ねね 5 おお ここ そそ とと のの ↑のようなときは、「にに.xlsx」 「うう.xlsx」 「てて.xlsx」から、それぞれ転記するけども、転記先の【列】が違うと解釈しました。 でも、追加された説明だと、 _______A______ 1 ああ 2 いい . . 25 【うう】 26 ええ . . 568 おお 569 【かか】 570 きき . . ↑のようなときに「うう.xlsx」「かか.xlsx」から転記ということになるように思いますが、この解釈で正しいですか? ★→この解釈で正しいです。 選択する列は常に固定で、A列を選択します。(選択する列は固定で、行がか変わるという事でした、申し訳ありません。)
■2
「■1」の理解が正しいとなると、"選択した列番号"というのがよくわからなくなるのですが、【いつ】選択するのですか?
また、【行】はどこになるのですか?
★例:転記元D8から転記先E(最初に選択した行番号)に転記です。
■3
>転記先のシートと転記元のシートは変動しません。
ちょっとよくわからないので↓のように、ブック、シート、セル番地等を含めて説明してもらえませんか?
「うう.xlsx」の「1番目」のシートの「D3」セル→「メインファイルxlsm」の「集計用」という名前のシートの「25行目・D列」に転記
★ 「うう.xlsx」の「1番目」のシートの「D3」セル→「メインファイルxlsm」の「集計用」という名前のシートの「25行目・D列」に転記で正しいです。
■4
>ファイルの一部名の場合もあり
↑例示がないとわかりません。
どのようなときに、どんなファイル名のものをヒットさせればよいか提示してください。
★A列セルに記入してあるファイル名は下記などですが。
【うう】
【かか】
【ああ】
実際のファイルは【ああ】、【うう-AAA】、【かか-BBB】などとなっております。
【ああ】の場合はそのままヒットですが
セルに記入されているのは【うう】でも、実際のファイルが【うう-AAA】の場合もあるのでこれでもヒットし転記したいと考えております。
ファイル名の一部でもファイルをを開くことは出来たのでそれを使えればと考えております。
宜しくお願い致します。
(おいしい麦茶) 2021/04/09(金) 09:06
■5
★例:転記元D8から転記先E(最初に選択した行番号)に転記です。 「うう.xlsx」の「1番目」のシートの「D3」セル→「メインファイルxlsm」の「集計用」という名前のシートの「25行目・D列」
ちょっとわかりません。もう一度【行・列】について教えてください。
(どの【列】が、どの【列】に対応してるのか) (元データ側はどの【行】のデータを拾えば良いのか)
■6
>ファイル名の一部でもファイルを開くことは出来たのでそれを使えればと考えております。
ではそれを提示してください。(出来ているなら説明は省きますので)
■7
>(ファイルは開かず出来ればなお助かります)
これは、手間なので対応しません。
(もこな2) 2021/04/09(金) 09:46
■5
★例:転記元D8から転記先E(最初に選択した行番号)に転記です。 「うう.xlsx」の「1番目」のシートの「D3」セル→「メインファイルxlsm」の「集計用」という名前のシートの「25行目・D列」 ちょっとわかりません。もう一度【行・列】について教えてください。
(どの【列】が、どの【列】に対応してるのか) (元データ側はどの【行】のデータを拾えば良いのか) ★元データの拾うセルはD8セルとF12です。 拾うセルはメインファイルで選択した行にかかわらず固定した場所を拾いたいです。 「うう.xlsx」のD8とF12のセルには商品名や金額が記入されており、それをメインファイルに転記したいと考えております。
■6
>ファイル名の一部でもファイルを開くことは出来たのでそれを使えればと考えております。
ではそれを提示してください。(出来ているなら説明は省きますので)
★'ファイルキーワード(先頭部分)
f = Dir(fld & "\" & buf.Value & "*.xlsx")
If f = "" Then
Else
Do While f <> ""
Workbooks.Open fld & "\" & f
このコードを使用してファイル名の先頭部分のみでもファイルを開くことが出来ましたのでそのような説明をさせていただきました。
■7
>(ファイルは開かず出来ればなお助かります)
これは、手間なので対応しません。
★承知しました。
宜しくお願い致します。
(VBA初心者) 2021/04/09(金) 11:06
?@メインファイルの【うう】を選択しマクロ実行
?A【うう.xlsx】ファイルのD8をメインファイルのD25に転記
?B【うう.xlsx】ファイルのF12をメインファイルのG25に転記
?C【ああ】【おお】を選択した場合は選択した列番号に応じてD列とG列に転記
?D元データのD8とF12は常に同じ場所です。
【メインファイルxlsm】の【1番目】シート
_______A________B________C________D________E_________F_________G_____ 1 ああ 2 いい . . 25 【うう】 商品名A 25000 26 ええ . . 568 おお 569 かか
【元データ側 うう.xlsx】の【1番目】 _______A________B________C________D________E________F_____ 1 2 3 4 5 6 7 8 商品名A 9 10 11 12 25000
宜しくお願い致します。
(VBA初心者) 2021/04/09(金) 11:27
Sub 複数選択_改() Const フォルダパス As String = "C:\OOOO\OOOO\OOOO\OOOO\" Dim ブック名 As String Dim buf As Range Dim srcWB As Workbook
With ThisWorkbook.Worksheets(1) For Each buf In Selection '▼ブック名を取得してから、当該ブックを開いて変数にセットする ブック名 = Dir(フォルダパス & buf.Value & "*.xlsx") srcWB = Workbooks.Open(フォルダパス & ブック名)
'▼転記する .Cells(buf.Row, "D").Value = srcWB.Worksheets(1).Range("D8").Value .Cells(buf.Row, "G").Value = srcWB.Worksheets(1).Range("F12").Value
'▼開いたブックを閉じる srcWB.Close False
Next buf End With End Sub
(もこな2) 2021/04/09(金) 12:05
srcWB = Workbooks.Open(フォルダパス & ブック名)
オブジェクト変数または With ブロック変数が設定されていません。(エラー番号:91)
ご確認いただけると幸いです。
(VBA初心者) 2021/04/09(金) 12:28
それが難しいのであれば、↓が実際になんとなっているのか教えてください。(フォルダ名などがばれて困る場合は適当なものにかえてください)
Const フォルダパス As String = "C:\OOOO\OOOO\OOOO\OOOO\" buf.Value ←がどんな値になっているか
(もこな2) 2021/04/09(金) 12:53
Const フォルダパス As String = "C:\Users\ユーザー\Dropbox\見積もりフォルダ\"
buf.Value は「-111」
となっております。
(VBA初心者) 2021/04/09(金) 13:10
Sub test() Const フォルダパス As String = "C:\Users\ユーザー\Dropbox\見積もりフォルダ\" Dim ブック名 As String
ブック名 = Dir(フォルダパス & -111 & "*.xlsx") If ブック名 = "" Then MsgBox "指定フォルダに「-111」で始まるxlsxファイルが存在しません" Else Workbooks.Open フォルダパス & ブック名 MsgBox ActiveWorkbook.Name & "を開きました" End If End Sub
(もこな2) 2021/04/09(金) 13:21
Sub テスト用() Const フォルダパス As String = "C:\Users\ユーザー\Dropbox\見積もりフォルダ\" Dim ブック名 As String Dim buf As Range With ThisWorkbook.Worksheets(1) For Each buf In Selection Debug.Print " bufのアドレス:" & buf.Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True) Debug.Print " bufの値 :" & buf.Value ブック名 = Dir(フォルダパス & buf.Value & "*.xlsx") Debug.Print " ファイル名 :" & ブック名 & vbLf Next buf End With End Sub
(もこな2) 2021/04/09(金) 17:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.