重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルマクロでの質問です。
Sub ブックまとめ()
Dim matome As WorkSheet,scorewb As WorkBook
Set matome = WorkSheets("シート")
Dim fileName As String
Dim mypath As S tring
mypath = "C:¥Users¥nisid¥Desktop¥2020¥活動¥
データ¥当日"
fileName = Dir(mypath&"¥*.xlsx")
IF fileName<>"" Then
Dim sh As WorkSheet
Dim lastRow As Long
Dim Rng As String
lastRow = matome.Cells(Rows.Count, 1)
.End(xlUP).Row
Application.ScreenUpdating = False
Do
Set scorewb = Workbook.Open(fileName:=mypath
&"¥"&fileName)
Set sh = scorewb.WorkSheets("Sheet1")
Rng = sh.Range("W1048564:AI1048564").Value
lastRow = matome.Cells(Rows.Count,1)
.End(xlUP).Row
Rng.Copy matome.Cells(lastRow+1,1)
scorewb.Close savechanges:=False
fileName = Dir()
Loop Until fileName =""
Application.ScreenUpdating = True
Else
MsgBox"データがない"
End If
End Sub

質問者からの補足コメント

  • 複数のブックのデータを1つのシートにまとめる
    コード内容を作ったのですが
    Rng.Copy...の所のRngが青表示で
    "修飾子が不正です"とでます。
    調べたところ
    String型変数にしているからエラーがでるみたい
    なのですがそこからどうしたら
    いいか分かりません
    何卒よろしくお願いいたします

      補足日時:2020/07/14 23:34

A 回答 (4件)

こんばんは、


値のみで良いのであれば、こんな感じではどうでしょう?

Dim Rng As String を Dim Rng As Variant

Rng = sh.Range("W1048564:AI1048564").Value を Rng = sh.Range("W1048564:AI1048564")

Rng.Copy matome.Cells(lastRow + 1, 1) を matome.Cells(lastRow + 1, 1).Resize(UBound(Rng, 1), UBound(Rng, 2)).Value = Rng

他の改行が変だったり、全角だったり、
半角スペースが無かったりは、対象として考えていません。
    • good
    • 0
この回答へのお礼

おかげでやりたい事が出来ました。
UBoundは初めて見たので時間を作って
空いた時間に意味を調べてみようと思います

お礼日時:2020/07/15 05:55

ここの質問をそのまま標準モジュールにコピーしたら


赤字のエラーがでますが、そこはアップ時のミスでしょうか?

> "修飾子が不正です"とでます。

これは 1行上の
.End(xlUp).Row
のところではありませんか?

実際のところ
lastRow = matome.Cells(Rows.Count,1).End(xlUP).Row
と一続きに書かなくてはいけないんですが。

アップしたものと実際のものが異なっているとエラー探しはできませんので、
Rng がエラーになるものを修正せずにそのままコピペしてください。
    • good
    • 0
この回答へのお礼

返信ありがとうございます
lastRow=のところは1続きになってます。
他の人に見にくくなると思い2行にさせて頂きました。

お礼日時:2020/07/15 01:20

値貼り付けがしたいということなら



Rng.Copy matome.Cells(lastRow+1,1)
 ↓
Rng.Copy
matome.Cells(lastRow+1,1).PasteSpecial xlPasteValues
    • good
    • 0
この回答へのお礼

PasteSpecialxlPasteVales
にしてみましたが変わりませんでした
(同じRng部分に修飾子が不正ですと出ました)

お礼日時:2020/07/15 00:17

Dim Rng As String


 ↓
Dim Rng As Range

Rng = sh.Range("W1048564:AI1048564").Value
 ↓
Set Rng = sh.Range("W1048564:AI1048564")

というところかな?
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
当初はRange型にして同じ内容にしていたのですが
セル内の数値を返すのでは無く
数式が返ってきたのです。
どうしてもセル内の値を抽出したいです

お礼日時:2020/07/14 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!