• ベストアンサー

エクセル マクロ

エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Sub test1()   Dim TempObject As MSForms.DataObject   Set TempObject = New MSForms.DataObject   With TempObject     .SetText Sheets("シート1").Range("A1").Formula     .PutInClipboard   End With   Set TempObject = Nothing End Sub

tee2437
質問者

お礼

簡単に出来ました、ありがとう御座いましたm(_ _)m

その他の回答 (3)

  • Kyuun
  • ベストアンサー率77% (14/18)
回答No.4

違うかもしれませんが・・・ 数式が指定してあるセルの値のみ、 クリップボードへ出力ということでしょうか? であれば Dim cb As DataObject Dim atai As String atai = Me.Cells(2, "b").Value ←コピーしたいセル Set cb = New DataObject cb.SetText (atai) ←出力したい内容 cb.PutInClipboard ←クリップボードへ出力

tee2437
質問者

お礼

参考にします、ありがとう御座いました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 #1の人も書いているから、なるべく重複は避けますが、コピーしたものを、貼り付け時に、「形式を選択して貼り付け」の「数式」の貼り付けのショートカットを作ればよいのではありませんか?私は、テキストの貼り付けのショートカットを Shift + V にしています。 コピー時に、DataObject に入れる方法がないとは言いませんが、初心者の方には分かりにくいし、この手のマクロは、おそらくは、個人用マクロブックなどに入れることになるのだろうと思います。 標準モジュール Sub Auto_Open()  Application.OnKey "+v", "PasteMacro" 'shift + V End Sub Sub PasteMacro() On Error Resume Next   If TypeName(Selection) = "Range" Then     Selection.PasteSpecial _      Paste:=xlPasteFormulas   End If End Sub

tee2437
質問者

お礼

出来ました!ありがとう御座いました。

  • papiyonys
  • ベストアンサー率30% (53/174)
回答No.1

文字列のみのコピーという意味がよくわかりませんが、たぶん、セルの書式はコピーしないで数式のみをコピーしたいということだと解釈します。 エクセルには形式を選択して貼り付ける機能があり、数式のみを貼り付けることができます。しかし、形式を選択してコピーする機能はありません。 貼り付けは任意でするとのことですので、貼り付けするときに「形式を選択して貼り付け」を右クリックで選択して、数式にチェックして実行すればできるのではないかと思います。 老婆心かもしれませんが、コピーするだけであればマクロを使うほどのどことではないと思います。何をやりたいか分かりませんが、マクロなしでもできるような気がします。

tee2437
質問者

お礼

はい、ありがとう御座いました

関連するQ&A

  • エクセルのマクロでクリップボードの使い分け。

    マクロ初心者です。任意のシートの任意の列(先に選択しておきます。)とそのシートのA列を特定のシートの2列に並べてコピーしたいのですが、クリップボードを使ってマクロ記録をしても、実行すると貼り付けの段階でエラーが起こります。クリップボードの中身を一つ目のデータ、二つ目のデータというように、選択して貼り付けすることは無理なのでしょうか。あるいは、一つ目のデータをコピー・貼り付けした後、元の任意のシートに戻る方法はないでしょうか。どなたか教えてください。よろしくお願いします。Excel2000を使っています。

  • コピーした文字列を現在開いているシート名にセットしたい

    現在開いているシート名を、クリップボードにある(?)文字列に 書き換える(?)マクロをつくりたいです。例えば、 (1) セルA1に、「aaa111」と入力されているとします。 (2) A1セルをダブルクリック(ないし、数式バーから必要な文字列だけを選択)します。 (3) 「111」だけをコピー(Ctrl+C)します。 (4) 「Sheet1」のタブをWクリックします。 (5) 貼り付け(Ctrl+V)により「Sheet1」が「111」に書き換えられます。 (6) Enterキーで確定します。 参考までに今の動作をマクロ記録してみると、次のようになったのですが、 「111」だけをコピーしたつもりなのに、「aaa111」がクリップボードに 格納されてしまっています。 Sub Macro1()   ActiveCell.FormulaR1C1 = "aaa111"   Sheets("Sheet1").Select   Sheets("Sheet1").Name = "111" End Sub 任意のセルをダブルクリックして 必要な文字列(=シート名にしたい文字列)だけをコピーし、 マクロを実行(ショートカットキーを押下)するだけで サッと書き換わるイメージですが、実現可能でしょうか。 よろしくお願い致します。

  • エクセルのデータ入力をマクロで行う方法は?

    はじめまして。初めて質問させていただきます。 Excelで作業を行っていたのですが、マクロ(VBA?)で分からないことが出てきました。 Sheet1のQ6セルとQ7セルが結合されています。そこにはデータ(数式)が入力されています。 同様に、Q8とQ9、Q10とQ11・・・というように、データ(数式)が続いています。データ数は300個です。 他のシート(Sheet2)の A4セルから下に、先程のQ6セルのデータ A5セルにQ8のデータ・・・ というように書きたいのです。 これをマクロを組んで行うことは出来るのでしょうか? さらに、Sheet1で数式だったデータを文字列で保存できるとなお嬉しいです。 マクロ初心者ですいませんが、皆様のお知恵をお貸しください。よろしくお願いいたします。

  • エクセル【マクロ】について

    初心者です。 エクセルでシート1のA1からA10まで決めた文字(abc)という文字を検索して、検索文字があるセルの1行をコピーしてシート2のA1から下へ貼り付けるというマクロ(VBA)を作成したいと考えています。 詳しい方、よろしくお願いします。

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • Excel データの一部を別シートにコピー

    Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。

  • エクセル コピー ペースト 形式 すべて  マクロ

    エクセルの同じシート内で、セルをコピーし、他のセルにペーストするマクロを利用しております。 Worksheets("data").Range("A45").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False しかし、このマクロでは、ペーストする際に、「形式を選択して貼り付け」の「値」のみが貼り付けられてしまいます。 数式を残した状態でペーストしたいので、「すべて」の状態で貼り付け希望です。 なお、このシートは表示しない状態で使用するため、シートを選んでセルを選択してコピーする方法はできません。(マクロでエラーとなってしまいます。) どうか、よろしくお願いします。

  • エクセルのブック間で値のみコピー

    エクセル 2003使用です。 エクセルのブック間におけるシートのコピーについてお願いします。 Book.Aのシート1の各セルは、関数の数式で入力(出力)されています。 このシートをコピーして、Book.Bにペーストしたいのですが、 コピーは、関数計算後の”結果の文字列”で行いたいです。 Book.Aのシート全体をコピーして Book.Bのシートに「形式を選択して貼り付け」 → 「値」 で可能なのですが、シート数が多いので困っています。 Book.Aのシートタブを右クリックして「移動またはコピー」で シートのコピーをすると、数式でコピーされてしまいます。 この方法で、値のみコピーのような方法はありませんでしょうか? よろしくお願いします。

  • エクセル値の貼り付け

    数式及び関数を多数使用しているSheet1があるとします。(ほとんどが表) 最終的にこれは元請けにエクセルデータとして提出します。 しかし、提出する際には各セルが数式及び関数が入った状態ではなく、文字列(値)としの状態で提出したいと考えています。 一度、Sheet1をコピーしてSheet1(2)をつくり、そのなかの文字及び数式を削除し、表(罫線)だけの状態としました。そしてSheet1を全体を範囲指定しSheet1(2)に『形式を選択して貼り付け→値』としようとしたのですが、『この操作には、同じサイズの結合セルが必要です』とエラー表示がでて貼り付けできませんでした。ほかにも列を指定したりだとかA1から範囲指定したりだとかいろいろ試しましたが結果は同じでした。 おそらく原因は、表の中にいろいろな形でセルを結合しているからだと思います。当然、ひとつのセルでやれば値だけの貼り付けはできます。しかし膨大な表なのでそういう訳にもいきません。 なにかいい方法はありませんか。

  • エクセルのマクロの登録について

    エクセルのマクロ登録についてご質問です。 エクセルでマクロを登録したいのですが、 D7~D49まで自動で数式が反映するようにしてあります。 マクロのボタンを作成し、そのボタンを押すとコピーを選択した状態になるようにしてあります。 これが、すぐよこのE列~AH列まで日付が並んでおり、D7~D49に反映させたデータを 対応する日付の下に毎日値貼り付けをしている常態です。     D      E     F     G   自動反映   9/1   9/2   9/3 7   ~ 49 ボタンひとつでコピーした状態ではなく、その対応した日付の下に値貼り付けすることはできますでしょうか。 これがシート1、シート2、シート3、シート4まで あるのですが、ボタンひとつで登録するようにできますでしょうか。 どなたかご回答よろしくお願い致します。

専門家に質問してみよう