私が質問と同じ線に沿っていることを通して私が調べた多くの投稿にもかかわらず、答えのどれも私が探しているものを満足させません。あなたが私を1つにリンクすることができれば、私はそれを喜んで読みます。
ワークシート付きのワークブックがあります。簡単にするために、私のワークブックにワークシートがあるとしましょう。そして、「Sheet1」と呼ばれる私のワークシートでは、セルA1からA4にデータがあります。
VBAコードに実行させたいのは次のとおりです。
- ワークブック「A」の行1(または具体的にはセルA1からA4)を範囲変数「myRange」にコピーします
- 新しいワークブックを作成します。これをワークブック「B」と呼びましょう。
- Workbook'Bのデフォルトの「sheet1」に「TestName」に新しい名前を付けます
- ワークブック「B」を開きます(ただし、VBAコード「Workbooks.Add」は新しいブックを開くため、Workbooks.Addはポイント2と3の半分をカバーしているため、この手順は冗長になる可能性があります)
- 'myRange'を'WorkbookB'の最初の行に貼り付けます
- 「ワークブックB」を「テストブック」という名前と角かっこで囲まれたタイムスタンプで保存します。ファイルの拡張子も「xls」である必要があります
- 「ワークブックB」を閉じて「ワークブックA」に戻ります
私がこれまでに持っているのはこれです:
Sub OpenAndSaveNewBook()
'Declarations
Dim MyBook As String
Dim MyRange As Range
Dim newBook As Workbook
'Get name of current wb
MyBook = ThisWorkbook.Name
Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")
'Create/Open new wb
newBook = Workbooks.Add
'Save new wb with XLS extension
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
FileFormat:=xlNormal, CreateBackup:=False
'===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
'===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
'===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'?
ActiveWorkbook.Close savechanges:=True
'Return focus to workbook 'a'
MyBook.Activate
End Sub
ご覧のとおり、以下を処理するコードが不足しています。
- コピーしたデータを新しいブックに貼り付ける
- 新しいブックのsheet1名を別の名前に変更する
- 保存時にファイル名文字列にタイムスタンプを追加する
最後に、ActiveWorkbookメソッドについて誤解している可能性があるため、コードに質問を含めました。コード「Workbooks.Add」を実行すると、これがアクティブなワークブック、つまりフォーカスのあるワークブックになります。これは、ワークブック'A'で実行されているVBAコードに影響しますか?これは、ワークブック'A'のセルを操作するコードを追加する場合、'MyBook'がワークブック'Aの実際のタイトルの文字列を保持する"MyBook.Activate"を使用する必要があることを意味しますか?
どんな助けでも大歓迎です。
ありがとう、QF