- ベストアンサー
VBAでExcelデータを転記し印刷する方法
- Excel2010で配達日付別の商品・数量・取引先が記載された表をVBAで転記保存し、配達前日に該当表を検索して印刷したい方法について教えてください。
- 日々30件前後の配達予定をExcelで作成し、自動転記保存や前日に検索して印刷する方法がわかりません。VBAを使用して自動化することは可能でしょうか?
- データを顧客毎または日付毎に残して、前日に修正があれば印刷する方法をVBAで実現したいです。初心者ですので、ご教授願います。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>前日に日付検索し を見誤っていました。 実行日の翌日を検索するんでしょうから '前日を初期表示して検索日を求める wsStr = InputBox( _ Prompt:="検索日を入力してください。", _ Default:=Format(Date - 1, "yyyy/m/d")) ChkDate = CDate(wsStr) を '翌日を初期表示して検索日を求める wsStr = InputBox( _ Prompt:="検索日を入力してください。", _ Default:=Format(Date + 1, "yyyy/m/d")) '<==ここ ChkDate = CDate(wsStr) に変更してください。
その他の回答 (4)
- HohoPapa
- ベストアンサー率65% (455/693)
>配達日付別に、商品・数量・取引先等を作成した表 これがシート単位に格納されている。 つまり、 >日々30件前後の配達予定 30枚前後のシートが追加や修正されている。 かつ、 そのレイアウトは提示されたものだ。 ということであれば、 次のようなコードを実行することで 指定した配達日のシートたちを(複数)選択することができます。 よかったら参考にしてみてください。 Option Explicit Sub Sample() Dim ChkDate As Date Dim wsStr As String Dim Sh As Worksheet Dim ArrayShName() As String Dim i As Long '前日を初期表示して検索日を求める wsStr = InputBox( _ Prompt:="検索日を入力してください。", _ Default:=Format(Date - 1, "yyyy/m/d")) ChkDate = CDate(wsStr) '配列を初期化 ReDim ArrayShName(0) 'ヒットしたシートを(複数)選択 For Each Sh In ThisWorkbook.Worksheets If Sh.Range("B3").Value = ChkDate Then ReDim Preserve ArrayShName(i) ArrayShName(i) = Sh.Name i = i + 1 End If Next Sh '指定した名前のシートがあるか確認 If ArrayShName(0) = "" Then MsgBox "該当シートがありません" Exit Sub End If Worksheets(ArrayShName).Select End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
(1)データベース がまず作ってあり (2)質問のフォーマットの書式の帳票シートがあり(1シートの一部分を 、そのつど全取引先で、中身を変えて使いまわすのがよいと思う。) ーー (1)より1社分のデータを取ってきて、 (これをするとき、アクセス(MsAccess)などのほうが、しやすい。) (2)に項目データを配置し (3)印刷する(VBAで自動印刷。そして(2)の項目をクリア)。 これを、全と請求先分を順次繰り返す。 ーー このうち(1)のデータのサンプルが、質問に書いてないのは、質問として不都合だろう。難しさを左右するのは(1)の方なんだ。 そういう点から推定して、まだ経験が不足だろう。 仕事のこういう課題に手を付けられるのは、会社に、VBAなどの経験者の先輩がいて、適宜教えてもらえることが必要と思う。 それか数年かけてVBAなどの勉強をするかだ。 本当は業者に頼むことだ。甘く見て首を突っ込むのは、良くない。 質問者の本職(担当)は、請求事務か?完成したら上司や社長に評価してもらえるか?横目で、頭だけで、出来そうだということで、乗り出すのなら、やめた方がよい。 本件で、丸投げしても、今後の修正や、システムの発展に応じられない、だろうから、無理をしない方がよい。
補足
仰る通りですね。 自分で取引先のデータベースを先日作り、帳票(1)は予めフィルターで商品を選択し、vbaでワンクリック印刷及び別シートに集計保存を出来るようにしていましたが、集計を簡素化するため商品を行方向に並べてました。 ここが間違いの元だとは思っていますので、帳票と同じく列方向に縦並びにして保存しようと思っています。 そこで保存したものを、前日に印刷する場合に、日にち検索で簡単に一括印刷する手立てはないものかと色々検索してみたのですが、どうにも判らないのです。 褒められるとかそういう物ではなく、皆が楽に少しでも早く出来ればと質問させていただいたのですが、どちらかの業者の方を探して相談してみます。 ありがとうございました
- kkkkkm
- ベストアンサー率66% (1725/2595)
VBAで検索するにしても検索指定日付を入力して検索するわけですし、元の表でエクセルの検索機能(Ctrl+F)を使えばいいだけだと思いますが…。
- oboroxx
- ベストアンサー率40% (317/792)
なぜVBAでやろうとするのかがわかりません。 シートのフォーマットが決まっているのであれば、テンプレートを作って置き、必要な時にダブルクリックでコピーされた新規ブックに書き込み、配達日の日付をファイル名に含めて保存しておいて、差し替えがあるときに再度開いて書き換えればいいだけだと思うのですが。 終わったものは、過去のフォルダーでも作ってそこに入れて置けば何かの時に確認が取れるかなと思います。
お礼
色々とありがとうございます。 参考にさせていただきます。 ご丁寧にありがとうございました。