• ベストアンサー

Excel2003のVBAでデータリンクの更新をしない。

こんにちわ。 私はWindowsXPのExcel2003のVBAでCSVを読み込んでアンケートの結果を集計するマクロと、その結果を別のブックで保存するマクロを作成しました。2つのマクロがあるブックを閉じて、保存されたブックを開くと「このデータソースには他のリンクが設定されています」といったものが表示され、更新するかしないかを問われます。 そこで、このメッセージを表示しないでリンクの更新を行わないようにすることは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

2つのBook間で参照するセルがあるためだと思います。 集計の時に参照が残らないようにVBAを組むか、最後に参照元のあるシートに対して Sheets("シート名").Cells.Copy Sheets("シート名").Cells.PasteSpecial Paste:=xlValues を行って、値のみにするなどの対処をすれば出なくなると思いいます。

tierra31
質問者

補足

ご回答ありがとうございます。 以下のコードではどこに Sheets("シート名").Cells.Copy Sheets("シート名").Cells.PasteSpecial Paste:=xlValues を加えればいのですか? 'シートの保護 Worksheets("適材適所回答").Protect Worksheets("適性検査I、II回答").Protect Worksheets("適性検査III回答").Protect

その他の回答 (2)

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

ANo.2です。 補足のどこに入れても多分ダメです。 質問で >保存されたブックを開くと と言っているので、保存するBookに処理が必要です。 ANo.1の補足のプログラムになら、真ん中くらいにある 'コピー先シートの保護 の前に以下を入れてみてください。 For Each sh In NewWkbook.Worksheets sh.Unprotect '無くてもいいかも sh.Cells.Copy sh.Cells.PasteSpecial Paste:=xlValues sh.Protect '無くてもいいかも Next 前後にある[無くてもいいかも]の処理は、シートの保護状態にもよるので、無くてもエラーが出ない場合は削除してください。

tierra31
質問者

補足

すみません。ANo.2の補足が間違っていました・・。 最後に Application.AskToUpdateLinks = False を付け足したらできました!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>その結果を別のブックで保存する の”別のブック”を開くと >「このデータソースには他のリンクが設定されています」といったものが表示され と言う事ですか? であれば、そのブックの保存の仕方を変更するとか。 (元のブックを参照しているのであれば、しないようにするとか)

tierra31
質問者

補足

ご回答ありがとうございます。 以下のコードならばどのようにするのか教えていただけますか? Application.DisplayAlerts = False Set OldWkbook = ActiveWorkbook ' 'ファイル名を取得 BkName1 = OldWkbook.Sheets(StName1).Range("E1").Value BkName2 = OldWkbook.Sheets(StName1).Range("E2").Value BkName3 = OldWkbook.Sheets(StName1).Range("E3").Value '取得したファイル名 FileName = BkName1 & Format(".") & Format("試験結果") & Format(".") & BkName2 & Format(".") & BkName3 & ".xls" 'シートのコピー OldWkbook.Sheets(Array(StName1, StName2, StName3, StName4, StName5)).copy Set NewWkbook = ActiveWorkbook 'ボタンを削除 For wIx = NewWkbook.Sheets(1).Shapes.Count To 1 Step -1 If Left(NewWkbook.Sheets(1).Shapes(wIx).Name, 6) = "Button" Then 'ボタンのみ削除 NewWkbook.Sheets(1).Shapes(wIx).Delete End If Next NewWkbook.Sheets(1).Name = StName1 'コピー先シートの保護 Sheets(1).Protect Sheets(2).Protect Sheets(3).Protect Sheets(4).Protect Sheets(5).Protect FileName = Application.GetSaveAsFilename(FileName, "xlsファイル (*.xls),*.xls", , "保存ファイル名の確認") If Dir(FileName) <> "" Then 'ファイルが既に存在する場合 If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then NewWkbook.Close savechanges:=False MsgBox "ファイルの置き換えをキャンセルしました", vbInformation, "置き換えのキャンセル" 'シートの保護 Worksheets("適材適所回答").Protect Worksheets("適性検査I、II回答").Protect Worksheets("適性検査III回答").Protect Exit Sub End If '指定ファイル置き換え保存 NewWkbook.SaveAs FileName:=FileName MsgBox "ファイルの置き換えを完了しました", vbInformation, "置き換えの完了" Else 'ファイルを新規保存 NewWkbook.SaveAs FileName:=FileName MsgBox "ファイルを新規保存しました", vbInformation, "ファイルの保存" End If NewWkbook.Close savechanges:=False Application.DisplayAlerts = True 'シートの保護 Worksheets("適材適所回答").Protect Worksheets("適性検査I、II回答").Protect Worksheets("適性検査III回答").Protect

関連するQ&A

  • 「ほかのデータソースへのリンク」とは?

     マクロを含んだEXCELのブックで、最近開くときに、「このブックには、ほかのデータソースへのリンクが含まれています。」というメッセージが出て、「リンクを更新するか、しないか」のメッセージで「する」、「しない」の入力を要求されるようになりました。  この「ほかのデータソースへのリンク」の意味が理解できないのですが、このブックはもともと独立していてほかへのリンクはないはずなので、ちょっと気がかりです。  このリンク情報がブック内のどこにあるのかを知る方法、および、リンク先がどこかを知る方法についてお伺いします。

  • 【EXCEL2007】 VBA(マクロ)の編集

    EXCEL初心者です。 マクロというものを最近知り、マクロ作成の練習をしているところです。 今こういったことで悩んでいます。 ■『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない(Exit sub)』というソースを 書きたいが、どのようにソースを作成すればいいのか。 ■現在こういった『VBA(マクロ)』を作成しています。 『(1)「B2」セルに文字を入力 (2)マクロ機能を登録した「ボタン」をクリック (3)「B2」セルに入力した名称で「新しいブックを作成」 (4)そのブック名称で指定先に「保存」する。』 今のところ、「マクロの記録」でそういうプログラムを作ること自体は勝手にできてくれました。 「B2」セルに「SampleSheet」と入力して、ボタンを押せば、 「SampleSheet」という「名称」で「新しいブックを作成」することはできています。 ■ですが、例えば「B2」セルに入れた名称が、『保存先にすでにあり』 「上書き保存しますか」というメッセージが出た場合、 上書き保存したくないので、「いいえ」ボタンを押すと 「エラーメッセージ」が出てしまいます。 そこで、 『「上書き保存しますか」というメッセージ』で「いいえ」が押された場合に、 『「保存する」という動作をしない、そのマクロ自体を終了する(Exit sub)』というソースを 書きたいんですが、どのようにソースを作成すればいいのかがわかりませんでした。 ■参考ソースをのせていただけると助かります。 ご回答、よろしくお願いします。

  • Excelシートの自動更新

    Excel2013ブックAでシートの内容変更したのちリンクしている別のExcel2013ブックB~Dを開き更新をするボタンを押し更新して上書き保存しているが更新Excelブックが数部ありいちいちExcelブックを開き更新するのが面倒でなんとかExcel2013ブックA内変更後リンクExcel2013ブックB~Dの更新をボタン一括で自動更新したいのですがボタンにマクロ登録(VBAコード入力)とかでできますか。宜しくお願いします。

  • Excel・『ほかのデータソースへのリンク』

    以前作っていたExcelファイルを、ネットワーク上の他のパソコンで編集し、 再度元あった端末に移して開いたところ、 『このブックには、ほかのデータソースへのリンクが含まれています。』 というメッセージが開く度に毎回出てくるようになりました。 メッセージの通り、他のブックへのリンクが含まれているんでしょうが、 結構シート数が多いブックなだけに、どこがその対象なのか見つかりません。 このリンクを簡単に見つける方法ってあるんでしょうか? どなたかご存知の方、よろしくお願いします。

  • エクセル:ほかのデータソースへのリンクが更新できません

    Excelのあるbookのsheet(シートA)から、他のbook(シートB)へのリンクを設定しています。いったん完成させた後に、リンク先のbook(シートB)の保存位置(フォルダ)を変更しました。すると、シートAを開くごとに「このブックには、ほかのデータソースへのリンクが設定されています。」というダイアログが表示されるので「更新する(U)」ボタンをクリックしてSaveしましたが、再度そのブックを開くと同じ「このブックには、ほかのデータソース....」のダイアログが表示されてしまいます。なぜ、リンク先を更新できないのでしょうか?

  • Excel2002で、ブック間リンクで困っています。

    Excel2002で、ブック間リンクで困っています。 ブック1とブック2があり、ブック1のあるセルに、 ='D:(ブック2)'!$D$2 と数式が入っています。 両方閉じた状態で、ブック1を開くと、「リンクを更新しますか?」という旨のメッセージが出て、「更新する」を押下すると、「更新できないリンクがある」(ブック2を開いていないので当然といえば当然ですが)とメッセージが出ますので、しかたなく「継続」にしています。 ところが、ブック1の中で、ブック2とは別のフォルダにある同名のファイル(ブック2)を参照しなければならなくなりました。 名前を変えればいいじゃないか、と言われそうですが、あるシステムから自動で出力、ネーミングされてしまうので、変更できないのです。 このままでは、 1.ブック2を開く 2.ブック1を開き、リンク値の更新 3.ブック2を閉じる 4.他のフォルダのブック2を開く 5.F9で再計算 ~繰り返し~ という手順で、実はこれが何十もあるのです。 参照先のブックを閉じた状態でリンク先のセル値を参照(更新)することはできないのでしょうか? バージョン2007ならできそうな感じですが、会社のものなので、勝手にバージョンアップもできず。。。。 裏技がありましたら教えてください。 何卒よろしくお願いします。

  • Excel2007 「このブックには更新できないリ

     今晩は,質問させていただきます.どうぞよろしくお願いいたします.  Excel2007+Win7でございます。  別のPCで作成いたしましたファイル(VBA付き)を開きますと、 「リンクの自動更新が無効にされました」の状態になっております。 (リンクを付けた記憶はございません。。) その右にある「オプション」ボタン→「このコンテンツを有効にする」といたしますと 「このブックには更新できないリンクが1つ以上含まれています。」のメッセージボックスが 表示されます。  その画面から「リンクの編集」を選択いたしますと下のような画面になっております。 リンク元   種類     更新  状態 DATA.xls  ワークシート  A   エラー:ソースが見つかりません リンク元: D:\user\  おそらく前のPC上での操作でどこかにリンクを残してしまったのであろうと 考えまして、下の2つの検索作業をいたしましたが文字列が見つかりません。。。 ・ブック上での検索(Ctrl+F→「検索場所」をブックに指定し、文字列「DATA」を検索) ・VBA上での検索 (Ctrl+F→「対象」をカレントプロジェクトにし、文字列「DATA」を検索)  このリンクは一体どこに潜んでいるのでございましょうか?? 消してしまいたいのでございますが。。。。  もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく どうぞよろしくお願いいたします。

  • Excel VBA:リンクの更新

    いつもお世話になっています。 Excelでセルに他のブックのリンクを貼ってある場合、 ブック起動時に『更新しますか?』と聞いてきますよね(メニューバーの編集→リンクの設定→起動時の設定で聞いてこないようにもできますが)。 (1)VBAでリンクの更新をさせるには、どのように書けばよろしいでしょうか? (2)また、『値の更新』ボタンがグレーアウトされていてクリックできないのですが、理由(原因)は何でしょうか? 教えてください、よろしくお願いします。

  • エクセル データリンク 警告

    先日からどのようなエクセルファイルを開いても 下記のような警告が毎回でてきていて困っています。 このブックには、ほかのデータソースへのリンクが含まれています。 ・リンクを更新すると、Excelは最新のデータを取り込もうとします。 ・リンクを更新しないと、以前の情報が使用されます。 この警告が表示されるのですが、ブックにはデータリンクは含ませていません。 この現象はどうすれば解消できるでしょうか? 因みにExcel2003を利用しています。

  • Excel2007での VBAの動作不良?

    Excel2007がインストールされた環境で拡張子を変えて動作させようとしたら 変更直後でしか動作しませんでした。 やり方としては (1)VBAマクロを作成したボタンに登録(Excel2007にて)。 ※ボタンは[開発]タブの[挿入]からActiveXコントロールのボタンを配置しました。 (2)Excelファイルを2003バージョンで保存(拡張子はxls:Excel97-2003タイプ)。 ※この拡張子だと何度でも正常に機能しました。 (3)保存形式(拡張子)を変更して(拡張子はxlsm:マクロ有効ブック)マクロを実行したら正常に動作した。 ただし、一度ブックを閉じて開くとボタンがグレイアウトはしてないのですが使用不可でした。 デザインモードになってましたが解除不能です(クリックしても変化なし)。 2007のマクロの安全性に関する設定は (1)左上の丸いリボン(?)をクリック (2)[Excelのオプション]をクリック (3)左のメニュー欄において[セキュリティセンター]をクリック、[セキュリティセンターの設定]をクリック (4)左のメニュー欄[信頼できる場所]に[MyDocument]に設定し、[サブフォルダも信頼する]にチェック これで2003バージョン(拡張子:.xls)では問題なく動作しました。 (VBAマクロを作成したExcelファイルは全て[MyDocument]以下に保存してました) VBAコードを記述したマクロではファイルを開いたり、データを比較したりと色々な処理をしました。 ファイルを開いたのはExcel、Access、CSVデータなどです。 拡張子を「xlsm」にするとマクロ有効ブックになると思いますが他にも変化があるのでしょうか? ご存知の方、いらっしゃったらご教授願います。

専門家に質問してみよう