• ベストアンサー

エクセル・マクロで請求と売上の連結

excel2003で、請求書作成ファイルで作成した請求内容を売上台帳ファイルに 転記するマクロを作りました。 請求書作成ファイルのマクロで売上台帳ファイルを開き、転記すことはできたのですが、 売上台帳は、4~3月の月分シートを作っていて、 例えば5月分の請求内容を5月分シートに転記するのですが、 前処理として、予め、売上台帳ファイルの5月分シートを開いて保存してないと、 5月分のシートに転記しません。 これを、請求書作成ファイルのマクロ上で、 簡単に売上台帳ファイルの該当の月分シートを開いて転記することは可能でしょうか。 ちなみに転記する内容は、日付、請求先、請求金額です。

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

  • ベストアンサー
noname#208392
noname#208392
回答No.2

>転記する内容のうちの日付を利用して、売上台帳のシートを開くことはできますか? できますよ。 まずは、質問とちょっと違いますが、「今月」の売上台帳を開く方法から説明します。 その場合は、 NameSheet = InputBox("Sheet name?") をこういう風にします。 NameSheet = Format(Date,"yyyymm") Dateというのは、VBAで現在の日付を返す関数で、Format()は、変数を特定のフォームの文字列として返す関数です。 上のようにすると、例えば今日この式を走らせると 「201204」という文字列を返します。 2012年04月と言う意味です。シートの名前をこういう風にすることにしておけば、このマクロを走らせると、自動的に「今月」のシートを開きます。 Format()については、VBAのヘルプや例えば↓のサイトで調べてみてください。これは使いでのある関数です。 http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/function/vba_string3.html 次に、 >転記する内容のうちの日付を利用して、 ですが、一言で言えば、上の例でDateとしたところを、その記入してある日付にするのです。 必ず日付がセルA1にあるのなら、Dateの代わりにRange("A1").Valueとします。そのセルの書式によってはもしかしたら、そのままでは正しい値を返さないかもしれません。でもたぶん、日付の書式でしょう? 日付が、決まった場所にない場合は、それを見てみないとなんともしようがないです。 例えば、その請求書作成ファイルのデータが一覧表の形式で、A列が日付だと言う場合は、 Cells(Activecell.Rows, 1).Value これで、今選択しているセルのある行のA列の値を返します。

takechan55
質問者

お礼

ありがとうございました。 Dim NameSheet As String NameSheet = Format(Range("A1).Value,"yyyymm") を、売上台帳をopenした後に記述したため、うまくいかず苦戦しましたが、 ”ひょん”なことから閃いて(出来る方は単なるケアレスミスでしょうが、(^_^;) ) openを後にしたら、バッチリ動きました。 マクロの初心者なので、思い切り感動しました。

その他の回答 (1)

noname#208392
noname#208392
回答No.1

ようするに >該当の月分シートを開いて ができればいいんですか? もし、それでよければ、売上台帳ファイルを開いた後に Worksheets("5月").Activate というのを一行追加すればいいです。 もし、何月というのを、任意に決めたければ Dim NameSheet as String ........ NameSheet = InputBox("Sheet name?") Worksheets(NameSheet).Activate というようにします。 シート名を入力し、入力したシート名のシートがなければエラーを出します。

takechan55
質問者

補足

早速のご回答、感謝しております。 うまく動きました。 インプットボックスにシート名を入力させる方法以外に、 転記する内容のうちの日付(請求書作成ファイルでは、 請求の発生した日、例えば5/5というに記入しています)を 利用して、売上台帳のシートを開くことはできますか? この場合、シート名は変更しても構いません。 「最初から、そのように言え!」と怒られそうですが、すみません!うまく言葉が文字にできなくて・・・!もったいぶった言い方になりました。

関連するQ&A

  • エクセル マクロ

    エクセルマクロで、複数ファイルにある全シートの情報を、別ファイルの1シートに転記したいのですが、なかなか上手く行きません。(ほぼ初心者です。) 詳細は↓です。どなたかご教授の程よろしくお願いいたします。 【やりたいこと】 同一フォルダ内にある約60個のファイルの、全てのシート内の情報を別の集計用ファイルに転記する。 (1) ファイル毎にばらばらなシート名&シート数で、これら全てのデータを集計用ファイルに転記するには?(シート数は1ファイルあたり1シートから最大13シート) (2) 以前に似たような作業をした時は、ファイル名をいちいち集計用ファイルにコピペして読み込ませたが、こうした手間を掛けずに一括処理するには? ※転記作業自体は「マクロの記憶」機能で書き出すので、それ以外の、特に始まりと終わりの部分を教えて下さい。 ※転記内容自体はあまり複雑ではなく、集計用ファイルに1シート1行として転記し、ズラッと下に120行書き込むつもりです。 説明が分かりづらい部分があればご指摘ください。よろしくお願いいたします。

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • エクセルで請求書作成し、売上も管理したい

    今、エクセルで請求書を作成しています。この請求書から、日付、売上金額、売上内容などをもう1度入力して一覧にした売上表を作っていますが、これを請求書からの日付等のデータを利用して、再入力をしないで売上表ができないでしょうか教えてください。

  • エクセルVBAで売上帳作成

    エクセルVBAで売上帳を作成しているのですが、毎日の売上・入金を記載しているシートから、顧客別に売上シートを作りたいのです。 作成しているシートは    A    B     C    D   E   F    G      H 1 日付 顧客NO. 顧客名 品名 数量 単価 売上金額 入金金額 2 3 というように作っていて、これを元に顧客NO.を指定すると、該当する行のみを抜き出して、別のシートに転記されるというようにしたいのです。 どのような命令文を作ればよいのでしょうか?

  • excelで売上日報を作りたい

    飲食店です。excelでSheet1に1日の売上や仕入を入力し、Sheet2に月の売上や仕入の一覧が出るようにしたいと思ってます。加えて、Sheet1は毎日上書きしても、それがちゃんとSheet2に反映されるようにしたいです。 Sheet1のA1に日付→Sheet2のA1に反映。Sheet1のB2に仕入合計→Sheet2のB2に反映。ここで保存。 翌日、Sheet1のA1に日付を入力したら、Sheet2のA2に自動入力、Sheet1のB2に仕入合計→Sheet2のB3に自動入力。上書き保存。 というようなことです。 Sheetを31日分作るということではなく、Sheet1とSheet2のみで作成したいと思ってます。 関数のみでの作成が不可能でしたら、マクロを使っての作成でも構いません。 説明が下手で申し訳ありませんが、宜しくお願い致します。

  • Excelで、既に作成してある月別Sheetを呼び出すマクロを作りたい

    Excelで、既に作成してある月別Sheetを呼び出すマクロを作りたいのですが教えて下さい。 2ヶ月に1回のゴルフ会の成績表を作成するのに、 1月成績、1月転記、3月成績、3月転記というように12のSheetが作ってあります。 当該月分の入力準備表を(Sheet 7月成績)に2ヶ月前の(Sheet 5月転記)のSheetを丸ごとマクロでコピーをしたいのです。  この7月と入力したら、(7月成績)のSheetを呼び出し、コピー元のSheet(5月転記)をマクロに記入出来るように設定したいのです。 例えば、   1(月)と入力したら、    11月転記Sheetから自動コピーの指定        3(月)と入力したら、     1月転記Sheetから自動コピーの指定        7(月)と入力したら、     5月転記Sheetから自動コピーの指定     年間6回の作業となります。 初心者の私が、自動記録でマクロを記入したところ、下記のようになり、同じ作業をするのに各月ごとのマクロ6本を作る必要があり、不便なので何とか1つのマクロで処理が出来ればと思い、その方法を教えて頂ければ幸いです。    Sub Macro1() ' 入力準備表作成 ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a ' Sheets("5月転記").Select  ← 7月と入力した場合、自動的に5月転記となるように  Cells.Select Selection.Copy Sheets("7月成績").Select Cells.Select ActiveSheet.Paste Range("E5:F5").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False   ・・・・・・

  • EXCELのシート間でのマクロ計算

    毎日の日報をEXCELのワークシートで作成しております。日報は、その「日」の売上とその「月」の売上(累計)を出すようにしております。月の売上(累計)は、前日の売上のシート(前日分)+本日の売上のシート(本日分)で表しております。日報は、項目がたくさんあるので、月売上を出す場合、シート間での毎日の計算作業が面倒です。ですから、この計算作業をマクロで出来ればと思っております。1つのシートでマクロを使用することは解るのですが、シート間でマクロを利用するやり方がわかりません。 なにとぞ、よろしくお願いいたします。

  • エクセルのマクロ

    同一フォルダの中に、あるアンケートに対する回答の"Book01"~"BookXXX"のエクセルファイルと、その回答を一覧に並べるための"集計用ファイル"がります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"のA1からZ1に入力されている数値を"集計用ファイル"のA~Zまでに1行目から下へ下へと転記したいと考えています。 ■質問 上記のケースで、フォルダ内の名前の異なるファイルすべてを対象に転記の作業を行う場合、どのようにマクロを作成すれば良いのかご指導頂くか、簡潔に説明しているサイト等ありましたら教えて頂けませんでしょうか。 ■補足 技量不足でフォルダ内にある名前の異なるファイル全てをを対象に転記を行うマクロを組むことができません。(フォルダ内のファイル名が特定できていれば独力でマクロを記録することはできます。) 過去の質問や、書籍も調べたのですが方法がわからなかったので投稿させて頂きました。よろしくお願いいたします。

  • エクセルで売り上げ表を作成したいのですが…

    エクセル98を使用しています。 月毎の売り上げ表を作成したいと思っています。 あるシート(以降、Aシート)にその月の売り上げ表を作成して、別のシート(以降、Bシート)に月毎の売り上げの履歴を残す事ができたら良いと思っています。 あらかじめ締め日を決めておき、その締め日が過ぎるとAシートの売り上げ表に記載されていた数字はクリアされると同時に、Bシートに売り上げの履歴を残すようにしたいです。 毎月設定しておいた日付けが過ぎると、シートに入力されていた数字を自動にクリアさせる方法はあるのでしょうか? また同じく、毎月設定しておいた日付けが過ぎると、その月毎の売り上げを別のシートに残すような作業はできますのでしょうか? 時間に合わせて、処理を行うといった感じになります。 時間に合わせて、入力されたデータをクリアにする。また別のシートに記録を残す良い方法がありましたら、アドバイスをお願い致します。

  • Excel で売上帳を作成したい

    Excel2002 で売上帳を作成する事になりました。 Sheet1 に年間の売上を入力し、Sheet2 以降に、月毎の売上をまとめたり、他のブックに客先ごとのシートを作成したいのですが、関数VLOOKUP くらいしか思い浮かばず・・・。他に簡単な方法がありましたら、ご指導お願いいたします。

専門家に質問してみよう