
同じファイルにアクティブになるブックとデータ取得のためのブックが3つあります。
これをバックグラウンドで開き、範囲指定して転記したいのですが、出来ません。
Sub データ転記()
Dim sourceWB As Workbook
Dim sourceWS As Worksheet
Dim SourceRange As Range
Dim lastrow As Long
Dim folderPath As String
Dim sourceFilePath As String
'同じフォルダ内のパスを取得
folderPath = ThisWorkbook.Path
sourceFilePath = folderPath & "\ブック名.xlsx"
'コピー元のブックをバックグラウンドで開く
Set sourceWB = Application.Workbooks.Open(sourceFilePath, False, True)
'コピー元のシート指定
Set sourceWS = sourceWB.Sheets("シート名")
'コピー元のデータ取得
Set SourceRange = sourceWS.Range("A3:E30")
'アクティブシートに転記
SourceRange.Copy Destination:=ActiveSheet.Range("A3")
'ブックを閉じる
sourceWB.Close SaveChanges:=False
End Sub
宜しくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2です。
No1で理由も説明しておいたつもりですが、それを理解せずに、適当にコピペだけなさっていませんか?
ご提示の内容の処理であれば、以下のような感じでも実行可能と推測します。
(ただし、No1に記したバックグラウンドに関してはご提示のままです)
※ ブック名、シート名は正しい名称(=質問者様の環境にあった名称)にしてください
Sub データ転記()
Dim TargetRange As Range
Const bookName = "ブック名.xlsx" ' コピー元ブック名
Const sheetName = "シート名" ' コピー元シート名
Set TargetRange = ActiveSheet.Range("A3")
With Workbooks.Open(ThisWorkbook.Path & "\" & bookName)
.Worksheets(sheetName).Range("A3:E30").Copy TargetRange
.Close False
End With
End Sub
なお、ブックを開いた際に、他ブックの固定範囲の値を取り込めば良いだけであれば、VBAなどを用いなくても、当該ブックに「他ブックへの参照」を設定しておけば可能です。
あるいは、クエリなどを設定しておく方法でも可能と思います。
https://www.wanichan.com/pc/excel/2016/6/07.html
No.2
- 回答日時:
No1です。
>VBA初心者なので(バックグラウンドで開く)ところからつっかえております。
質問文に何も記載がなかったので、エラーは出ていないものと思いましたが、そういうことではないのでしょうか?
もしエラーが出ているのなら、それはどの行でどのような内容のエラーでしょうか?
エラーになりそうなのは
・指定したブックが存在しない
・ブック内に、指定したシートが存在しない
くらいかと思いますが・・・
なお、当方の環境では、No1の部分を修正すれば、問題なく実行できます。
Sub データ転記()
Dim sourceWB As Workbook
Dim sourceWS As Worksheet
Dim SourceRange As Range
Dim lastrow As Long
Dim folderPath As String
Dim sourceFilePath As String
'同じフォルダ内のパスを取得
folderPath = ThisWorkbook.Path
sourceFilePath = folderPath & "\ブック名.xlsx"
'コピー元のブックを開く
Set sourceWB = Workbooks.Open(sourceFilePath)
'コピー元のシート指定
Set sourceWS = sourceWB.Sheets("シート名")
’転記先ブック指定
Set SourceRange = sourceWS.Range("A3:E30")
'アクティブシートに転記
Set TargetRange = ActiveSheet.Range("A3:E30")
SourceRange.Copy Destination:=TargetRange
'ブックを閉じる
sourceWB.Close SaveChanges:=False
End Sub
このように変更してみましたが、エラーは出ないものの転記はされません。
No.1
- 回答日時:
こんにちは
単に「できません」としか書いてないので、どこが思惑と違うのか不明ですけれど・・
想像するところ、
>SourceRange.Copy Destination:=ActiveSheet.Range("A3")
で、Destinationで指定している、Activesheetが質問者様が意図しているものと異なっているのではないでしょうか?
ご提示の場合は、Activesheet は「後から開いたブックのその時に表示されているシート」を意味します。
多分、マクロを実行する際に表示されているシートを指定したいのではないかと想像しますので、最初に(=そのシートが表示されている時に)
Set TargetRange = ActiveSheet.Range("A3")
などとして変数に記録しておき、コピペの際にはそれを用いて
SourceRange.Copy Destination:=TargetRange
のように、コピー先を指定すれば良いのではないでしょうか?
※ 当方がご質問の意図を勘違いしている場合は、
お門違いの回答なのでスルーしてください。
なお、
>これをバックグラウンドで開き、範囲指定して転記したいのですが~
ご提示の状態だと「バックグラウンド」にはならないと思います。
特に、ブックを開くのには時間がかかるので、その間は操作ができなくなります。
多少、バックグラウンド風にするなら、
Application.ScreenUpdating = False
とでもしておけば、処理が見えなくなるのでバックグラウンド風になるとは思いますけれど、時間の問題は解決できません。
どうしてもバックグラウンドに近いものにしたければ、別スレッドでかつ別プログラム(=VBS等)から開く操作だけは行うようにするとか、あるいは、そちら側でコピペ迄処理するとかでしょうか。
回答ありがとうございます。
VBA初心者なので(バックグラウンドで開く)ところからつっかえております。
fujillinさんのおっしゃるようにしてみましたが、やはりデータが転記されません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
エクセルで別ブックをバックグラウンドでオープンする方法
Excel(エクセル)
-
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
-
4
Excelマクロをバックグラウンドで動かす方法
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
ExcelのVBマクロを、バックグラウンドで動かしたいのです。
Visual Basic(VBA)
-
9
参照元Excelファイルをバックグラウンドで開く方法
Excel(エクセル)
-
10
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
11
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
12
EXCELをバックグラウンドで実行するには
Excel(エクセル)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
15
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
16
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
17
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
18
Excelでマクロ実行中に画面を固定する方法
Visual Basic(VBA)
-
19
指定のWORKBOOKを前面表示する方法(エクセル:VBA)
Excel(エクセル)
-
20
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
Excelで複数ブックの同一セルに...
-
WorkBooksをオープンさせずにシ...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】ファイ...
-
エクセル2013で登録したマクロ...
-
エクセルで別ブックをバックグ...
-
Excelファイルをダブルクリック...
-
フォルダ内の複数ファイルから...
-
エクセルVBA 別ブックの複数シ...
-
Excelで指定範囲のデータ...
-
Excel起動時に特定のワークシー...
-
エクセル 複数のブックを一度...
-
外部ブック参照が#REF!になって...
-
エクセルの複数シートをCSV...
-
Excelの外部参照しているセルが...
-
行、列の挿入がリンク先に反映...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】ファイ...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
Excelで複数ブックの同一セルに...
-
Excelでブックの共有を掛けると...
-
フォルダ内の複数ファイルから...
-
Excel(2010)のフィルターが保...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
Excelの警告について
-
エクセルを開くと最大化などの...
-
エクセルにおける,「ブック」...
-
参照したいブックのパス名に"["
-
エクセルファイルをオープンし...
-
Excelで指定範囲のデータ...
おすすめ情報