VB6でExcelファイルを開いてシートをコピーし、新規ファイルとして保存したいのですが方法がわかりません。
(既存のExcelシートを雛形として新しくBookを作りたいんです)
Set objexcel = CreateObject ("Excel.Application")
Set objexcel_new = CreateObject("Excel.Application")
objexcel.Workbooks.open (App.Path & "\book1.xls")
objexcel_new.Workbooks.Add '新規に作る
'シートのコピー
objexcel.sheets("Sheet1").Copy
objexcel_new.sheets("Sheet1").Select
objexcel_new.activesheet.Paste
としても、実行前のクリップボードの中身が貼り付けられるだけで、シートがコピーできません。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
一連の作業を記録マクロでやってみましたが。
。。'ここでコピー
Sheets("Sheet3").Select
Sheets.Add
'ここでペースト
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\xxxx\My Documents\Book1.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ポイントは Sheets.Add と ActiveWorkbook.SaveAs の気がしますが・・・
この回答への補足
ご回答ありがとうございます。
実行前のクリップボードの中身が書き出され保存されているので、保存方法は間違いないと思いますが...
(オブジェクトのClose時にsavechanges:=Trueで保存しています)
Sheets.Addを使ってみましたが、シートが1つ追加されただけで結果は同じでした。
No.6
- 回答日時:
こんにちは。
#3です。ちょっと、振り返って読んでみたけれども、
>>No.3さんの上のコードってSheetは1つしか作成されませんでした?
>
>いえ、目的が違ったので試していません。
私のコードのどこが違うのか、回答のお礼の文章からは読み取れませんが、ロジックも分っているなら、もうできるでしょう。でも、ご質問で書いたオートメーション・オブジェクトについてあやふやなレベルで、とうてい、他人のコードを読んで分るとは思えませんが。
>・処理の内容に応じ、「a」か「b」かどちらかのSheetをコピーし、新しく「abc_new.xls」として保存する
分岐をつければよいのでは?その方法ならいくつかあるでしょう?
>別のBookの特定のSheetを取り込む方法を知りたいだけなんです。
一体、何をしたいのか私にはよく分りません。
お礼遅くなり申し訳ありません。
No.5でのお礼の通り、ロジックはわかるんです。
単にシートのコピーと貼り付けの方法を知りたいだけなんですが...
それとここは質問者のレベルを責めたりするんではなく、質問の回答をする場ではないでしょうか。
ちょっと気になりました。
ありがとうございました。
No.5
- 回答日時:
>「abc_new.xls」には「a」か「b」かどちらかのSheetしか存在しない
No.3さんの上のコードってSheetは1つしか作成されませんでした?
もし3つできていたらSheets(Sheetでなくて)をループさせてSheet.Nameが"A"もしくは"B"以外であれば削除したらいいと思います。
>処理の内容に応じ、「a」か「b」かどちらかのSheetをコピーし、
単にSheetを選択する前に条件式を入れればいいだけじゃないでしょうか?
>No.3さんの上のコードってSheetは1つしか作成されませんでした?
いえ、目的が違ったので試していません。
>単にSheetを選択する前に条件式を入れればいいだけじゃないでしょうか?
そのことは問題ではないんです。
判定のロジックはわかっていてちゃんと組めています。
ただ、別のBookの特定のSheetを取り込む方法を知りたいだけなんです。
ありがとうございました。
No.3
- 回答日時:
こんばんは。
VB6 でするにしても、何か、とっても初歩的な話のようなのですが(^^;
以下は、SheetひとつだけのBookを作ります。
ただし、App.Path というのは、Excelとは関係がありませんので、使いませんでした。違うようでしたら、直してください。また、ブック名は、本来は変数で行ったほうがよいですね。
Private Sub Command1_Click()
Dim objExcel As Object
Dim myPath As String
Set objExcel = CreateObject("Excel.Application")
With objExcel
myPath = objExcel.DefaultFilePath &"\"
.Workbooks.Open (myPath & "book1.xls")
'シートのコピー
.Sheets("Sheet1").Copy
.ActiveWorkbook.SaveAs "cpybbook1.xls"
.Workbooks("book1.xls").Close False
.Quit
End With
Set objExcel = Nothing
End Sub
こちらはペースト方式でもよいのですが、その場合は、
なんて、小技を使わないといけないような気がしますね。
ちょっと順序がおかしいかな?
「 .ActiveWorkbook.Sheets(1).Select」
なお、これを入れないと、選択しっぱなしのままになります。
.Workbooks.Open (myPath & "\book1.xls")
'シートのコピー
.Sheets("Sheet1").Cells.Copy
.Workbooks.Add
.ActiveWorkbook.Sheets(1).Range("A1").PasteSpecial
.ActiveWorkbook.Sheets(1).Select
.ActiveWorkbook.SaveAs "cp2book1.xls"
.ActiveWorkbook.Close False
.Workbooks("test.xls").Close False
.Quit
End With
Set objExcel = Nothing
End Sub
この回答への補足
すみません、説明不足でした。
・「abc.xls」に「a」と「b」のSheetがある
・処理の内容に応じ、「a」か「b」かどちらかのSheetをコピーし、新しく「abc_new.xls」として保存する
・「abc_new.xls」には「a」か「b」かどちらかのSheetしか存在しない
こういったものを作りたいんです。
よろしくお願いします。
No.2
- 回答日時:
ごめんなさい。
勘違いしていました。そもそもSheetの他のBookへのコピーって可能なん
でしょうか?
Sheet丸ごとのコピーでなくて、中のセルだけの
コピーにすればOKでないのでしょうか?
Cells.Copyで全部選択して
ActiveSheet.Paste です。
この回答への補足
ご回答ありがとうございます。
>そもそもSheetの他のBookへのコピーって可能なん
>でしょうか?
以前やったことがあったような気がします。
セルのコピーだと列の幅などが反映されませんのでシートをごっそりコピーしたいんです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
バッチファイル XCOPYで上書き...
-
Vba初心者です。下記のコード助...
-
frxファイルの役目
-
vbsでExcelのシートをコピーす...
-
バッチファイルのコピーで
-
バッチファイル 別ファイルにリ...
-
エクセルのハイパーリンクがコ...
-
エクセル2010、図が大きすぎま...
-
開いている別のファイルにExcel...
-
[エクセル]コピーするとオブジ...
-
アクセス クエリを別のファイ...
-
ファイルサーバ上のファイルが...
-
xlDialogSendMailの件
-
Filecopyステートメントでエラー
-
Excel VBAで値コピーが使用でき...
-
FSO.CopyFileでのエラー無視方法
-
サブフォルダ(データ)にある...
-
エクセルVBAで開いているファイ...
-
サーバへファイルコピーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
現在のブックを閉じないで、マ...
-
エクセルのマクロについて教え...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
エクセルのハイパーリンクがコ...
-
エクセルVBAで開いているファイ...
-
ファイルサーバ上のファイルが...
-
エクセル2010、図が大きすぎま...
-
[エクセル]コピーするとオブジ...
-
バッチファイルのコピーで
-
アクセス クエリを別のファイ...
-
Vba初心者です。下記のコード助...
-
バッチファイル 別ファイルにリ...
-
同じファイル名 上書きしないフ...
-
Gitについて質問。 クローンし...
-
vbsでExcelのシートをコピーす...
-
マインクラフトPCをプレイしよ...
-
xcopyでのバッチコピー方法でコ...
-
ファイルをコピーできない
おすすめ情報