ここから本文です

教えてください。

ham********さん

2016/12/2721:46:52

教えてください。

VBAにて、同じEXCEL FILE上にsheetが複数あり、その中のsheet"A"とsheet"B"のみを別のworksheetにCOPY移動して名前付き保存することは可能でしょうか?その際の名前はsheet"X"上のセルA1にある文字列(例:abcdefg)を使用したいです。
保存されるEXCEL FILEはマクロを使用しないので、拡張子は.xlsx。保存場所はとりあえずデスクトップ上でお願いします。

閲覧数:
93
回答数:
4

違反報告

ベストアンサーに選ばれた回答

tn_********さん

2016/12/2811:42:55

とりあえず一例
あまりシート名にダブルクォーテーションは使わないほうが・・・。
とりあえずでデスクトップは勘弁で。
ユーザーネーム聞かなきゃ作れないのでそこは自分で直してください。

Sub sample()
Dim wb As Workbook
Dim i As Long
Dim wbname As String

Set wb = Workbooks.Add

With ThisWorkbook
.Worksheets("sheet""" & "B""").Copy before:=wb.Worksheets(1)
.Worksheets("sheet""" & "A""").Copy before:=wb.Worksheets(1)

Application.DisplayAlerts = False

For i = wb.Worksheets.Count To 3 Step -1
wb.Worksheets(i).Delete
Next i

Application.DisplayAlerts = True

wbname = .Worksheets("sheet""" & "A""").Cells(1.1).Value & ".xlsx"

End With

wb.Close savechanges:=True, Filename:=デスクトップパス & "¥" & wbName


End Sub

  • 質問者

    ham********さん

    2016/12/2822:15:21

    回答ありがとうぎざいます。

    For i = wb.Worksheets.Count To 3 Step -1

    の意図を教えて頂けませんでしょうか?
    (3の意味)

    新しく作った
    excel bookのデフォルトのworksheetを消すことは分かるのですが、3というのが分かりません・・

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tra********さん

2016/12/2812:40:30

>別のworksheetにCOPY移動して名前付き保存
↓のプログラムは、
「別のworkbookに移動して名前付き保存・クローズ」
する例です。

Sub sample()
Dim xPath As String
xPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
With ActiveWorkbook
xPath = xPath & .Worksheets("X").Range("A1").Value & ".xlsx"
.Worksheets(Array("A", "B")).Copy '★
End With
With ActiveWorkbook
.SaveAs xPath
.Close
End With
End Sub

「別のworkbookに移動」でなく、「別のworkbookにコピー」なら、★のところを
Worksheets(Array("A", "B")).Copy '★
に変更してください。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

amj********さん

2016/12/2812:27:35

サンプルです。
○○は環境に合わせて下さい。

Sub Sample()
Dim wb1 As Workbook, wb2 As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Add
wb1.Worksheets("A").Copy After:=Worksheets(Worksheets.Count)
wb1.Worksheets("B").Copy After:=Worksheets(Worksheets.Count)
With wb2
For i = Worksheets.Count To 1 Step -1
If .Worksheets(i).Name <> "A" And .Worksheets(i).Name <> "B" Then
.Worksheets(i).Delete
End If
Next i
End With
wb2.SaveAs Filename:="C:\Users\○○\Desktop\" & wb1.Worksheets("X").Range("A1").Value & ".xlsx"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

a_h********さん

2016/12/2800:42:24

コピーしたいSheetを選択して、シート名のタブを右クリック。
そうすると、「移動またはコピー」というのがあると思いますので、選択。
続いて、
「移動先ブック名」をコピーしたいブック名に変更。
(末尾へ移動)を選択すれば、コピー(移動)先のブックの右端にコピー(移動)されます。

最下部にある、「コピーを作成する」にチェックを入れると、コピーされます。
チェックを入れないと、選択したシートが指定した場所に移動します。


基本的なシートの操作ですよ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる