[[20181027224445]] 『新規作成されたファイルの特定のセルを表記』(同期) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『新規作成されたファイルの特定のセルを表記』(同期)

book1(個人所有)というファイルがあります。 book1027(数字は日付で会社所有)というように毎日日付の名前があるファイルが新規作成され、そちらにはB2からB10まで入力される毎日の機械のメンテナンス内容が入り、毎日内容が変わります。
book1のA1と仮に今日出来たbook1027のA1の日付が同じ日付が入ったとしたら、B2からB10をbook1を開いた時、毎回の手入力を省く為、book1027の内容をbook1のB2からB10に自動で表記する事は可能でしょうか?
どなたかご教授お願いいたします。よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


 こんな感じに参照させばいいと思うけど???

 対象ブックが開いている場合
 =[zzzzzz.xls]Sheet1!$B2

 対象ブックが閉じてる場合
 ='C:\Users\user\Desktop\[zzzzzz.xls]Sheet1'!$B2

 参照させた後にコピーして値だけ張り付ければ簡単じゃん。
(BJ) 2018/10/27(土) 23:34

 回答ありがとうございます。知識がない為、質問させてください。
='C:\Users\user\Desktopは保存先かと思うのですが、コピーして値だけ貼り付けるとはどういう意味なのでしょうか?

また、毎回変わる日付をどう参照するのかわかりません。無知な質問申し訳ありませんがよろしくお願いします。
(同期) 2018/10/28(日) 07:35


 >コピーして値だけ貼り付けるとはどういう意味なのでしょうか?

 数式の入ったセルをコピーして、同じところに値だけ張り付けで手入力したのと同じ結果になります。

 >毎回変わる日付をどう参照するのかわかりません

 それは知りません、自分で判断してください。
 手入力が面倒くさいらしいので。
https://tech.nikkeibp.co.jp/it/pc/article/NPC/20060216/229597/
[[20090612130739]]『数式を実数へ変換』(ぶん)
https://support.office.com/ja-jp/article/%E6%95%B0%E5%BC%8F%E3%82%92%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C%E3%81%A7%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B-38001951-c0e8-4fbd-9048-37ef81e2891e
(BJ) 2018/10/28(日) 09:13

 >毎回の手入力を省く為、

 毎回の話ですから、最低2回分の説明をしてください。
 (2回目は全く同じ処理じゃなく、book1に累積させるんですよね?)

  bookXXXは開いている状態での話なんですか?
  それとも、bookXXXは閉じままなんですか?
 (閉じてるならどこに(フォルダ?)にあるんですか?)

(半平太) 2018/10/28(日) 10:40


BJさん わかりました。

半平太さん
すみません。2回目以降は、book1028というようにbook○○○○で○は日付が入りファイルができますのでそこからB2からB10の内容を貼り付けたいのですが、前日の表記したものの内容を上書きしたいです。またbook○○○○は閉じているのですが、1日経てばbook1の内容は新しい日の内容を表記させたいです。
また今自宅にいるので保存先が会社の複数台のネットワークにて共有されたパソコン内にありますのでわかりません。
すみません。

(同期) 2018/10/28(日) 12:12


 >前日の表記したものの内容を上書きしたいです。
 意外にも上書きだったんですねぇ。

 >2回目以降は、book1028というようにbook○○○○で○は日付が入りファイルができます
 ○○は厳密に言うと、日付じゃないので、もう少し情報が必要です。

 1028は10月28日のことだと分かりますけども・・、

 1.1月28日だと、どうなるんですか?
  (1)book128 ? ※「12月8日」と区別がつかないので、下の(2)だとは思いますけど・・
  (2)book0128 ? 

 2.book○○○○とbook1の各A1セルに入っている日付のデータ型は何ですか?
   (1)  1028とか128 と言う数値
   (2)  1028とか0128 と言う数字(文字型の一種)
   (3) 日付シリアル値(2018/10/28を書式で1028とかに表示させている?)

 3.各ブックのシート名は何ですか?
     各ブックは1枚しかシートが入っていないのですか?

(半平太) 2018/10/28(日) 13:21


 半平太さん回答ありがとうございます。
1.1月28日だと、どうなるんですか?
  book0128 となります。
 2.book○○○○とbook1の各A1セルに入っている日付のデータ型は何ですか?
   日付は10月28日という型になります。
 3.各ブックのシート名は何ですか?
     book1はA10 A20 A30 A40 の四つのシートです。
 book○○○○は それぞれA10 A20 A30 A40とbook1と同じシートになります。
細かな詳細を表記せずに申し訳ありません。よろしくお願いします。
(同期) 2018/10/28(日) 14:10

 各ブックの拡張子が何なのかお聞きするのを忘れました。
  .xlsx ですか、 
  .xlsm ですか?

 >2.book○○○○とbook1の各A1セルに入っている日付のデータ型は何ですか?
 >   日付は10月28日という型になります。
  それは「型」と言わないのです。

  「10月28日」と言う文字型なのですか? 

   それとも、数式ボックスに「2018/10/28」と出ているが、
    セルは「10月28日」と表示されている数値型(シリアル値と呼ばれるもの)なのですか?

 >> 3.各ブックのシート名は何ですか?
 >     book1はA10 A20 A30 A40 の四つのシートです。
 各ブック、4シートずつなんですね。
 この質問は、各同名シートについて、同じ処理を施したい、と言うことなのですか?

(半平太) 2018/10/28(日) 15:10


編集かぶったけどとりあえずそのまま。

横からですが
> 2.book○○○○とbook1の各A1セルに入っている日付のデータ型は何ですか?
> 日付は10月28日という型になります。

そうじゃなくて、"文字列"なのか"シリアル値"なのか聞いてるんだと思いますよ。

何も考えず、何もセルの書式設定もいじってないなら「標準」のままでしょうから、今年「10月28日」と入力しただけなら、そこに入ってるのは「シリアル値」の43401ですね。

(もこな2) 2018/10/28(日) 15:13


半平太さん もこな2さん 回答ありがとうございます。
2.book○○○○とbook1の各A1セルに入っている日付のデータ型は何ですか?
  「10月28日」と文字列で入力されてます。
 >> 3.各ブックのシート名は何ですか?
 各ブック、4シートずつなんですね。
book1は私所有のものなので上書きして大丈夫なのですが、book○○○○は会社所有なので変更はしたくないです。

よろしくお願いします。

(同期) 2018/10/28(日) 15:41


 ご教授お願いいたします。って言うより、コードがほしいんですよね。
(BJ) 2018/10/28(日) 16:06

 > 各ブックの拡張子が何なのかお聞きするのを忘れました。
 >  .xlsx ですか、 
 >  .xlsm ですか?

 この返答がないんですけども?
 拡張子が分からないとブックを特定できません。

 > 各ブック、4シートずつなんですね。
 > この質問は、各同名シートについて、同じ処理を施したい、と言うことなのですか?

 これにも返答してもらってないんですけども?
 4つのシートについて全部やるんですか?

 >book1は私所有のものなので上書きして大丈夫なのですが、
 >book○○○○は会社所有なので変更はしたくないです。

 ブックを変更するとは言ってないですよ?

 日付が変わったら、book1のB2:B10は新しいデータで書き直すのですね、と言う趣旨で言っただけです。
 前のデータは消えるので、「上書き」と言う表現をしました。

(半平太) 2018/10/28(日) 16:15


大変に失礼しました。

 > 各ブックの拡張子が何なのかお聞きするのを忘れました。
  .xlsx です。

 > 各ブック、4シートずつなんですね。
 > この質問は、各同名シートについて、同じ処理を施したい、と言うことなのですか?
 4つのシートについて全部やるんですか?

日付が変わったら、book1のB2:B10は新しいデータで書き直すのですね、と言う趣旨で言っただけです。

 前のデータは消えるので、「上書き」と言う表現をしました。

はい。4つのシート全てご指示された通りにしたいと思っております。
よろしくお願いします。

(同期) 2018/10/28(日) 17:51


 >はい。4つのシート全て

 2つのブックには、それぞれ4枚のシートがあり、
 全てA1セルには文字で「○月○日」と入っている、と理解しました。

 それで
 1.book1の4シートのA1セルは全て同じ日付が入っているんですか?
   それともバラバラな日付が入る事もあるんですか?

 2.book1027ブックの各シートのA1セルは全部「10月27日」ですか?
   それとも、それと違う日付が入る事もあるんですか?

(半平太) 2018/10/28(日) 18:43


半平太さん回答ありがとうございます。
 1.book1の4シートのA1セルは全て同じ日付が入っているんですか?
   同じ日付となります。

 2.book1027ブックの各シートのA1セルは全部「10月27日」ですか?
   それとも、それと違う日付が入る事もあるんですか?
この場合でしたら、10月27日となります。違う日付は入りません。

よろしくお願いします。

(同期) 2018/10/28(日) 20:03


 そうなると、このチェックは必要ないですよね? ブック名からA1セルの日付は自動的に分かるんですから。
          ↓                  
 >book1のA1と仮に今日出来たbook1027のA1の日付が同じ日付が入ったとしたら、

 >  .xlsx です。 
 自ブックの方はマクロが入るので「.xlsm」に変える必要があります。

 >B2からB10をbook1を開いた時、毎回の手入力を省く為、
 >book1027の内容をbook1のB2からB10に自動で表記する事は可能でしょうか? 

 book1を開いた時に自動処理すると言うのはタイミングがおかしくないですか?
 開いた時、まだA1セルに日付(文字列)を入れてないですよね?
 多分、前回やった日付が残っているんじゃないですか?

 なので、開いてから、日付を文字列で入れて、
 それから下記マクロ(synchro)を実行することになるんだろうと思っています。

 Sub synchro()
     '    Const targetBK As String = "\\サーバー名\Users\ユーザー名\Documents\フォルダ\#!#"
 '                   ~~~~~~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 '                     会社のパスに合わせてください。「・・フォルダ\」まで。
 '                     #!#の3文字は後でブック名に動的に置き換えます。
     Dim srcFullName As String
     Dim tgtWsh As Worksheet
     Dim WBdate As String
     Dim srcBK As Workbook
     Dim WsName
     Dim mustClose As Boolean

     Set tgtWsh = ThisWorkbook.Sheets("A10") '第一番目のシートを格納する
     WBdate = "book" & tgtWsh.[TEXT(A1,"mmdd")] & ".xlsx"  '会社のブック名を特定する

     On Error Resume Next '既に開いているかチェック
         Set srcBK = Workbooks(WBdate)
     On Error GoTo 0

     Application.ScreenUpdating = False

     If srcBK Is Nothing Then '既に開いてなければ開く
         mustClose = True     '後で閉じる算段をする
         srcFullName = Replace(targetBK, "#!#", WBdate)
         On Error Resume Next
             Application.DisplayAlerts = False
             Set srcBK = Workbooks.Open(srcFullName)
             Application.DisplayAlerts = True
         On Error GoTo 0
     Else
         mustClose = False
     End If

     If srcBK Is Nothing Then  '該当無し
         Application.ScreenUpdating = True
         MsgBox srcFullName & vbCrLf & "上記ブックは存在しません。処理中止"

         Exit Sub
     End If

     For Each WsName In Array("A10", "A20", "A30", "A40")
         Set tgtWsh = ThisWorkbook.Sheets(WsName)

         tgtWsh.Range("B2:B10").Value = srcBK.Sheets(WsName).Range("B2:B10").Value
     Next

     If mustClose Then
         srcBK.Close
     End If

     Application.ScreenUpdating = True
 End Sub

(半平太) 2018/10/28(日) 21:40


半平太さん回答ありがとうございます。
book1を開いた時にまだA1セルに日付(文字列)を入れないで前回やった日付が残ってます。
おっしゃる通り入力して開始したいと思います。

ご指示くださったものを会社で確認できるのは水曜日以降となります。 連休なので。

色々お手数おかけし申し訳ありませんでした。ありがとうございました。
(同期) 2018/10/28(日) 22:00


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.