![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
いつもお世話になっています。
今エクセルVBAで指定したフォルダ内のファイル情報を取得し、sheet2に貼り付けるものを作っています。
指定したフォルダ内のファイル情報を取得するまでは分かったのですが、作ったVBAを実行するとsheet1のA2セルから自動的に貼り付けられてしまいます。
sheet2のA1セルから貼り付けるにはどうすれば良いのでしょうか??
作ったVBAはこんな感じです。
まず、フォルダのパスを取得しA2セルへ表示します。
Sub test2()
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then Exit Sub
Range("A2").Value = .SelectedItems(1)
End With
End Sub
次に、A2セルの値を使ってファイル名を取得しました。
Sub Test()
Dim i As Long
Dim pass As String
pass = Range("A2").Value
With Application.FileSearch
.NewSearch
.LookIn = pass
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Cells(i + 1, 1) = .FoundFiles(i)
Cells(i + 1, 3) = FileDateTime(.FoundFiles(i))
Next i
End If
End With
End Sub
です。
長くて申し訳ありません。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
sheet1から起動(おそらく)して、別のシートを指定してあげないと、アクティブなシートを使って作業を行う事になります。
sheet("sheet2").select
のように、記入したい(アクティブなシートを移動する)などしてください。
また、sheet("sheet2").Range("A2") = 値 のようにすることも可能です。
実行時には、シート名を指定するようにしてください。
実験が終わったら、確実に動作させるために、Sub test2()でも、シート名を指定しましょう。
Sub Test()
sheet("sheet1").select
pass = Range("A2").Value
sheet("sheet2").select
For i = 1 To .FoundFiles.Count
Cells(i , 1) = .FoundFiles(i)
のように、実行範囲が明確になるように心がけてください。
>実行するとsheet1のA2セルから
Cells(i + 1, 1)
iは1から始まって、そこに1を加算しているので、A2から記入されます。
Cells(i , 1) でよいでしょう。
どうもありがとうございます。
基本的な構成も良く分からず、試行錯誤してました。
実行範囲が明確になるように、セルやシートの指定をするようにすればよかったんですね。
早速、自分で作ったVBを修正してみたら、うまくできました。
本当にありがとうございました。
No.3
- 回答日時:
>別シートに貼るには
「別シート」の「別」という考えかた、表現・書き方がおかしいのです。ただ質問者が「シート名を指定して、そのシートに書きこむVBAのやり方を知らない・経験してない」だけです。「何と何が別なの」と聞かれても、何もないでしょう。Sheet2をアクチブにして実行すればSheet2に書き出しされるでしょう。Sheet1を普通は、アクチブにして実行するからSheet1に書かれるのでしょう。
ですからご丁寧なコード例などは本件では関係ないのです。
また「貼りつける」と言う言葉が出てきますが、CopyPasteを連想しますが、それではなくて、値代入(=)で良いのですから、表現が適当でない。
またどこかの本に載っていた例なのでしょうが(コードの中身は最新式(FileSearchほか)ですが)簡単にDir関数でも出来るのではと思いました。
本題のシートを指定してセルを表現するのは
(A)Worksheets(”Sheet2”).Cells( )
(B)Set Sh2=Worksheets(”Sheet2”)
Sh2.cells( )
などがありますので、エクセルVBA解説書(中級以上)を見てください。
エクセルVBA、何も分かっていない状態で質問をして申し訳ありません。
解説書を買って勉強をしてはいますが、まだまださっぱりわからず・・・。とりあえず、上司に言われたことをこなすために似たようなプログラムを探して私用しているような状態です。
失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
エクセルでセルが指定できない
-
エクセルで、勤務表から 日付...
-
EXCELマクロで、シート間でのコ...
-
Rangeメソッドは失敗しました。...
-
条件に合った数値の合計を表示...
-
Excelでスクロールすると文字が...
-
現在時刻をリアルタイムで更新...
-
ユーザー定義について質問です。
-
Excelで違うシートから日付を引...
-
エクセルのセルに、マウスで選...
-
Excelのファイル容量が減らない...
-
Excel 計算式の中で使っている...
-
エクセル A8と同じシート名のG...
-
エクセルで条件に一致したセル...
-
ハイパーリンク で『指定された...
-
エクセルの複数シートに、順次”...
-
ExcelでTODAY関数を更新させな...
-
エクセルで複写のように自動入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
(Excel)あるセルに文字を入力...
-
Excelで複数シートの選択セルを...
-
エクセルで複写のように自動入...
-
Excelシートの保護時にデータの...
-
シート参照で変数を使いたい(EX...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
Excelでスクロールすると文字が...
-
Aというブックの1というシート...
-
エクセルで20万行あるシート...
-
エクセルの文字
-
エクセルで、加筆修正したセル...
-
VBAで変数に関数式の結果をセッ...
-
ExcelでTODAY関数を更新させな...
-
VBAで、セル(Range)のオブジ...
おすすめ情報