Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6553 / 13646 ツリー ←次へ | 前へ→

【44571】シートを別フォルダにコピーしコピーしたファイル内の計算値を消す方法 vang 06/11/22(水) 1:14 質問[未読]
【44572】Re:シートを別フォルダにコピーしコピーし... Mar 06/11/22(水) 6:49 発言[未読]
【44573】Re:シートを別フォルダにコピーしコピーし... vang 06/11/22(水) 7:03 質問[未読]
【44574】Re:シートを別フォルダにコピーしコピーし... Mar 06/11/22(水) 7:54 発言[未読]
【44575】Re:シートを別フォルダにコピーしコピーし... ichinose 06/11/22(水) 8:35 発言[未読]
【44597】Re:シートを別フォルダにコピーしコピーし... vang 06/11/22(水) 20:50 お礼[未読]
【44576】Re:シートを別フォルダにコピーしコピーし... りん 06/11/22(水) 9:07 回答[未読]

【44571】シートを別フォルダにコピーしコピーした...
質問  vang  - 06/11/22(水) 1:14 -

引用なし
パスワード
   お世話になります。
息詰まってしまいましたのでどなたかご指導いただけないでしょうか。

計算ファイルを作って計算をさせているのですが、計算後(1日の入力が全部済んだら)
1つのシートをコピーして別フォルダに名前をつけて保存しているのですが、
その際そのコピーしたシートに元ファイルで計算した計算式がそのまま張り付いてしまいコピーしたものを開くと自動リンクが設定されてしまいます。
私の理想としてはコピーしたシートには計算式を削除して数値だけを残したいのですが。


Private Sub CommandButton2_Click()
dir_1 = "O:\ " '※保存フォルダの設定
  
  Sheets("sss").Select '計算シート名
  Sheets("sss").Copy
  ActiveWorkbook.SaveAs Filename:=dir_1 & Format(Date - 1, "mm月dd日") & ".xls" '指定したシートに名前をつけて指定ファルダに貼り付け
  MsgBox "保存しました。"
  
  ActiveWorkbook.Close
  
End Sub

現在は↑のような処理をしています。

Sheets("sss").Select
セル範囲 = "C6:C29" '※計算値範囲
Range(セル範囲).Value = Range(セル範囲).Value '※計算値を削除し数値を残す

このような処理を考えたのですがこれだと元ファイルの式まで消してしまいうまく処理できない状況です。
どなたか解決策がありましたらご指導下さい。
よろしくお願いします。

【44572】Re:シートを別フォルダにコピーしコピー...
発言  Mar  - 06/11/22(水) 6:49 -

引用なし
パスワード
   ▼vang さん:
おはようございます。
計算式を残す必要があるのですから・・・

 選択範囲.SpecialCells(xlCellTypeConstants, 23).ClearContents
のコードにされては如何でしょう。
計算式は残ります。定数のみ削除できます。

【44573】Re:シートを別フォルダにコピーしコピー...
質問  vang  - 06/11/22(水) 7:03 -

引用なし
パスワード
   Mar さん
おはようございます。ご返信ありがとうございます。
教えていただいたコードなんですがどのように使用すればよろしいのでしょうか。

デバックが出てしまいうまくいきません。
このコードはコピーしたファイルの計算式は削除され数値のみ残り、元ファイルの
計算式はそのまま残るようなコードなのでしょうか。

すいません。もう少しご指導いただけないでしょうか。

【44574】Re:シートを別フォルダにコピーしコピー...
発言  Mar  - 06/11/22(水) 7:54 -

引用なし
パスワード
   ▼vang さん:
Marです。
シュミレーションをして動作をさせていませんが、
多分最初のシートをTemplate的に扱いたいのだと思います。

新しいエクセルシートで
C5に「=A5*B5」を入れてください
例えばA5に5、B5に7を入れるとC5は35です

次のマクロを動作してください。
計算式のセルは計算式を残したまま、A5とB5は空白になりますね、
これを利用してください。コピー元のシートに使用することになるかと思います。
  Range("A5:C5").SpecialCells(xlCellTypeConstants, 23).ClearContents

ちなみにワークシートでF5を押し、→セルの選択 で「コメント」「定数」
「数式」など各種選択できます。これをマクロに使用して、望みの
選択が出来ます。試してみてください。

【44575】Re:シートを別フォルダにコピーしコピー...
発言  ichinose  - 06/11/22(水) 8:35 -

引用なし
パスワード
   ▼vang さん:
おはようございます。

>Sheets("sss").Select
>セル範囲 = "C6:C29" '※計算値範囲

>Range(セル範囲).Value = Range(セル範囲).Value '※計算値を削除し数値を残す

↑このコードをコピー元のシートではなく、
Sheets("sss").Copyでコピーしたシートに対して
行ってみてはいかがですか?

【44576】Re:シートを別フォルダにコピーしコピー...
回答  りん E-MAIL  - 06/11/22(水) 9:07 -

引用なし
パスワード
   vang さん、おはようございます。

>私の理想としてはコピーしたシートには計算式を削除して数値だけを残したいのですが。

>Private Sub CommandButton2_Click()
>dir_1 = "O:\ " '※保存フォルダの設定
>  
>  Sheets("sss").Select '計算シート名
>  Sheets("sss").Copy
  '数式を持っていきたくないということのようなので、この部分を追加
  With Application.ActiveSheet.Cells
   .Copy
   .PasteSpecial Paste:=xlPasteValues '値貼り付け
  End With
  Application.CutCopyMode = False
  
>  ActiveWorkbook.SaveAs Filename:=dir_1 & Format(Date - 1, "mm月dd日") & ".xls" '指定したシートに名前をつけて指定ファルダに貼り付け
>  MsgBox "保存しました。"
>  
>  ActiveWorkbook.Close
>  
>End Sub

式を削除するときはSpecialCellsメソッドの引数をxlCellTypeFormulasにして選択すればいいですが、リンクしたくないだけならそのままの状態で数値に変えてしまうのが簡単です。

【44597】Re:シートを別フォルダにコピーしコピー...
お礼  vang  - 06/11/22(水) 20:50 -

引用なし
パスワード
   ▼ichinose さん,Marさん,りんさん

皆さんありがとうございます。
とても感謝です。
動きとしてはりんさんからのアドバイスが理想に近かったので、そちらを参考に
させてもらいました。
皆さんのVBAの知識に驚くばかりです。
今後も分からないことがあるかもしてませんが、その時は是非お力を
また貸していただければと思います。
ありがとうございました。

6553 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free