エクセルVBAで下記の動作をする事は可能でしょうか? 何度かネットから似たようなものを拾ってやりましたがどれもうまくいきませんでした。

エクセルVBAで下記の動作をする事は可能でしょうか? 何度かネットから似たようなものを拾ってやりましたがどれもうまくいきませんでした。 同じフォルダにあるbook(道具在庫)の各セル(H列)を別のbook(道具発注はこちら)のそれぞれの指定したセル(D列とG列)にコピーして保存をしたい。 また、道具在庫bookの保存を押したら上記の動作が実行されるという事はできますでしょうか? 発注書自体も保存をしたいので道具発注はこちらのbookを自動的に同じフォルダ内のフォルダに保存したいです。 今は関数で転記させていますが、どうしても関数のセルの上から数字を入力したりしてしまう人がいるのでVBAを使いたいです。 わかる方がいましたら教えて下さい。お願いいたします。 資料は画像にありますのでよろしくお願いします。 ↓ https://pbs.twimg.com/media/EiJpUNGVgAAo3AO?format=jpg&name=large

Excel | Visual Basic61閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

2

道具発注 の方ですが、品名がちゃんと順番ではないのですね? 画像の通りとしてのコードです。 >道具在庫bookの保存を押したら 保存ボタンを作成して、そのボタンに登録するコードです。 もし保存アイコン押下で自動で行いたいのであれば Private Sub Workbook_BeforeSave( にこの内容を書くことになります。 Sub test() Dim fpath As String Dim wb As Workbook Dim sh As Worksheet Dim scnt As Integer Dim tb1 As Variant Dim tb2 As Variant Dim i As Integer tb1 = Array(4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) tb2 = Array(10, 14, 16, 18, 22, 24, 26, 28, 32, 34, 36) Application.ScreenUpdating = False Application.DisplayAlerts = False fpath = ThisWorkbook.Path & "\" Set wb = Workbooks.Open(fpath & "道具発注.xlsx") Set sh = wb.Worksheets("Sheet1") sh.Range("E2") = Date For scnt = 1 To 2 With ThisWorkbook.Worksheets(scnt) For i = 0 To 10 sh.Cells(tb2(i), scnt * 3 + 1) = .Cells(tb1(i), 8) Next i End With Next scnt wb.Close SaveChanges:=True, Filename:=fpath & Format(Date, "m月d日") & ".xlsx" Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "道具発注の保存終了" End Sub

2人がナイス!しています

回答ありがとうございます。 = Workbooks.Open(fpath &"道具発注.xlsx") wb.Close SaveChanges:=True, Filename:=fpath &Format(Date, "m月d日") &".xlsx"Application.DisplayAlerts = True MsgBox "道具発注の保存終了"End Sub これらが赤くなってしまいエラーになっています。 コンパイルエラー: 構文エラー とでます。

その他の回答(1件)