• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA ブック間の操作・保存について)

エクセルVBAでのブック間操作・保存について

このQ&Aのポイント
  • エクセルVBAを使用して、複数のブック間でセルの操作と保存を行いたいと思っています。
  • 具体的には、BOOK1とBOOK2のセルに入力された文字を取得し、BOOK2に保存するプログラムを作成したいです。
  • 現在、セルの操作はうまくできていますが、ファイル名の付け方と繰り返し処理について問題があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

No1です。 「BOOK1のそれぞれセルE10~29に文字入力後、マクロが起動するように」 という事は、BOOK1にマクロを設定していいのですか? BOOK1のSheet1のタブを右クリックしてコードの表示でコードペインを 表示しそこへ Private Sub Worksheet_Change(ByVal Target As Range)   Dim bk2 As Workbook   Dim r   As Range   Dim e   As Range   Const bk2Path As String = "C:\temp\BOOK2.xlsx"      If Target.Count > 1 Then Exit Sub   Set r = Intersect(Me.Range("C10:C29,E10:E29"), Target)   If r Is Nothing Then     Exit Sub   Else     Set e = Target.EntireRow.Cells(1, 1)     If e(1, 3) <> "" And e(1, 5) <> "" Then       Application.EnableEvents = False       Application.DisplayAlerts = False       Set bk2 = Workbooks.Open(bk2Path)       bk2.Worksheets("Sheet1").Range("C4").Value = e(1, 3)       bk2.Worksheets("Sheet1").Range("H4").Value = e(1, 5)       bk2.SaveAs _         bk2.Path & "\(秘)" & e(1, 3) & _         "+(" & e(1, 5) & ").xlsx", xlWorkbookDefault       bk2.Close       Set bk2 = Nothing       Application.DisplayAlerts = True       Application.EnableEvents = True     End If   End If End Sub

na714
質問者

お礼

解決しました。 迅速な対応でたいへん助かりました。 長々としたコードを考えていたのでさっぱりしました。 また機会がありましたらご教授お願い致します。 ありがとうございました。

その他の回答 (1)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんばんは C10~C29、E10~E29にはマクロ実行時に文字を入力するのですか? どこに保存するのですか? BOOK1、BOOK2は既存ですか? 取り敢えず都度作成して、入力する文字も設定し、"C:\temp\"に保存するとして、 Sub test()   Dim bk1 As Workbook   Dim bk2 As Workbook   Dim i   As Long   Dim c   As Variant   Dim e   As Variant      Const 保存先 As String = "C:\temp\"      Set bk1 = Workbooks.Add      With bk1.Worksheets("Sheet1")     For i = 10 To 29       c = Application.InputBox("C" & i & "に入力する文字")       e = Application.InputBox("E" & i & "に入力する文字")       If c <> False Then         .Range("C" & i).Value = c         .Range("E" & i).Value = e                  Set bk2 = Workbooks.Add         bk2.Worksheets("Sheet1").Range("C4").Value = c         bk2.Worksheets("Sheet1").Range("H4").Value = e         bk2.SaveAs 保存先 & "(秘)" & c & "+(" & c & ").xlsx", xlWorkbookNormal         bk2.Close         Set bk2 = Nothing       End If     Next   End With End Sub

na714
質問者

補足

早速のご回答ありがとうございます。 助かります。 説明不足ですみません。 BOOK1・2はそれぞれ既存のもので、BOOK1のそれぞれセルE10~29に 文字入力後、マクロが起動するようにしたいと思っています。 BOOK2は指定の項目が取得できたら自動で保存する形にしようと 思いますが、BOOK1は手動で保存します。 ご検討お願いいたします。

関連するQ&A