[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAを使った別ファイルからのコピー』(比良)
Aファイル→○○ファイル Bファイル→○○ファイル Cファイル→○○ファイル どれが正解でしょうか?
Aファイル→○○ファイル ならば Aファイルにシートの貼り付けは不要ですよね?
なさりたい事がよくわかりません...
(1or8)
(比良)
>A,B,Cのファイルがあります >そのフォルダの中に,「○○」というファイルをコピーします A,B,Cのどのブックを○○ブックとしてコピーするのですか? Aブック→○○ブック ならば Aブックにシートの貼り付けは不要ですよね?
相変わらず、なさりたい事がよくわかりませんが、自動記録で目的のコードは得られませんか?
(1or8)
すみません,ややこしくて。 同一フォルダ内にAファイルがあって,そこへ新しく○○ファイルを保存します。 ○○の方だけファイル名は変動します。 VBAを使って,その○○ファイルのシート1を全選択してコピーして,Aファイルに取り込んで, Aファイルのシート1に貼り付けたいのですが。
(比良)
@Aブックのシート1のタブを右クリック A移動またはコピーで新しいブックにコピー この手順で自動記録をしてみては? (1or8)
少し分かってきました。 Aファイル→○○ファイルにコピーじゃなくて ○○ファイル→Aファイルにコピーしたいんですけど。 それで,○○は変動するんですけど,○○はどうやって特定すればいいんでしょうか。 たぶん,「A以外」という感じで特定すると思うのですが。
(比良)
このVBAはどのブックに書くのですか?
Aファイルですか? それとも全然別のブックですか?
このプログラムを走らせるとき、A,B,C,○○ブックは閉じているのですか?
<追記> > たぶん,「A以外」という感じで特定すると思うのですが。
「A以外」だと、B.xls も C.xls も ○○.xlsと間違われますよ。 フォルダ内は、全部で「4」ファイルまでですよね? そうじゃないと、○○.xlsを特定できませんが。
(半平太)
Aファイルに書いて,Aファイルを開いた上,実行するのですが。 簡単に説明するため,Aと○○とで説明して,「A以外」としましたが 正確にはご指摘のとおり,「A,B,C以外」というふうに特定したいのですが。
(比良)
Sub CopyToFileA()
Dim aa Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
For Each aa In fso.GetFolder(ThisWorkbook.Path & "\").Files
If aa.Name <> ThisWorkbook.Name And aa.Name <> "B.xls" And aa.Name <> "C.xls" Then Workbooks.Open Filename:=ThisWorkbook.Path & "\" & aa.Name Workbooks(aa.Name).Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(1).Cells Workbooks(aa.Name).Close Exit For End If Next
Application.ScreenUpdating = True
Set fso = Nothing
End Sub
(半平太)
みなさん,ありがとうございます。 私の思っていたとおり,ぴったりです。 それで,もう1つ問題がありまして。 ○○ファイルの方にリンクがかかっていて,貼り付けるときに,「リンクの編集〜」 という表示が出てしまうんですけど。
それで,○○ファイルのシート1を全選択してコピーしたときに,リンクを解除して それから貼り付けるというふうにしたいのですけど。 どうなるのでしょうか。
(比良)
> ○○ファイルの方にリンクがかかっていて,貼り付けるときに,「リンクの編集〜」 > という表示が出てしまうんですけど。
ちょっとよく分からないですが、下の2箇所の変更でワークしないでしょうか?
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & aa.Name, UpdateLinks:=2 '← 引数追加
Workbooks(aa.Name).Close False '← 引数追加
(半平太)
うまくいきませんでした。 ○○ファイルのリンクを下記のような感じで,まずリンク解除して それから上記のようなコードでコピーして貼り付けすればうまくいくと思うのですが。 それをどうやってつなげるのか分からないので教えてください。
Sub ()
○○ファイルを検索
ActiveWorkbook.BreakLink Name:="○○.xls", Type:= _
xlExcelLinks
End Sub
あともう少しなので,よろしくお願いします。
こんなことですかね? 注:UpdateLinks:=0 としています。 「0」を入れるとどうなるかはヘルプに書いてありませんが、結果オーライの様なので使用しています。
Sub CopyToFileA() Dim aa, bb, astrLinks Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False For Each aa In fso.GetFolder(ThisWorkbook.Path & "\").Files If aa.Name <> ThisWorkbook.Name And aa.Name <> "B.xls" And aa.Name <> "C.xls" Then Workbooks.Open Filename:=ThisWorkbook.Path & "\" & aa.Name, UpdateLinks:=0
astrLinks = Workbooks(aa.Name).LinkSources(Type:=xlLinkTypeExcelLinks)
If Not IsEmpty(astrLinks) Then For Each bb In astrLinks Workbooks(aa.Name).BreakLink Name:=bb, Type:=xlLinkTypeExcelLinks Next End If
Workbooks(aa.Name).Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(1).Cells Workbooks(aa.Name).Close False Exit For End If Next Application.ScreenUpdating = True
Set fso = Nothing End Sub
(半平太)
すごい,思ったとおりのができました。 どうもありがとうございました。
(比良)
すみません,また教えてください。 上のコードで If aa.Name <> ThisWorkbook.Name And aa.Name <> "B.xls" And aa.Name <> "C.xls" Then の部分。 And aa.Name <> "B.xls" And aa.Name <> "C.xls" And aa.Name <> "D.xls" と30個ほど並べたいので
下に改行して
And aa.Name <> "B.xls" And aa.Name <> "C.xls" And aa.Name <> "D.xls"
というふうに見やすいように並べてみたら,コンパイルエラーと出るのですが, これを直すことはできるのでしょうか。 素人の質問でどうもすみません。
(比良)
こういうことでしょうか? If aa.Name <> ThisWorkbook.Name _ And aa.Name <> "B.xls" _ And aa.Name <> "C.xls" _ And aa.Name <> "D.xls" Then (キリキ)(〃⌒o⌒)b
分かりました。ありがとうございました。
(比良)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.