• 締切済み

excel VBA 新しいエクセルファイルの作り方

エクセルのVBAについて、 特定のエクセルファイル(Aとします。)の情報を 下記の場所にあるエクセルファイル原紙に "C:¥Users¥Desktop¥原紙.xlsx" 書き写して、同じ場所に 新しいエクセルファイルを作成したいです。 エクセルファイルAの C3の左から4文字を原紙のN12 C3の右から4文字を原紙のP12 D3を原紙のD12 E3を原紙のL12 F3には日付(例 2023/3/12)となっていて、 月だけを取り出して原紙のB12 日だけを取り出して原紙のC12 にしたいです。 尚、エクセルファイルAのデータは1行だけではないので、 上記を最終行までループしたいです。 ループ後に名前を付けて保存で "C:¥Users¥Desktop¥20230312.xlsx" のように、その日付名前で保存したいです。 また、日付毎にエクセルのファイルをわけたいのですが、 ここのやり方が全く思いつかず、困っています。 エクセルのファイルAの情報で F3から↓が 3/12 3/14 3/12 となっていた場合に3/12で一回ファイルを保存して、 3/14で新しく原紙ファイルを開いて、保存して 既に保存されている日付の場合は、そのエクセルファイルを 開いて("C:¥Users¥Desktop¥20230312.xlsx") 記入していくようにしたいです。 説明が難しく、複雑ですが どなたかご教授頂けないでしょうか。 初めからどのように書いたらいいか教えていただけると幸いです。 お手数をおかけしますが、回答よろしくお願いいたします。

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

回答№3で、〈VBAの出る幕はありません〉と記述しました 数量×単価=金額計算を式では 金額のセル番地に〈=数量のセル番地*単価のセル番地〉と記述します  番地:EXCELのsheetに     列方向にA列、B列、...............Z列、AA列、AB列、     行方向に1行目、2行目、....................     列、行の組み合わせでA1,A2を番地と呼ぶ 添付図はセルC3の状態です セルCに〈=A3*B3〉と入力したのに式の計算結果が表示されます。 そのためA3、B3の値が変化しても表示は計算結果でよい これをVBAに置き換わることは出来ません AccessでのVBAの標準書式はセルでなくフィールドと呼び Private Sub フィールド名_イベント名()で始まりEnd Sub迄で  セットです ------------------------------------ Private Sub 単価_Exit(Cancel As Integer) 金額 = 数量 * 単価 End Sub ----------------------------------- AccessでVBAでフィールド名のイベントで起動する以外に  SUM関数のように  レコード数または金額金額の増減により、  更新する関数もあります。 以下のサイトがAccess関数の一覧です。 https://support.microsoft.com/ja-jp/office/%E9%96%A2%E6%95%B0-%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E9%A0%86-b8b136c3-2716-4d39-94a2-658ce330ed83#

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

>エクセルのVBAについて、 ★あなたのやりたいことは関数(Left、Right,Month、Day)を含む数式で解決します。  VBAの出る幕はありません  また日付を月と日に分ける目的は何ですか?  期間なら、=終了日-開始日 で大/小の月、閏年も含んで計算します 以下に課題の式を記述します ---------------------------------------------------------- エクセルファイルAの C3の左から4文字を原紙のN12 =LEFT([A.xlsx]Sheet1!$C$3,4) C3の右から4文字を原紙のP12 =RIGHT([A.xlsx]Sheet1!$C$3,4) D3を原紙のD12 =[A.xlsx]Sheet1!$C$3 E3を原紙のL12 =[A.xlsx]Sheet1!$E$3 F3には日付(例 2023/3/12)となっていて、 月だけを取り出して原紙のB12 =MONTH([A.xlsx]Sheet1!$F$3) 日だけを取り出して原紙のC12 =MONTH([A.xlsx]Sheet1!$F$3)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

Option Explicit ' Sub Macro1() Const Path = "C:\Users\MA\Desktop\" Dim I As Worksheet Dim RInp As Long Dim Work As Variant ' Set I = ThisWorkbook.ActiveSheet Application.ScreenUpdating = False Workbooks.Open Path & "原紙.xlsx" ' For RInp = 3 To I.Cells(Rows.Count, "C").End(xlUp).Row Work = I.Cells(RInp, "C") [N12] = Left(Work, 4) [P12] = Right(Work, 4) [D12] = I.Cells(RInp, "D") Work = I.Cells(RInp, "E") [B12] = Month(Work) [C12] = Day(Work) ActiveWorkbook.SaveAs Path & Format(Work, "YYYYMMDD") Next RInp ActiveWorkbook.Close False End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

解答そのものではないが、参考に。 この質問の風に、全体を質問するのでなく、各小課題について (1)課題を切り分ける(抽出する)能力 エクセルで何が出来るか知ってないとならないので    エクセル手作業(含む関数)でもできることをある程度知っていないとならない。 (2)文章や(エクセルの)語句で表現してみる能力 を(早く)身につけること。本件ぐらいなら、皆持っていることで、意識だけのこと。 いわば、質問の内容の、(エクセル的)パターン化だ。 回答者としては、平凡なことを長々読まされるのは・・。 それができれば、WEB照会すれば、エクセルの「中の上レベルまでの課題なら」VBAを含めて、必ず記事が出るから、調べること。 ーー 例えば AセルからBセル  Cells(2,"A")=cells(5,"C") 両者別シートの場合は、付け加えが必要 先頭から(後尾から)4文字だけ Left,Right、Mid関数 日付けデータの「月」数字 Month関数 日付けデータの「日」数字 Day関数 名前を付けて保存(VBA) WEB照会する。 日付毎にエクセルのファイルをわけたいーー>意味不明 ファイル数が、多数になりすぎる? >既に保存されている日付の場合は 既にその(フォルダに)同名のファイルがあるか(VBA)のチェックのコード  ーー>WEB照会する >初めからどのように書いたらいいか教えていただけると幸いです。 丸投げだ。回答者を小間使い的に使うことだ。 一遍にVBAだけでやるのでなく、VBAは出来る範囲で、他は手作業も併存してやることを考えること。 徐々に勉強してVBA処理の範囲を増やしたら。 (A)シート内のセルデータに関すること  WEB照会やエクセルの書籍 (B)ブックの保存(後分)、読みだしに関すること (FSOなど勉強。WEB照会) (C)全体処理構想に関すること ーー>先輩の経験に学ぶ ここが大切で、我流ばかりだと    通用しない時期が来る。 ーー 各月のデータについて、テンプレート的なことを考えているようだが、この点の仕組みや、やり方をどうすべきか、を聞く方が先だろう。

関連するQ&A