Excelで複数のファイルを別のシートに貼り付けるには

解決


初老のサラリーマン  2006-06-04 05:15:57  No: 131690

エクセルで同じフォーマット(列数は30、行数は色々で見出し行有り)の複数ファイルを別ブックの1シートに文字列として貼り付けたいのですが、ダイアログからファイルを選択して開く所までは出来るのですがデータ範囲を取得する事が出来ません、使用済範囲を取得すると見出しからデータが入力されていない計算式のセルまで選択しますし編集済最終セルはコピー元ファイルによって変わります、出来そで出来ないでイライラしています。
宜しくお願いいたします。


がんばれ!サラリーマン  2006-06-06 02:36:42  No: 131691

開発環境を書かないと回答者がお教え出来そで出来ないでイライラしています。


初老のサラリーマン  2006-06-08 06:03:07  No: 131692

がんばれ!サラリーマン さんコメント有難うございました
誰も相手にしてくれないなと思って居ましたが1行のコメントでも嬉しくなるものですね。
環境はExcel2003VBAです。
1か月分の日々エクセルデータ30個が同じフォルダーに蓄積されます、
そのデータを一枚のシートに昇順に貼り付けたいのです、
常に2枚のファイルが開いており(コピー元と貼り付け側)
以下の様な形を作りましたが上手く動作したり、貼り付け側ブックが閉じたり
2重にファイルを開きますか?のコメントが表示されたりと、、、、
少しずつ変更しながら此処まで辿り着きましたが算数と数学の違いで如何にも
遠周りな動作をしています、、簡潔な処理を伝授下さい

Sub Macro10()
    Dim ファイル名一覧 As Variant
    Dim ブック As Workbook
    Dim i As Integer
    Dim 使用範囲 As Range
    Dim 最終行 As Long
    ファイル名一覧 = Application.GetOpenFilename("Excelのファイル,*.xls" _
        , MultiSelect:=True)
    If VarType(ファイル名一覧) = vbBoolean Then Exit Sub
    Application.EnableEvents = False
    For i = 1 To UBound(ファイル名一覧)
        Set ブック = Workbooks.Open(ファイル名一覧(i))
        
   '選択範囲を指定する
    Selection.End(xlUp).Select
    Range("C6:AG6").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ActiveWindow.WindowState = xlMinimized
    
    'A2を起点として貼り付ける
    Range("A2").Select
    Set 使用範囲 = ActiveSheet.UsedRange
    最終行 = 使用範囲.Rows.Count + 1
    Cells(最終行, ActiveCell.Column).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
   '最終行へ移動
    'Set 使用範囲 = ActiveSheet.UsedRange
    '最終行 = 使用範囲.Rows.Count + 1
    Cells(最終行, ActiveCell.Column).Activate
    Set ブック = Workbooks.Open(ファイル名一覧(i))
    
    'Windows("ファイル名一覧").Activate
   ActiveWindow.Close
    Next
End Sub


VB梅  2006-06-08 08:07:07  No: 131693

こんにちは初老のサラリーマン さん

不要な行があるみたいですね。

デバックで一行ごと進めてみてはいかがでしょうか

同じファイルを2回開いているようにみえるし
コピー元、コピー先のワークブックの指定もしてないようです

がんばってください。


初老のサラリーマン  2006-06-09 07:14:44  No: 131694

VB梅 さんコメント頂き有難うございました。

コピー元はコピー範囲を取得してからブックを最小化してコピー先をアクティブにしているのですが、貼り付けてからコピー元ブックを閉じるコードが分かりません、

最終行のSet ブック = Workbooks.Open(ファイル名一覧(i))で最小化された
コピー元をアクティブにして閉じたいのですがこのコードが2重に開いてしまう結果になりエラーを起こします、

最小化されたブック(ファイル名一覧(i))を閉じる方法を教示頂けませんでしょうか?


特攻隊長まるるう  2006-06-09 19:31:46  No: 131695

>コピー元ブックを閉じるコードが分かりません
閉じるを英訳すれば Close ?
ブックを閉じたいのだから、
ブックに Close というメソッドが無いか?調べて、
ヘルプで動作確認後、使えばいいのでは?

ブックを2つ同時に開くなら、変数も2つ用意しましょう。


初老のサラリーマン  2006-06-11 00:21:16  No: 131696

特攻隊長まるるう さん指導有難うございます
少しずつ解決に向かっています、最後に1件教えて頂けませんか?
コピーを貼り付けコピー元ブックを閉じるとき表示されるExcelのメッセージBOX(クリップボードに....)を表示させないでブックを閉じる方法が分かりません、これが解決すれば何とか使えると思います。
宜しくお願いいたします。


初老のサラリーマン  2006-06-11 00:56:10  No: 131697

がんばれ!サラリーマンさん
VB梅さん
特攻隊長まるるう さん

色々ご指導頂き有難う御座いました、

何とか自力で解決することが出来ました、年老いて居ますので参考書も読んだ後から忘れて行きますので短いプログラムも理解に時間が掛かりますがコメントを下さる方々がいらっしゃるので一人で考え込む時間が短くてすみました。
初心者ですので又質問いたします其の説は宜しくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加