[[20100121145642]] 『シート保存』(tt) ページの最後に飛ぶ

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

 

『シート保存』(tt)
 よろしくお願いします。

 Sub データ保存()
    If Range("A1") = "" Then
            MsgBox " 番号を入れてください"
    Exit Sub
    End If
    Dim FName As String
    With Sheets("Sheet1").Range("A1")
        FName = "\" & .Text & ".xls"
        Range("A1").ClearContents
    End With
    ThisWorkbook.SaveAs (ThisWorkbook.Path & FName)

 End Sub
 見よう見まねでマクロを書いたのですがブックが保存されます。アクティブシートだけ
 を保存したいのですが 
 ThisWorkbook→ActiveSheetに変更してもエラーが出ます。

 アクティブシートを新しいブックにコピーしてから、
 その新しいブックを保存してください。
 (semm)

 (semm)さん大変遅くなり申し訳ありません。
 Sub シート保存()         
    Dim FName As String
    ActiveSheet.Copy
    If Range("A1") = "" Then
            MsgBox "番号を入れてください"
    Exit Sub
    End If

    With Sheets("Sheet1").Range("A1")
        FName = "\" & .Text & ".xls"
    End With
        ActiveWorkbook.SaveAs Range("A1").Value & ""
    ActiveWorkbook.Close
 End Sub
 このコードでSheet1のみ別ブックに保存は出来るのですが保存先から開くと
 このブックには他のデータソースのリンクが含まれています。
 更新する 更新しないのメッセージが表示されます。このデータはコピー元ブックのリ 
 ンクされたデータです。このメッセージを表示しないようにするにはどうすればいいの
 でしょうか?
 (tt)


 そのリンクは解除してしまっても良いのですか?
 それとも、どうなれば良いのでしょう?

 また、Sheet1に入っている数式によって
 その様なメッセージが表示されているのでしょうか?
 その場合、どの範囲に入っているのでしょう?

 こちらで同じ様なシートが作れる様に
 詳細な情報を書いてみられてはどうでしょう。

 (HANA)

 (HANA)さん 有難うございます。いつも大変なご指導お世話様です。

   Sub 展示表へ転記()
    Dim data(1 To 6)
        With Sheets("入力")
            data(1) = .Cells(2, 2)
            data(2) = .Cells(5, 2)
            data(3) = .Cells(8, 2)
            data(4) = .Cells(11, 2)
            data(5) = .Cells(14, 2)
            data(6) = .Cells(17, 2)
        End With
       With Sheets("展示表")
         .Range("X" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(1)
         .Range("C" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(2)
         .Range("BD" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(3)
         .Range("K" & .Cells(Rows.Count, 19).End(xlUp).Row).Offset(18) = data(4)
         .Range("N" & .Cells(Rows.Count, 12).End(xlUp).Row).Offset(11) = data(5)
        .Range("AX" & .Cells(Rows.Count, 12).End(xlUp).Row).Offset(11) = data(6)
        End With

 End Sub
 のコードで入力シートから展示表シートに転記し同フォルダに上記コードで展示表シー
 トのみA1をファイル名として保存しています。保存先から 勿論「入力シート」ではリン
 ク解除は出来ませんが保存先ブックを開いた時に

 このブックにはほかのデータソースのリンクが含まれております。

 ・・・・・
 ・・・・・

 更新する  更新しない  ヘルプ
 のメッセージが表示されます。このメッセージを表示させないようにしたいのです。

 (tt)


 いやいや、コードを載せられてもよく分かりません。
 タブン、そのコードは関係ないと思います。

 私が今分かっているのは
 「リンクの更新の確認が出るのだから
  どこかにリンクが有るのだろう」
 と言う事です。

 しかし、こちらではお使いのブックを見ていないので
 リンクが本当に有るのか。有るならどこにどう言った形であるのか
 分かりません。

 また、リンクは維持したままメッセージを表示のみ
 表示されないようにしたいのか
 リンクは解除してしまって良いのかも分かりません。

 ですから
  展示表シートは、数式が入っていませんか?
  展示表シートは、リンクが設定してあるオブジェクトが有りませんか?
  名前を付けて保存した時、リンクは解除されて良いのですか?
 等、お伺いしています。

 >>こちらで同じ様なシートが作れる様に
 >>詳細な情報を書いてみられてはどうでしょう。
 これに関しては、説明の段階で
  ○○セルに××と言う数式が入っている
  △△セルの上に図形が有って、リンクが設定してある
 等が挙げられてくると思って書いてみました。
 同じブックを作成して、同じコードで同じ症状が出れば
 どの様な回避方法が有るのかも考えやすいです。

 新しいブックを用意して、シート名を「入力」「展示表」に変更。
 入力シートの必要な箇所にデータを入力して、((展示表へ転記))コードを実行
 その後、((シート保存))を実行して保存したブックを開いても
 リンクの確認は出てこないと思います。

 ですから、そのメッセージが出るのは
 これまでのご説明に無い部分が原因だと思いますので
 その部分はご説明して頂くのが良いと思います。

 (HANA)

 有難うございます。
 (セル結合しています)
 sheet("入力")

    B2:D3           リスト入力します。
  B5:D6           手入力
  B8:D9           リスト入力します。
    B11:J12         手入力
    B14:D15         手入力
    B17:D18         手入力
 sheet("展示表")
    C4:S10   ←B5:D6("入力シート")
  X4:BB10  ←B2:D3
    BD4:BQ10 ←B8:D9
  N12:AH17 ←B14:D15
    AX12:BQ17←B17:D18           
    K19:BH23←B11:J12
 次のコードで転記しています
 Sub 展示表へ転記()
    Dim data(1 To 6)
        With Sheets("入力")
            data(1) = .Cells(2, 2)
            data(2) = .Cells(5, 2)
            data(3) = .Cells(8, 2)
            data(4) = .Cells(11, 2)
            data(5) = .Cells(14, 2)
            data(6) = .Cells(17, 2)
        End With
       With Sheets("展示表")
         .Range("X" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(1)
         .Range("C" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(2)
         .Range("BD" & .Cells(Rows.Count, 4).End(xlUp).Row).Offset(3) = data(3)
         .Range("K" & .Cells(Rows.Count, 19).End(xlUp).Row).Offset(18) = data(4)
         .Range("N" & .Cells(Rows.Count, 12).End(xlUp).Row).Offset(11) = data(5)
        .Range("AX" & .Cells(Rows.Count, 12).End(xlUp).Row).Offset(11) = data(6)
        End With
 展示表シートのみ同フォルダに保存しています。

 Sub シート保存()         
    Dim FName As String
    ActiveSheet.Copy
    If Range("A1") = "" Then
            MsgBox "番号を入れてください"
    Exit Sub
    End If

    With Sheets("Sheet1").Range("A1")
        FName = "\" & .Text & ".xls"
    End With
        ActiveWorkbook.SaveAs Range("A1").Value & ""
    ActiveWorkbook.Close
  End Sub
 コピー元の展示表シートには入力シートからのデータがリンクされていますのでコピー
 先の展示表にも入力シートからのデータがリンクされた形になっています。
 >また、リンクは維持したままメッセージを表示のみ
 表示されないようにしたいのか
 リンクは解除してしまって良いのかも分かりません。
 コピー先の展示表はリンク解除をしたいのです。
 >名前を付けて保存した時、リンクは解除されて良いのですか?
 はい そのようにしたいのです。
 うまく説明が出来ませんがご理解いただけたでしょうか?
 (tt)


 この部分をもう少し教えて下さい。

 >コピー元の展示表シートには入力シートからのデータがリンクされていますので

 何処にリンクが有るのですか?
    >C4:S10   ←B5:D6("入力シート")
  >X4:BB10  ←B2:D3
    >BD4:BQ10 ←B8:D9
  >N12:AH17 ←B14:D15
    >AX12:BQ17←B17:D18           
    >K19:BH23←B11:J12
 これらのセルには、コードで転記しているのですよね?
 でしたら、リンクはしてないと思いますが。。。

 それとも、この範囲は「=入力シート!B5」の様にリンクがさせてあって
 コードで転記するのは別のセルの話でしょうか?

 入力シートのデータを表示させるセルが決まっているなら
 「.Cells(Rows.Count, 4).End(xlUp).Row」なんてする必要もなさそうですし。。。?

 一つ入力したら、その一つを転記して、別ブックとして保存
 と言う事でも無いのですか?

 一つ入力したら、その一つを転記して、次のデータを入力。
 マクロの実行で 転記してある続きに転記して、一区切りしたら
 別ブックとして保存  って事なのかな。。。?

 済みませんが、処理の流れも教えてみてもらえませんか?
 どう言った事に成っているのか また、成れば良いのか
 分かるように成るかも知れません。

 (HANA)
 ----
 (HANA)さん 有難うございます。用語を誤認識しているのでしょうか?
 Sheet1A1をSheet2B1に転記(貼付け)これをリンクしているといわないのでしょうか?
 もし間違っているのでしたらごめんなさい。
 >一つ入力したら、その一つを転記して、次のデータを入力。
 マクロの実行で 転記してある続きに転記して、一区切りしたら
 別ブックとして保存  って事なのかな。。。?

    C4:S10   ←B5:D6("入力シート")
  X4:BB10  ←B2:D3
    BD4:BQ10 ←B8:D9
  N12:AH17 ←B14:D15
    AX12:BQ17←B17:D18           
    K19:BH23←B11:J12
 6つをすべて入力して転記しております。入力シートから転記された展示シートを上記 
 コードで別ブックに展示シートのみ保存しています。別ブックに保存された展示シート 
 のデータは数式バーにはセルのアドレスが表示されます。
 コピー 形式を選択して貼付けで 値 を選択しますと アドレスではなくデータ(文 
 字)が表示されます。データのすべてをこのように変更して上書きすると

 このブックにはほかのデータソースのリンクが含まれております。

 ・・・・・
 ・・・・・

 更新する  更新しない  ヘルプ
 このメッセージは出なくなります。
 (tt)

 (HANA)さん その後このファイルをテンプレート .XLTで保存し編集してもエラーメッセ
 ージが出ません。いろいろと長くお付き合い頂き有難うございました。
 (tt)


 >Sheet1A1をSheet2B1に転記(貼付け)これをリンクしているといわないのでしょうか?
 転記は転記ですよね。
 リンクとは違うと思います。

 例えば、A1セルに「イロハ」と入れて
 A1セルをコピーして、B1セルに貼り付けると 転記
 B2セルに =A1 と言う式を入れると リンク
 B1セルもB2セルもどちらも「イロハ」と成ります。

 ここで、A1セルの文字を「●△■」に変更した場合
 コピー・貼り付けをしたB1セルは「イロハ」のままですが
 A1セルにリンクさせているB2セルは「●△■」に変わります。

 「展示表シートのC4セルに 入力シートのB5セルをリンクさせてある」
 と言えば、通常は、
  展示表シートのC4セルに =入力!B5 の様な式が入っている
 事を表すと思います。

 今回はマクロでデータを書き込んでいるので
 リンクが設定されているとは思えないのですが。。。

 解決されたようですが、もし宜しければ教えて下さい。

 >別ブックに保存された展示シート 
 >のデータは数式バーにはセルのアドレスが表示されます。
 これは、((展示表へ転記))マクロを実行した後で既に
 数式が入っている と言う事ですか?

 それとも、その段階では値が入っているのに
 このシートだけ保存しようと((シート保存))マクロを実行すると
 勝手に数式に成っているのでしょうか?

 何となく
  このマクロを実行して転記しているのではなく
  数式で入力シートの所定のセルを参照する式が入っているので
  入力シートに入力した物が表示されている状態
 って感じがするのですが。。。?

 (HANA)


 ちなみに、ひとつ入力したらそれを転記して保存する
(転記先のセル番地は決まっている)のなら、
 End(xlUp).Row で、セルを探す必要は無いと思いますし
 どうせひとつずつしか書き出せないのですから
 変数に入れる利点は無いように思います。

 入力シートをアクティブにした状態で実行するなら
 '------
Sub 展示表へ転記()
    With Sheets("展示表")
        .Range("X4").Value = Range("B2").Value
        .Range("C4").Value = Range("B5").Value
        .Range("BD4").Value = Range("B8").Value
        .Range("K19").Value = Range("B11").Value
        .Range("N12").Value = Range("B14").Value
        .Range("AX12").Value = Range("B17").Value
    End With
End Sub
 '------
 こんな事でも良いのですか?

 どう言った事に成れば良いのか、今一分かっていません。
 この結果が私の認識ですので、違っている場合は
 それを修正して頂けると、話が分からない部分が
 明瞭に成ってくるのではないかと思います。

 ただ、この様にセルが決まっているなら
 「入力したら、転記マクロを実行して保存マクロを実行する」
 なんて、二工程にすると どちらか片方を忘れそうなので

 展示表シートへは数式を入れてセルを参照する様にして
  (転記マクロは使わない事にする)
 保存のマクロで、シートコピー後
 ◆所定のセルを数式から値に変更した後
  (現在のコードに、↑の処理を追加する)
 保存する様にしておいたほうが
 良いのかもしれません。

 (HANA)

 (HANA)さん 有難うございます。やはりテンプレートにしても不都合がでます。
 今日は時間が取れませんので元に戻して解決することのほうがよい結果になるかも知れ
 ません
 (tt)

 (HANA)さん色々ご親切に有難うございます。浅はかなスキルで転記・リンクの違いも理
 解せず申し訳ありません。(HANA)さんのご提示頂いたコードで解決いたしました。今後 
 もご活躍をお祈りしております。また、このファイルについてまたお教えを請うことも 
 あるかと思いますのでよろしくお願いします。
 (tt)

 えっと。。。転記をマクロで行う事にされたようですが
 >>二工程にすると どちらか片方を忘れそうなので
 の部分は問題無いのですか?

 因みに、((シート保存))の処理の流れですが
 先にコピーをして、A1セルの入力確認をしています。
 これは、A1セルの入力確認後に コピーした方が
 良いのではないかと思いますが・・・?

 でもって、
  転記マクロではなく、数式でリンクをさせておいて
 コピー後に
        Range("C4:BD12").Value = Range("C4:BD12").Value 
 で値にして保存しておけば(↑おおざっぱなコードですが。。。)
 次に保存したブックを開いたときに
 リンクの確認が出ることもないと思います。

 (HANA)


コメント返信:

[ 一覧(最新更新順) ]


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