
VBAについてのご質問です。
”データ処理ファイル”というファイルの”データ処理シート”というシートの”B1:S110000”セルをコピーして
同じフォルダ内のすべてのファイルの”あ”というシートの”B1:S110000”セルにペーストしたいです。
自分なりに下記のように作ってみましたが一部でエラーが出てしまいうまく動作しません。
お手数をおかけしますが、どのように修正すればよいかご教示いただけますでしょうか。
また、全然違うようでしたらサンプルコードをいただけないでしょうか?
差し出がましい質問で大変恐縮ですが、ご教示いただけると幸いです。
Sub 粗さデータ処理()
Dim fileName As String
Dim wsName As String: wsName = "粗さデータ" '対象ワークシート名
Application.ScreenUpdating = False '各ファイルの変更処理を表示させない
Application.DisplayAlerts = False '保存時メッセージを表示させない
ChDir ThisWorkbook.Path
fileName = Dir("*.xlsx?") 'フォルダ内の最初のエクセルファイル名を取得
Do While fileName <> ""
If fileName <> ThisWorkbook.Name Then 'マクロのあるファイルでなければ
With Workbooks.Open(fileName) 'ファイルオープン
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy_
.Worksheets(wsName).Range("B1").Select
.Close savechanges:=True '保存&クローズ
End With
End If
fileName = Dir() 'フォルダ内の次のエクセルファイル名を取得
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy_でエラーが出ています。
No.3ベストアンサー
- 回答日時:
もし、Cドライブ上にない場合は、ChDirを使用しない方法のほうが良いです。
かなり書き換えますが、以下のようにしてください。
これから、外出します。戻りは、夕方以降になります。
Sub 粗さデータ処理()
Dim fileName As String
Dim filePath As String
Dim wsName As String: wsName = "粗さデータ" '対象ワークシート名
Application.ScreenUpdating = False '各ファイルの変更処理を表示させない
Application.DisplayAlerts = False '保存時メッセージを表示させない
filePath = ThisWorkbook.path
fileName = Dir(filePath & "\" & "*.xls?") 'フォルダ内の最初のエクセルファイル名を取得
Do While fileName <> ""
If fileName <> ThisWorkbook.Name Then 'マクロのあるファイルでなければ
With Workbooks.Open(filePath & "\" & fileName) 'ファイルオープン
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy .Worksheets(wsName).Range("B1")
.Close savechanges:=True '保存&クローズ
End With
End If
fileName = Dir() 'フォルダ内の次のエクセルファイル名を取得
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
本当にありがとうございます!
ファイルがCドライブ上になかったみたいでした。新しくいただいたコードで動作できました。
丁寧で迅速な対応をしていただき本当にありがとうございます。
No.2
- 回答日時:
>処理が行われない状態となってしまいました。
コピー先に、コピーされないということでしょうか?
With Workbooks.Open(fileName) 'ファイルオープン
の行にブレイクポイントを設定し、実行したとき、そこで止まると思いますが、そのあと、1ステップずつ実行して、期待した動作をするか、確認してください。
また、ブレイクポイントで、止まった時、fileNameにマウスをあてると、ファイル名が表示されます。そのファイル名が、期待した結果であることを確認してください。
一点、気になるのは、マクロを格納したブックが、Cドライブであれば、問題ありませんが、Cドライブでない場合、
ChDir ThisWorkbook.Path
は、マクロを格納したフォルダに移動してくれません。
マクロを格納したブックは、Cドライブ上にありますか。
No.1
- 回答日時:
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy_
.Worksheets(wsName).Range("B1").Select
の2行を
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy _
Destination:=.Worksheets(wsName).Range("B1")
にしてください。
Copyの後に空白を1つ入れてから継続の_を入れます。
継続行を指定した場合、2行目は、Destination:=を指定しないとエラーになるようです。
1行で、
ThisWorkbook.Worksheets("粗さデータ処理シート").Range("B1:S110000").Copy .Worksheets(wsName).Range("B1")
と書いてもOKです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
不要項目の行削除方法について
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
-
4
エクセルのブック名の付け方
Excel(エクセル)
-
5
【マクロ】重複する同じ行を、削除でなく1番下の行に回し色を付ける為には
Excel(エクセル)
-
6
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
7
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
8
算術演算子「¥」の意味について
Visual Basic(VBA)
-
9
VBAについて教えて下さい
Visual Basic(VBA)
-
10
(EXCEL超初心者)EXCELの関数(またはマクロ)で質問です。
Visual Basic(VBA)
-
11
エクセルで、数字ではない値(文字列)が入った場合の計算式を教えてください。
Excel(エクセル)
-
12
VBAの「To」という語句について
Visual Basic(VBA)
-
13
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
14
Excelの罫線を消す方法
Excel(エクセル)
-
15
実務の処理について。
Excel(エクセル)
-
16
Excelのデータの入力規則の問題点について
Excel(エクセル)
-
17
【関数】データベースから2つの条件を満たす場合に「一致」と表示したい
Excel(エクセル)
-
18
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
19
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
-
20
vbaマクロについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
ワードの図形にマクロを登録で...
-
えくせるのVBAコードについて教...
-
エクエルのVBAコードについて教...
-
Excel VBA 選択範囲の罫線色の...
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでCOPYを繰り返すと、処理が...
-
vbaにてseleniumを使用したedge...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報
ご回答本当にありがとうございます。
ご指摘いただいたとおりに修正したところ、エラーは出ませんが処理が行われない状態となってしまいました。
度々申し訳ございませんが、このような場合はどのように対処すればよろしいでしょうか?
よろしくお願いいたします。