[[20060908214153]] 『初めまして。お助け下さい』(たろう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『初めまして。お助け下さい』(たろう)

只今仕事の関係でマクロを組んでいるのですが…

ブックの中の一部のシートを別ブックにコピーし、それを別名で(自動命名)保存しているのですが、その別保存したシートを開いた時に「このブックには、他のデータソースへのリンクが設定されています」とアラートが出ます。

この表示を出さないようにコピー&別名保存するにはどのような記述をどこにすれば宜しいでしょうか。

  Sub Auto_Open()
    Application.ScreenUpdating = False
    Workbooks.Open , UpdateLinks:=0
    ThisWorkbook.Close
    Application.ScreenUpdating = True
  End Sub

試しに、上記のような記述をそのブックの1枚目のシートに記述しましたが…ダメでした。素人で申し訳ありませんが、回答のほど宜しくお願い致します。


下記のコードではどうですか?
一度保存してから試してください
このBookと同じ所に保存されます

Sub M_HOZON()

Dim myPATH As String

myPATH = ThisWorkbook.Path & "\Hoge.xls"

Workbooks.Add

With ActiveWorkbook

    .Worksheets("Sheet1").Name = "保存先"
    ThisWorkbook.Worksheets("Sheet1") _
            .Cells.Copy .Worksheets("保存先").Range("A1")
    .Close savechanges:=True, Filename:=myPATH, _
            RouteWorkbook:=False
End With

End Sub

(hime)


早急なご回答ありがとうございます。
この記述は、元のブックで保存するボタンに記述すれば宜しいのでしょうか。
ちなみに申し遅れましたが、ユーザーフォームのコマンドボタンで「コピー&別名保存」をしています。

ちなみにそのコマンドボタンの記述は以下のとおりです。

Private Sub HozonToziru_Click()

Application.DisplayAlerts = False

ActiveSheet.Unprotect

Dim pt As String, fn As String, fn2 As String

pt = "C:\Documents and Settings\マネージャー\デスクトップ\15時統計"

With Sheets("<15時> 人員統計表")

fn = .Range("AE1").Value

fn2 = .Range("AJ1").Value & .Range("AK1").Value

End With

Sheets(Array("メニュー", "<15時> 人員統計表", "グラフ元データ", "本店グラ
フ", "清水店グラフ", "静岡店グラフ", "袋井店グラフ", "豊川店グラフ", "大橋通店
グラフ", "武豊店グラフ", "○○店グラフ")).Copy

Sheets("グラフ元データ").Select

ActiveSheet.Protect

Sheets("本店グラフ").Select

ActiveSheet.Protect

Sheets("グラフ元データ").Select

ActiveSheet.Protect

Sheets("本店グラフ").Select

ActiveSheet.Protect

Sheets("清水店グラフ").Select

ActiveSheet.Protect

Sheets("静岡店グラフ").Select

ActiveSheet.Protect

Sheets("袋井店グラフ").Select

ActiveSheet.Protect

Sheets("豊川店グラフ").Select

ActiveSheet.Protect

Sheets("大橋通店グラフ").Select

ActiveSheet.Protect

Sheets("武豊店グラフ").Select

ActiveSheet.Protect

Sheets("○○店グラフ").Select

ActiveSheet.Protect

Sheets("<15時> 人員統計表").Select

ActiveSheet.Protect

Sheets("メニュー").Select

ActiveWorkbook.SaveAs Filename:=pt & "\" & IIf(fn = "", fn2, fn)

ActiveWorkbook.Close

Application.DisplayAlerts = True

Unload Toukei15Dlg

Sheets("<15時> 人員統計表").Select

ActiveSheet.Protect

Sheets("TopPage").Activate

End Sub


 回答ではなく申し訳ないのですが、ここへの入力方法です。
 (ご存じでしたらスルーして下さい)

 −−−−−−−−−−−−−−−−−−

 テキスト整形のルール

  通常は入力した文字がそのまま出力されますが、以下のルールに従ってテキスト整形を行うことができます。
   ・空行は段落の区切りとなります。 
   ・HTMLのタグは書けません。 
   ・----のようにマイナス4つがあると、水平線になります。 
   ・行頭が半角スペースで始まっていると、その段落は整形済み扱われます。
     プログラムを書き込むときに使うと便利です。 
   ・http://www.hyuki.com/ のようなURLは自動的にリンクになります。 

 −−−−−−−−−−−−−−−−−−

 (HANA)


あっ、申し訳ありません!(−−;

ありがとうございます!

(たろう)


Sheets(Array("メニュー", "<15時> 人員統計表", "グラフ元データ", "本店グラフ", "清水店グラフ", "静岡店グラフ", "袋井店グラフ", "豊川店グラフ", "大橋通店グラフ", "武豊店グラフ", "○○店グラフ")).Copy

とシートをコピーするのではなく

 Private Sub CommandButton1_Click()
 Dim myArr As Variant
 Dim i As Variant

 myArr = Array("メニュー", "<15時> 人員統計表", "グラフ元データ", "本店グラフ", _
    "清水店グラフ", "静岡店グラフ", "袋井店グラフ", "豊川店グラフ", "大橋通店グラフ", _
        "武豊店グラフ", "○○店グラフ")

 Workbooks.Add

 For Each i In myArr
    Worksheets _
        .Add(after:=Worksheets(Worksheets.Count)) _
        .Name = (i)
 Next

 Application.DisplayAlerts = False
 Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
 Application.DisplayAlerts = True

 End Sub

 のように新しいBookを作って元シートをコピーして
 新しいBookのしーとに貼り付けすればどうでしょう

 とりあえずコードは新しいBookを作る所だけですが
 試してみて下さい

(hime)


 とりあえず作ってみました
 保存先はBookと同じ所にしています。
 一度保存して下さい
 ファイル名が分らなかったのでHoge.xlsで保存しています。
 シート名は元Bookと保存するBookと同じにしています。
 勘違いならすいません

 Dim myArr As Variant
 Dim i As Variant
 Dim pt As String
 Dim fn As String
 Dim fn2 As String

 'pt = "C:\Documents and Settings\マネージャー\デスクトップ\15時統計"
 pt = ThisWorkbook.Path & "\Hoge.xls"

 With Sheets("<15時> 人員統計表")
    fn = .Range("AE1").Value
    fn2 = .Range("AJ1").Value & .Range("AK1").Value
 End With

 myArr = Array("メニュー", "<15時> 人員統計表", "グラフ元データ", "本店グラフ", _
    "清水店グラフ", "静岡店グラフ", "袋井店グラフ", "豊川店グラフ", "大橋通店グラフ", _
        "武豊店グラフ", "○○店グラフ")

 Application.ScreenUpdating = False
 Workbooks.Add
 With ActiveWorkbook
    For Each i In myArr
        .Worksheets _
            .Add(after:=.Worksheets(.Worksheets.Count)) _
            .Name = (i)

        ThisWorkbook.Worksheets(i) _
                .Cells.Copy .Worksheets(i).Range("A1")
        .Worksheets(i).Protect
    Next

    Application.DisplayAlerts = False
    .Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
    Application.DisplayAlerts = True

    .Close savechanges:=True, Filename:=pt, _
            RouteWorkbook:=False
 End With

 Application.ScreenUpdating = True

(hime)


申し訳ありません、まだ試していないのですが、早速やってみます!
ここの方は親切な方ばかりですね…ありがとうございます!(たろう)

お世話になります。保存先なのですが、デスクトップの「15時統計」というファイルの中に保存します。
また、保存名はシート名『<15時> 人員統計表』の『AE1』と『AJ1』と『AK1』のセル内容を結合して保存名としています。
この場合、どのように記述した方が宜しいでしょうか。(たろう)


 Dim myArr As Variant
 Dim i As Variant
 Dim pt As String
 Dim fn As String
 Dim fn2 As String

 pt = "C:\Documents and Settings\マネージャー\デスクトップ\15時統計\"
'pt = ThisWorkbook.Path & "\Hoge.xls"
 With Sheets("<15時> 人員統計表")
    fn = .Range("AE1").Value & .Range("AJ1").Value & .Range("AK1").Value & ".xls"
 End With

 fn2 = pt & fn

 myArr = Array("メニュー", "<15時> 人員統計表", "グラフ元データ", "本店グラフ", _
    "清水店グラフ", "静岡店グラフ", "袋井店グラフ", "豊川店グラフ", "大橋通店グラフ", _
        "武豊店グラフ", "○○店グラフ")

 Application.ScreenUpdating = False
 Workbooks.Add
 With ActiveWorkbook
    For Each i In myArr
        .Worksheets _
            .Add(after:=.Worksheets(.Worksheets.Count)) _
            .Name = (i)

        ThisWorkbook.Worksheets(i) _
                .Cells.Copy .Worksheets(i).Range("A1")
        .Worksheets(i).Protect
    Next

    Application.DisplayAlerts = False
    .Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Delete
    Application.DisplayAlerts = True

    .Close savechanges:=True, Filename:=fn2, _
            RouteWorkbook:=False
 End With

 Application.ScreenUpdating = True

 でどうでしょう?

 pt・fn・fn2を参考にして下さい
 (hime)


何度もありがとうございます。
さて…保存ボタンに上記を記述したのですが、今度は必要なマクロとグラフが抜けた
状態でコピーされてしまいました。。諦めて他の方法を考えた方がいいのでしょうか。。(たろう)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.