質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1774閲覧

excelのVBAでファイル指定したexcelを指定場所にコピーする方法を知りたい。

ma2hiro

総合スコア159

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/08/25 08:09

編集2021/08/25 08:35

お世話になっております。

件名の通りなのですが
excelのVBAでファイル指定したexcelを指定場所にコピーする方法を知りたい
と思ったおります……

グーグルさんで調査した所
[【VBA入門】ファイル読み込み方法はこの2つを知っていれば十分 | 理系夫婦の方程式] (https://rikei-fufu.com/2019/05/09/post-1025-vba3/)
が見つかったのでそちらを参考に

Sub OpenExceladdsheet() Dim FileName As String Dim ret As Variant Dim mainSheet As Worksheet Dim csvSheet As Worksheet Dim csvBook As Workbook Set mainSheet = ActiveSheet 'ファイル選択ダイアログを表示 ret = Application.GetOpenFilename("Excelファイル(.xlsx),.xlsx") 'キャンセルされた場合 If ret = False Then MsgBox "キャンセルされました" Exit Sub End If FileName = CStr(ret) 'CSVファイルをOpen Workbooks.Open FileName Set csvBook = ActiveWorkbook Set csvSheet = ActiveSheet 'CSVをシートごとコピー csvSheet.Copy After:=mainSheet 'CSVを閉じる csvBook.Close Set csvBook = Nothing Set csvSheet = Nothing Set mainSheet = Nothing End Sub

と実装したのですが
そちらでは動作させたexcelにsheet1(2)とシート追加でそのままコピーされてしまいました……

そうではなく
VBAを動作させたexcelの【sheet1】の例えばE1から
コピーされたシートを貼り付けたいのです……
そのような実装方法を知るためにはどのような語句でググれば良いのか
ご助力頂け無いでしょうか?

本当に基本的な事を伺って申し訳無いのですが
何か情報をお持ちな方はコメント頂けますと嬉しく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mdj

2021/08/25 08:13

すいません、「動作させたexcelのE1からコピーされたシートを貼り付けたい」がどのようなことを指しているのか理解できていません。私の理解力の問題かもしれないのですが、言い換えてみてもらえますか?
ma2hiro

2021/08/25 08:24

mdj様 説明不足失礼しました。ちょっと文言変えたのですがどうでしょうか? ご助力頂けますと嬉しく思います。
mdj

2021/08/25 08:33

編集ありがとうございます。「E1に」であればひとまず理解できました。 あとはGetOpenFilenameしたExcelファイルの「A1:XEZ1048576」までを「E1:XFD1048576」になんでしょうか。もしくはシート内容をそのままコピペ(「E1:Z1000」を「E1:Z1000」にコピペ)なのでしょうか。もしくは「E1のみ」を「E1」にコピーなのでしょうか。 これ以降の私の確認は後日になってしまいますのでご了承ください。他の方が確認してくれるかもしれませんので、ご記入いただければ幸いです。
ma2hiro

2021/08/25 08:38

度々ありがとうございますっ GetOpenFilenameしたExcelファイルの「A1:XEZ1048576」までを 「E1:XFD1048576」に貼り付けたいのです…… 本文も s/E1に/E1から/ と修正しました。
guest

回答1

0

ベストアンサー

こんな感じでどうでしょうか。

VBA

1 'CSVファイルをOpen 2 Set csvBook = Workbooks.Open(FileName) 3 Set csvSheet = csvBook.Worksheets(1) 4 5 'CSVのセル範囲をメインシートにコピー 6 csvSheet.UsedRange.Copy mainSheet.Range("E1") 7 8 'CSVを閉じる 9 csvBook.Close False

投稿2021/08/25 08:51

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/08/26 01:03

ありがとうございますっ ``` Sub OpenCSVasExcelBook2() Dim FileName As String Dim ret As Variant Dim mainSheet As Worksheet Dim csvSheet As Worksheet Dim csvBook As Workbook Set mainSheet = ActiveSheet 'ファイル選択ダイアログを表示 ret = Application.GetOpenFilename("Excelファイル(.xlsx),.xlsx") 'キャンセルされた場合 If ret = False Then MsgBox "キャンセルされました" Exit Sub End If FileName = CStr(ret) '-------- 'CSVファイルをOpen Set csvBook = Workbooks.Open(FileName) Set csvSheet = csvBook.Worksheets(1) 'CSVのセル範囲をメインシートにコピー csvSheet.UsedRange.Copy mainSheet.Range("E1") 'CSVを閉じる csvBook.Close False '-------- Set csvBook = Nothing Set csvSheet = Nothing Set mainSheet = Nothing End Sub ``` 上記のようにして出来ましたっ jinoji様には本当に感謝ですっ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問