ちょっと先の未来クイズ第4問

formatが全く同じとは言えないが、月報があります。
これを結合して一つのファイルにしようと思っています。
一件ずつを呼び出し、コピーする方法しか思い浮かびません。
それでは年報に直すのに、同じことを12回する必要あります。
列幅や列数が異なる場合があるかも知れません。
その場合は一旦結合した後、個別に修正しようと思っています。
良い方法ありませんか。

質問者からの補足コメント

  • どう思う?

    具体例をイメージで示します。

    客先、テーマ、進捗等の項目がA列からJ列まで並び、夫々に約30行のデータがあります。
    ただ30行の上下には列とは関係なく文章が数行ずつあるとします。
    列はほぼ同じですが、行については月によって異なります。

    1月分はそのままコピーし、1から50行目に空白行を挿入し、1月分を下へ送り、そこに2月分をコピーし、また50行を空白にし、同じ操作を続けます。
    ここまでは編集は行いません。

    この後、マニュアルで上下の文章の行を削除すると完成です。
    もし列幅や列数に乱れがあれば、個別に対応します。
    従って、最初に書きました客先、テーマ、進捗等は何でも構いません。
    ABCそのもので構いません。
    単純に下へ送り空白行を作り、次の月のデータをコピーすることです。

    なお、マクロには疎いので、使い方までの解説をお願いしたいです。

      補足日時:2017/06/21 15:43

A 回答 (12件中1~10件)

何度実行しても良いようになっていますのでもう一度最初から実行してみてください。


ちなみに、マクロを入れたファイルは開始時と終了時に毎回消去しているので何も表示されないはずです。出来上がった「友の会・観察会資料2017.xlsx」はどうなっていますか?

まさかとは思いますが、このマクロを記録したファイルの名前は「友の会・観察会資料2017.xlsx」や「友の会・1月観察会資料2017.xlsx」などにはしていませんよね?

多分間違いだと思うので勝手に直しましたが、もちろん「友の会・1月観察会資料2014.xclx」などは「友の会・1月観察会資料2014.xlsx」などの間違いですよね?
    • good
    • 0
この回答へのお礼

見つかりました。
予定していた通りのものが出来上がりました。
夜遅くまで対応していただき、ありがとうございました。

お礼日時:2017/06/25 01:52

一応、念の為ですが、コピペして実行されていますよね。


そのエラーだとスペルミスでも表示されますので…
    • good
    • 0
この回答へのお礼

なかなか思うように行かず、返事が遅くなりました。

前回言いました「実行時エラー'438':」は何故か表示されず、
「処理完了しました。」と表示されました。正常に終了したと思います。
ただ、このファイルの中身、文字が一切含まれておりません。
17行~57行、A~I列に縦罫線が3本と横罫線40本が入っております。
縦罫線は正しいです。横罫線はもっとあってよさそうです。
しかし文字一つもないのは、正しい処理ではありません。

お礼日時:2017/06/25 01:10

エラーしたときに「デバッグ」のボタンを押して黄色く表示された行を教えてください。

    • good
    • 0

No.8 追補



もしかしたら、作成したファイルは開いたままにした方が良いでしょうか?
    • good
    • 0

とりあえずこんなのはいかがでしょうか?


データが有るフォルダーに「ファイルまとめ.xlsm」のようなファイルを作成して、以下のマクロを登録してください。
----------------------------------------------------------------------------------------------------
Sub ファイルまとめ()
Dim Str_ファイル名 As String
Dim Lng_月 As Long
Dim Str_年 As String
Dim Lng_終 As Long
Dim Lng_次 As Long
Do
Str_年 = InputBox("年を半角数字で入力してください。")
If Str_年 = "" Then Exit Sub
Loop Until IsNumeric(Str_年)
Cells.Delete Shift:=xlUp
Lng_次 = 1
For Lng_月 = 1 To 12
Str_ファイル名 = "友の会・" & Lng_月 & "月観察会資料" & Str_年 & ".xlsx"
If Dir(ThisWorkbook.Path & "\" & Str_ファイル名) <> "" Then
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Str_ファイル名
Lng_終 = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Rows("1:" & Lng_終).Select
Selection.Copy
ThisWorkbook.Activate
Cells(Lng_次, 1).Select
ActiveSheet.Paste
Lng_次 = Lng_次 + Lng_終 + 50
Application.CutCopyMode = False
Windows(Str_ファイル名).Activate
ActiveWindow.Close
End If
Next
Str_ファイル名 = ThisWorkbook.Path & "\" & "友の会・観察会資料" & Str_年 & ".xlsx"
If Dir(Str_ファイル名) <> "" Then Kill (Str_ファイル名)
Cells(1, 1).Select
ActiveSheet.Copy
ActiveWorkbook.SaveAs _
Filename:=Str_ファイル名, _
FileFormat:=51
ActiveWindow.Close
Cells.ClearContents
MsgBox ("処理完了しました。")
End Sub
----------------------------------------------------------------------------------------------------
実行すると「年」を入力指示が表示されるので「2014」のように半角4文字で年を入力してください。キャンセルや空文字で何もせずに終了します。数字以外の物を入力すると数字が入力されるまで繰り返します。
まとめたものは「友の会・観察会資料2014.xlsx」のような名前で保存されます。
    • good
    • 0
この回答へのお礼

GooUserラック様
マクロ作成ありがとうございます。
実行すると、言われている通り4桁半角の年が要求され、2017を入力すると、しばらくして
次のエラーメッセージと、終了・デバッグ・ヘルプの選択肢が表示され、とりあえず終了を押し、マクロとして保存しました。

実行時エラー'438':
オブジェクトはこのプロパティまたはメッソドをサポートしていません。

書くのを忘れていましたが、環境はwindows10・excel2013です。
よろしくお願いします。
なお、2017の1から6までのデータしかありません。
それはそれでよいですね。確認をお願いします。
なおご質問の、閉じ方は未だ見当つきません。
一通りランしてからお答えさせてもらいます。

お礼日時:2017/06/24 23:05

もう一つ質問です。



まとめるファイルは同じフォルダーに有ると思って良いのですよね。
    • good
    • 0
この回答へのお礼

二つの質問、ありがとうございます。
月報は一つのフォルダに次のようなfileがあります。
「友の会・1月観察会資料2014.xclx」、「友の会・2月観察会資料2014.xclx」・・「友の会・1月観察会資料2017.xclx」、「友の会・2月観察会資料2017.xclx」・・・が一つのホルダーにあるとします。
ただし欠番があるかも知れません。

お礼日時:2017/06/21 22:19

No.2 のお礼について



ファイル名のフォーマットの件ですが、例えば1月分の名前は「1月分.xlsx」「1月.xlsx」「2017年1月度.xlsx」などいろいろ有るのだけど、フォーマットが決まっていないと1つ1つ指定しておかないと読み込む事が出来ないのですけど…
決まっているならば「yyyy年m月分.xlsx」のように指定していただけると良いのですが…
使われている数字は半角か全角かも教えてくださいね。
    • good
    • 0
この回答へのお礼

GooUserラック様
本件、マクロを使い、解決できませんでしょうか。
補足説明と貴方への質問への答えとして、説明しましたが、私の意図は伝わってますでしょうか?
よろしくお願いします。

お礼日時:2017/06/24 18:27

最終的なアウトプットをイメージできないのですが,月報にはどういう項目を書かれているのでしょうか?


例えば
・客先
・テーマ
・進捗状況
・達成率
・イベント
・詳細な内容
など色々考えられますよね?
それに対して"どのセルが各項目内容を記載しているか"というのがポイントになる様に思います.

例えば見出し列が1列目,内容が2列目に記載されているという事なら,
1~12月の順(もしくは4月~3月の順)に内容をコピー&ペーストするマクロを組むのが
手っ取り早い印象があります.
(つまりコピー&ペーストしたら1列ずつずらす.それによって1月~12月までの内容を1つのシートに貼り付ける事ができる.)
但し,この方法を行うためには連結行がその月によって異なる(例えば4月の詳細な内容を記載しているのがB4~B6であるのに対し,5月だとB4~B7みたいな感じ)と,
コピーするセルの位置ズレが起きるので,できれば同じセル位置に記載されている事が望ましいです.
勿論違うセル位置であっても見出し項目から検索してコピー&ペーストすることも可能です.
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
今から作るデータなら、もう少し考えてスタートするでしょうが、3年分の月報がたまっており、そこから、並べ替えや検索を行おうとしています。
月報は1sheetの1fileでできており、それが30件ほどあります。
これからどうするかが問題です。
補足コメントに書きましたので、見て貰えませんか。

お礼日時:2017/06/21 21:12

こんにちは



具体的な内容が不明なので、半分想像ですが・・・
いずれにしろ、手作業に頼らざるを得ない部分がかなり残りそうですし、年に一回の頻度の作業(?)ということを考えると、あまり自動化することに意味を感じられません。

多少なりとも作業を(心理的に)楽にする意味で、機械的な作業の部分を自動化しておくとかでしょうか?
規則性があるなら、単純にブック間のリンクを設定したひな形を作成しておいて、それを使い回すとか。(一旦、値をその位置にペーストすることで実体化できるので)
同様の機能のマクロを作成しておくとか。
いずれの場合も、formatの統一具合によっては、項目ごとにまとめてコピーするくらいのところまではできるかも知れませんね。


別の発想として・・・
>一件ずつを呼び出し、コピーする方法しか思い浮かびません。
>それでは年報に直すのに、同じことを12回する必要あります。
わずらわしさの一つの要因として「別ブックを何度も開く」という心理的な抵抗感があるのではと想像します。

月報とのことですので、ファイルの1シートを一月分になるようにformatを組み直せれば(複数ページあっても1シートに記載する)、一年分を12シートにすることができます。
これに年報シートも追加すると、年度のデータを1ファイルとすることが可能になります。
とはいっても、月報が数十ページあるとかだと、1シートにするのには無理がありそうですが・・・(感覚的には、せいぜい数ページ~十ページ程度まででしょうか)


私なら、1ファイル化が可能であるなら(12ファイルになっても同様かもですが)、12か月分の内容を項目ごとに単純コピペで寄せ集めるマクロでも作成しておいて、あとは手作業で編集するといった方法を考えるところでしょうか。
    • good
    • 0

もしマクロやデータベースクエリの回答を期待しているのなら


わずかな量しかないんですからパスやファイル名(シート名も)
を明らかにすべきかと思います。データ範囲もはっきりさせた
方がいいですね。
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
データ範囲はA列からJまでの50行です。
補足コメントに書きました。
見て貰えませんか。

お礼日時:2017/06/21 21:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報