[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ブック全体を別ブックにリンク』(なんでやねん)
[ファイル(ブック)全体を別ファイル(ブック)にリンクさせる方法どなたか御存知でしょうか?]
例 ブックA を更新→ブックB(ブックAのコピー)も更新
一般機能だけでお考えでしょうか? マクロを使えば可能ですけど・・。
(INA)
一般機能で可能なら一般機能でお願いします。 マクロは扱ったことありませんがマクロ の方が作り安ければマクロでお願いします。
マクロです。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ThisWorkbook.SaveCopyAs "c:\test.xls" End Sub
(INA)
内容はあってます。
使い方は、 alt + f11 で vbe を起動。 プロジェクトウィンドウのthisworkbookモジュールをダブルクリックして、 開かれたコードウィンドウに、先ほどのマクロコードをコピペして下さい。
(INA)
>ファイル「test」に直接入力して更新しようとすると >「test.xlsにアクセスできません」とメッセージが出てきますが、 >この動作は正しいのですよね?
ふつうのExcelファイルと同じなので、編集&保存できないということはありません。 他でファイルが開かれているということはありませんか?
具体的なシートの内容などをお教え頂ければ、 「リストの良否をチェック」のマクロを作ることが出来るかもしれません。
(INA)
ファイルB(リンク先;チェックシート。チェック欄の良否は手入力)
品名 チェック欄
1. a |
2. b |
3. c |
4. d |
品物現物を目視(いわゆる検品です)で確認してチェック欄には手動で
「良否」を入力する流れです。品物は日々リストに追加されるので
チェックシートには追加分は自動更新、かつ「良否」は手入力で行う
仕様にしたいのです。「リスト」は本来別の目的でつくられているファイルで
チェックシートを作るために私が勝手に参考資料「リスト」として
使っているのです。一般機能で一度作成してみましたがファイルの容量
が倍になってしまったのでマクロで良い方法をお願いします。
ファイルBに、A列だけコピーすればよいのですよね?
だとすれば、マクロの記録でできると思います。 自動記録されたコードを、
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'ここにコピペする
End Sub
してみて下さい。
基本的な処理の流れは、 ファイルAを保存→マクロ実行→ 「マクロの処理」 ファイルBを開く→ファイルAの?シートのA列をコピー→ ファイルBの?シートのA列に貼り付け→ファイルBを上書き保存→ファイルBを閉じる
になると思います。
(INA)
'ここにコピペする
End Sub
してみて下さい。
ThisWorkbook.SaveCopyAs "c:\test.xls"
がないとリンク先「test.xls」が更新されないような気が・・・。
マクロの記録のやり方が悪いのでしょうか?
例えば
リンク元ファイルに
A1 1
A2 2
A3 3
とあったとして
A4 に4を追加したマクロを記録すると
Sub Macro4()
'
' Macro4 Macro
' マクロ記録日 : 2004/XX/XX ユーザー名 : XXXXX
'
'
Range("A4").Select ActiveCell.FormulaR1C1 = "4" Range("A5").Select ActiveWorkbook.Save End Sub
となりました。これを見る限りマクロのとり方が悪いような
気がします。マクロのとり方は
ツール→マクロ→新しいマクロの記録 でいいですよね?
いろいろ試しているうちに気が付いたのですが
リンク元のセル範囲を指定してその部分だけをリンク先ファイルに
リンクさせる方法をマクロでやりたいのですが。
例えば
ファイル(リンク元)
A1 1 B1 a
A2 2 B2 b
A3 3 B3 c
のA列 B列を指定(行はデータが追加されるので可能なら全ての行)
してリンク先ファイルにコピー。リンク先ファイルでは
C1 D1などリンク指定範囲以外にデータ入力できる
方法なにかありますでしょうか?
> Range("A4").Select > ActiveCell.FormulaR1C1 = "4" > Range("A5").Select > ActiveWorkbook.Save >End Sub >となりました。
コピーの操作が記録されてませんよ?
(INA)
操作
ファイル「test1」を保存 ファイル「test2」を開く→ファイル「test1」の?シートのA列をコピー→ ファイル「test2」の?シートのA列に貼り付け→ファイル「test2」を上書き保存→ ファイル「test2」を閉じる
コード
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
ActiveWorkbook.Save Workbooks.Open Filename:= _ "C:\Documents and Settings\oos-ma\My Documents\test2.xls" Windows("test1.xls").Activate Range("A1:A28").Select Selection.Copy Windows("test2.xls").Activate Range("A1:A28").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close End Sub
1行づつ動作を確認していくと
「Windows("test2.xls").Activate」
で失敗しているようです。
test1セーブ時に
「実行時エラー'9':
インデックスが有効範囲にありません」
とメッセージが出てきます。
ファイル「test2」にペーストするにはどのようにしたらいいでしょうか?
ちょっと手を加えて、以下のようにしてみました。 これで分かりますでしょうか?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Dim 保存先パス As String Dim 保存先ファイル As Workbook
保存先パス = "C:\data"
Application.ScreenUpdating = False
'保存先ファイルを開く Set 保存先ファイル = Workbooks.Open(保存先パス & "\Test2.xls")
'コピー ThisWorkbook.Worksheets("Sheet1").Range("A1:A65536").Copy _ Destination:=保存先ファイル.Worksheets("Sheet1").Range("A1")
'保存して閉じる 保存先ファイル.Close True
Application.ScreenUpdating = True End Sub
(INA)
期待する動作は
ファイルA ファイルB
sheet1 A1:B65536 → sheet1 A1:B65536 にコピー
sheet2 A1:B65536 → sheet2 A1:B65536 にコピー
sheet3 A1:B65536 → sheet3 A1:B65536 にコピー
'コピー ThisWorkbook.Worksheets("Sheet1").Range("A1:A65536").Copy _ Destination:=保存先ファイル.Worksheets("Sheet1").Range("A1")
の部分のsheetNo.をかえてコードに追加
'コピー ThisWorkbook.Worksheets("Sheet1").Range("A1:A65536").Copy _ Destination:=保存先ファイル.Worksheets("Sheet1").Range("A1")
ThisWorkbook.Worksheets("Sheet2").Range("A1:A65536").Copy _ Destination:=保存先ファイル.Worksheets("Sheet2").Range("A1") ・ ・ ・
をすれば動くみたいですが
実際に仕事で使うシートは10枚ほどあるので良い指定の方法があれば
お願いします。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.