Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7267 / 13645 ツリー ←次へ | 前へ→

【39895】フォルダ内のファイルをまとめて転記したいのですが。 ESMEY 06/7/3(月) 20:54 質問[未読]
【39896】Re:フォルダ内のファイルをまとめて転記し... かみちゃん 06/7/3(月) 21:15 発言[未読]
【39978】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/4(火) 20:50 発言[未読]
【39981】Re:フォルダ内のファイルをまとめて転記し... Kein 06/7/4(火) 21:35 回答[未読]
【39985】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/4(火) 22:12 発言[未読]
【39987】Re:フォルダ内のファイルをまとめて転記し... Kein 06/7/4(火) 22:27 発言[未読]
【39991】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/4(火) 22:58 発言[未読]
【39992】Re:フォルダ内のファイルをまとめて転記し... かみちゃん 06/7/4(火) 23:06 発言[未読]
【39993】Re:フォルダ内のファイルをまとめて転記し... Kein 06/7/4(火) 23:15 発言[未読]
【40040】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/5(水) 23:10 発言[未読]
【40042】Re:フォルダ内のファイルをまとめて転記し... かみちゃん 06/7/5(水) 23:14 発言[未読]
【40047】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/6(木) 0:05 お礼[未読]
【40049】Re:フォルダ内のファイルをまとめて転記し... かみちゃん 06/7/6(木) 0:20 発言[未読]
【40094】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/6(木) 21:15 お礼[未読]
【40105】Re:フォルダ内のファイルをまとめて転記し... かみちゃん 06/7/6(木) 22:33 発言[未読]
【40229】Re:フォルダ内のファイルをまとめて転記し... ESMEY 06/7/9(日) 22:25 お礼[未読]

【39895】フォルダ内のファイルをまとめて転記した...
質問  ESMEY  - 06/7/3(月) 20:54 -

引用なし
パスワード
   フォルダの中に20個ほどのファイルがあります。
各ファイル内の形式は同じで、sheet1のB3,G13,J18の数字のみを
別のブックに転記したいと思っています。
今は20個ほどなのですが、どんどん増えていくため
ひとつひとつのファイル名を指定せずに行いたいのです。

この場合はgetfolderを使うのでしょうか?
使い方もよくわからないので教えていただけますでしょうか?
よろしくお願いします。

【39896】Re:フォルダ内のファイルをまとめて転記...
発言  かみちゃん  - 06/7/3(月) 21:15 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>フォルダの中に20個ほどのファイルがあります。
>各ファイル内の形式は同じで、sheet1のB3,G13,J18の数字のみを
>別のブックに転記したい

[#32749]などの過去ログを参照してみてください。
ポイントは、
・特定のフォルダ内にあるブック名の取得
・特定のシートの特定の値をリンクで参照
 (仮に一般操作で集めるとしたらどんな関数式になるか)
というところです。

【39978】Re:フォルダ内のファイルをまとめて転記...
発言  ESMEY  - 06/7/4(火) 20:50 -

引用なし
パスワード
   かみちゃんさんありがとうございます。

やってみたのですが、つまづいてしまいました。
下記のように書いたのですが・・

Sub test()
  Dim i As Long
  Dim ARow As Long
  Dim FolderName As String
  Dim FileName As String
  
  FolderName = "\\C:test"
  FileName = Dir(FolderName & "\*.xls")
  Do While FileName <> ""
→→ARow = ThisWorkbook.Worksheets("Sheet2").Range("A65536").End(xlUp).Row
  Workbooks.Open (FolderName & "\" & FileName)
  Worksheets("Sheet1").Range("B3").Copy Destination:= _
→→thisbook.Worksheets("Sheet2").Range("A" & ARow + 1)
  
  ActiveWorkbook.Close savechanges:=False
  FileName = Dir()
  Loop
End Sub

→の行のように書くとマクロを実行する度
どんどん下行へ下行へ追加されていきます。
どう変えたら、フォルダ内全ファイルのB3の数値がA1:A20に入るのでしょうか?
ご教授お願いします。

【39981】Re:フォルダ内のファイルをまとめて転記...
回答  Kein  - 06/7/4(火) 21:35 -

引用なし
パスワード
   こんな感じでしょーか。

Sub test2()
  Dim Sh As Worksheet
  Dim i As Long
  Dim FileName As String, LkSt As String
  Const FolderName As String = "\\C:test\"

  Set Sh = ThisWorkbook.Worksheets("Sheet2")
  Sh.Range("A:C").ClearContents
  FileName = Dir(FolderName & "*.xls")
  Do While FileName <> ""
    i = i + 1
    LkSt = "='" & FolderName & "[" & FileName & "]Sheet1'!"
    Sh.Cells(i, 1).Formula = LkSt & "$B$3"
    Sh.Cells(i, 2).Formula = LkSt & "$G$13"
    Sh.Cells(i, 3).Formula = LkSt & "$J$18"
    With Sh.Cells(i, 1).Resize(, 3)
     .Value = .Value
    End With
    FileName = Dir()
  Loop
  Set Sh = Nothing: MsgBox "値の転記を終了しました", 64
End Sub

【39985】Re:フォルダ内のファイルをまとめて転記...
発言  ESMEY  - 06/7/4(火) 22:12 -

引用なし
パスワード
   Keinさん素早い回答ありがとうございます。

行ってみたのですが
転記されましたというメッセージのみの表示で転記されていないのです。
エラーも何もでないようなんですが・・
どういうことなんでしょうか???

【39987】Re:フォルダ内のファイルをまとめて転記...
発言  Kein  - 06/7/4(火) 22:27 -

引用なし
パスワード
   コピーされていないということは、ブックを保存しているはずのフォルダーに
ブックファイルが無い、ということになります。ステップ実行して

Do While FileName <> ""

から、いきなり Loop 以下に飛んでしまってないかを調べて下さい。
そのあと、FolderName のパスに間違いがないか、処理対象ファイルの拡張子が
大文字のXLS になっていないか、チェックしてみて下さい。

【39991】Re:フォルダ内のファイルをまとめて転記...
発言  ESMEY  - 06/7/4(火) 22:58 -

引用なし
パスワード
   理由がはっきりわからないのですが
[Do while 〜Loopまで飛んでいる]ような気がします・・・
(名前等は間違っていないようなので)
すみません。
[飛んでる]場合はどうしたらよいのでしょうか?

【39992】Re:フォルダ内のファイルをまとめて転記...
発言  かみちゃん  - 06/7/4(火) 23:06 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>[Do while 〜Loopまで飛んでいる]ような気がします・・・
>(名前等は間違っていないようなので)
>すみません。
>[飛んでる]場合はどうしたらよいのでしょうか?

[#39978]でESMEYさんが提示されたコードではうまく動作するのでしょうか?
試しに、以下のようなコードでファイル名が表示されますか?

Sub test3()
 Dim FolderName As String
 Dim FileName As String
 
 FolderName = "\\C:test"
 FileName = Dir(FolderName & "\*.xls")
 Do While FileName <> ""
  MsgBox FolderName & "\" & FileName
  FileName = Dir()
 Loop
 MsgBox "終了しました"
End Sub

[#39981]でKeinさんのコードのうち、ファイル名の取得部分だけ抜粋すると、
以下のようなコードになります。
Sub test4()
 Dim FileName As String
 Const FolderName As String = "\\C:test\"

 FileName = Dir(FolderName & "*.xls")
 Do While FileName <> ""
  MsgBox FolderName & FileName
  FileName = Dir()
 Loop
 MsgBox "終了しました"
End Sub

test3、test4ともに動作しないのであれば、
 FolderName = "\\C:test"
は、合っているのでしょうか?

【39993】Re:フォルダ内のファイルをまとめて転記...
発言  Kein  - 06/7/4(火) 23:15 -

引用なし
パスワード
   かみちゃんさんが言われるように、どうもそのパスが怪しい感じがします。
もしかして実際は

"\\C\test"

ではないでしょーか ? 私の使っているPCから見たローカルネットワーク上の
他のPCは、そのような感じのパスになるのですが・・。

【40040】Re:フォルダ内のファイルをまとめて転記...
発言  ESMEY  - 06/7/5(水) 23:10 -

引用なし
パスワード
   なぜだかよくわからないのですが
教えていただいたものが動きました。
どこか書き間違えていたのかもしれません。

続きで申し訳ないのですが・・・

ダイアログボックスが出てきて
フォルダ、ファイル、シートを毎回選択しないと
それぞれの値が入らないのですが
これは自動入力にはなりませんでしょうか?
よろしくお願いします。

【40042】Re:フォルダ内のファイルをまとめて転記...
発言  かみちゃん  - 06/7/5(水) 23:14 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ダイアログボックスが出てきて
>フォルダ、ファイル、シートを毎回選択しないと
>それぞれの値が入らないのですが
>これは自動入力にはなりませんでしょうか?

意味がまったくわかりません。
Keinさんが提示されたコードのことですか?
そのコードでは、そのような事象にはならないと思いますが・・・

【40047】Re:フォルダ内のファイルをまとめて転記...
お礼  ESMEY  - 06/7/6(木) 0:05 -

引用なし
パスワード
   かみちゃんさん、Keinさんありがとうございました。

教えていただいたコードでは
ダイアログボックスはでないんですか・・
もうすこしやってみます。

【40049】Re:フォルダ内のファイルをまとめて転記...
発言  かみちゃん  - 06/7/6(木) 0:20 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>教えていただいたコードでは
>ダイアログボックスはでないんですか・・

ダイアログボックスを出したいのですか?
出したいなら、どのようなダイアログボックスですか?

>ダイアログボックスが出てきて
>フォルダ、ファイル、シートを毎回選択しないと
>それぞれの値が入らないのですが
>これは自動入力にはなりませんでしょうか?

この質問を読む限り、ダイアログボックスが出てきたら困るように思えるのは私だけですか?

ダイアログボックスを出したいのか出したくないのか・・・
一体どのようなことがしたいのかが、わからないです。

【40094】Re:フォルダ内のファイルをまとめて転記...
お礼  ESMEY  - 06/7/6(木) 21:15 -

引用なし
パスワード
   あやふやな書き方ですみません。。

ダイアログボックスで選択することなく
転記をしたかったのですが
どうしてもダイアログボックスが出てきてしまうので・・・
もうすこし考えてみます。
どこか間違えているんだと思います。

何度もありがとうございます。

【40105】Re:フォルダ内のファイルをまとめて転記...
発言  かみちゃん  - 06/7/6(木) 22:33 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>どうしてもダイアログボックスが出てきてしまうので・・・

少なくとも、Keinさんが提示されたコードでは、ダイアログボックスは出てきません。
今どのようなコードにしているのか、教えていただけると、原因は、わかるかもしれません。

【40229】Re:フォルダ内のファイルをまとめて転記...
お礼  ESMEY  - 06/7/9(日) 22:25 -

引用なし
パスワード
   こんばんは。
お返事が遅くなり申し訳ありません。

ダイアログボックスが出ると申しておりましたコードは
消してしまったのか見つけることができませんでした。
親身になってくださっているのにすみません。
記憶が定かではないのですが、
filesystemobjectをどこかで使っていたような気がします。
それが影響するのかはわかりませんので調べてみようと思います。

もう一度新しく書き直したところ
希望通りに動きました。
お手数おかけしました。

かみちゃんさん、Keinさんありがとうございました。

7267 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free