[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別のBOOKのsheet1とを、別のBOOK(テンプレxltx)のsheet2にコピーしたい。』(じゅん)
BookA TEST.xltx sheet1
BookB main.xlsx Testsheet1
BookBのTestsheet1を、bookAのsheet2に丸々コピーをしたいのですが、
bookB.Copy After:=Workbooks("D:\TEST.xltx").Sheets(2)
ではエラーになるのですが、何が間違っていますでしょうか??
< 使用 Excel:Excel2013、使用 OS:Windows7 >
★TEST.xlsx
→Sheet2を作成して、TEST.xlsxを開いて状態にしておく。
★もう1つのエクセルファイル(拡張子:.xlsまたは.xlsm)
→Sheet1を作成して、次のコードをModule1にコピペして、プログラム実行。
Sub test() Dim shA As Worksheet, shB As Worksheet Set shA = Workbooks("TEST.xlsx").Sheets("Sheet2") Set shB = ThisWorkbook.Sheets("Sheet1")
shA.Cells.Clear shB.Cells.Copy shA.Range("A1") End Sub (マリオ) 2016/03/04(金) 11:24
(じゅん) 2016/03/04(金) 11:59
マクロ実行ブックのActivesheetだけをコピーして、マクロ実行ブックと同じフォルダ内に新規ブックを作成するマクロです。
Sub test2() Dim shB As Worksheet Dim x As String, y As String, z As Variant Set shB = ThisWorkbook.ActiveSheet x = ThisWorkbook.Name y = Left(x, InStrRev(x, ".") - 1) & _ "_copy (シート名:" & ActiveSheet.Name & ").xlsx"
z = ThisWorkbook.Path & "\" & y
shB.Copy ActiveWorkbook.SaveAs Filename:=z Workbooks(y).Close SaveChanges:=True End Sub (マリオ) 2016/03/04(金) 12:27
BOOK1 起動時にsheet3まで出来るようにしています。
BOOK2 sheet1のみ
BOOK3 sheet1のみ
BOOK2のsheet1
BOOK3のsheet1
を、BOOK1のsheet2/sheet3へコピーしたいのです。
BOOKの2.3は閉じている状態で、BOOK1でマクロを実行させて、BOOK2、BOOK3の各々のシートをコピーしたい。
そのため、
Sub books_open()
Dim bookA As Worksheet, bookB As Worksheet, bookC As Worksheet
'指定ブックを開く
Set bookA = Workbooks.Open("D:\TEST.xltx").ActiveSheet
Set bookB = Workbooks.Open("D:\deta1.xlsx").ActiveSheet
Set bookC = Workbooks.Open("D:\deta2.csv").ActiveSheet
を用いてブックを開かせました。
この状態からのシートのコピーの記述は、どのようになりますでしょうか。。
よろしくお願いいたします。
(じゅん) 2016/03/04(金) 12:29
ですが、BookC(deta2.csv)はcsvファイルですね。
deta2.csvのシート「data2」をTEST.xltxの「Sheet3」にコピペすると、表示形式で問題が生じます。
次の文字列をテキストにコピペして、data2.txtの名前で一度保存してください。 ***************************** 1月5日,25,1-5,025 *****************************
data2.txtの拡張子をcsvに変えた後、data2.csvを開いてみてください。 ***************************** |[A] |[B]|[C] |[D] [1]|1月5日| 25|1月5日| 25 ***************************** と表示されますね。
csvの取込は、■QueryTables.Add(Connection:="TEXT;■を使用して、列ごと、 表示形式を標準にするのか、文字列にするのかを指定するのが一般的なやり方かと思います。
★deta2.csvは、どういった内容になっているのかを教えてください!★ deta2.csvで、表示形式を文字列で読み込むべき列と標準で読み込みべき列を特定するためです。 列は可変でしょうか?すべて文字列として取り込んでもいいですか?
次のmomoさんのプログラムを使うと、簡単です。 https://www.excel.studio-kazu.jp/kw/20110209184943.html [[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo)
(マリオ) 2016/03/04(金) 14:13
BookB(deta1.xlsx)の「Sheet1」をBookA(マクロ実行ブック)の「Sheet2」にコピーするマクロです。 test3とtest4の違いが分かりますか? test3では、全てのセル内容をコピペしてます。 test4ではシート自体をコピーしてます。 処理速度としては、test4の方が速いです。
Sub test3() Dim shA2 As Worksheet Dim bookB As Workbook Dim shB As Worksheet
Set shA2 = ThisWorkbook.Sheets("Sheet2") Set bookB = Workbooks.Open("D:\data1.xlsx") 'Set bookB = Workbooks.Open(ThisWorkbook.Path & "\data1.xlsx") Set shB = bookB.Worksheets("Sheet1") shA2.Cells.Clear shB.Cells.Copy Destination:=shA2.Range("A1") '全てのセル内容をコピペ bookB.Close End Sub
Sub test4() Dim Sh As Worksheet Dim bookB As Workbook Dim shB As Worksheet
Set bookB = Workbooks.Open("D:\data1.xlsx") 'Set bookB = Workbooks.Open(ThisWorkbook.Path & "\data1.xlsx") Set shB = bookB.Worksheets("Sheet1") shB.Copy after:=ThisWorkbook.Worksheets(Worksheets.Count) 'シート自体をコピー '既にSheet1がある場合は、Sheet1(2)の名前のシートが追加される。
For Each Sh In ThisWorkbook.Worksheets If Sh.Name = "Sheet2" Then Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = True End If Next ActiveSheet.Name = "Sheet2" '追加されたシートの名前をSheet2にする。 bookB.Close End Sub (マリオ) 2016/03/04(金) 16:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.