エクセルで同じフォーマット(列数は30、行数は色々で見出し行有り)の複数ファイルを別ブックの1シートに文字列として貼り付けたいのですが、ダイアログからファイルを選択して開く所までは出来るのですがデータ範囲を取得する事が出来ません、使用済範囲を取得すると見出しからデータが入力されていない計算式のセルまで選択しますし編集済最終セルはコピー元ファイルによって変わります、出来そで出来ないでイライラしています。
宜しくお願いいたします。
開発環境を書かないと回答者がお教え出来そで出来ないでイライラしています。
がんばれ!サラリーマン さんコメント有難うございました
誰も相手にしてくれないなと思って居ましたが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
こんにちは初老のサラリーマン さん
不要な行があるみたいですね。
デバックで一行ごと進めてみてはいかがでしょうか
同じファイルを2回開いているようにみえるし
コピー元、コピー先のワークブックの指定もしてないようです
がんばってください。
VB梅 さんコメント頂き有難うございました。
コピー元はコピー範囲を取得してからブックを最小化してコピー先をアクティブにしているのですが、貼り付けてからコピー元ブックを閉じるコードが分かりません、
最終行のSet ブック = Workbooks.Open(ファイル名一覧(i))で最小化された
コピー元をアクティブにして閉じたいのですがこのコードが2重に開いてしまう結果になりエラーを起こします、
最小化されたブック(ファイル名一覧(i))を閉じる方法を教示頂けませんでしょうか?
>コピー元ブックを閉じるコードが分かりません
閉じるを英訳すれば Close ?
ブックを閉じたいのだから、
ブックに Close というメソッドが無いか?調べて、
ヘルプで動作確認後、使えばいいのでは?
ブックを2つ同時に開くなら、変数も2つ用意しましょう。
特攻隊長まるるう さん指導有難うございます
少しずつ解決に向かっています、最後に1件教えて頂けませんか?
コピーを貼り付けコピー元ブックを閉じるとき表示されるExcelのメッセージBOX(クリップボードに....)を表示させないでブックを閉じる方法が分かりません、これが解決すれば何とか使えると思います。
宜しくお願いいたします。
がんばれ!サラリーマンさん
VB梅さん
特攻隊長まるるう さん
色々ご指導頂き有難う御座いました、
何とか自力で解決することが出来ました、年老いて居ますので参考書も読んだ後から忘れて行きますので短いプログラムも理解に時間が掛かりますがコメントを下さる方々がいらっしゃるので一人で考え込む時間が短くてすみました。
初心者ですので又質問いたします其の説は宜しくお願い致します。
ツイート | ![]() |