アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロ(VBA)初心者です。
ここ数日自力で調べてみたのの、結局解決できず投稿いたします。

以前行った質問と似ているのですが、
下記ルールの③,④も加わっており、
マクロの先輩方に教えていただきたいです。

エクセルで選択した行のみテキストで掃き出すマクロ(VBA)を作りたいです。
前後の行にデータが記載されていても「選択した行のみ」ということです。
掃き出す際に以下のルールも加えます。

【ルール】
① セル内の数字やテキストを「"」(ダブルクォーテーションマーク)で囲み、セルとセルの間は「,」(カンマ)でつなぐ。例:"1","2","3"
② セル内が空欄の際は、「""」とする。
③ 2行以上選択された場合は、行と行のデータを改行してつなぐ。
④ 保存するファイル名は固定(「Sumple.txt」など)でかまわない。

以上です。
よろしくお願いいたします。

質問者からの補足コメント

  • No.2の回答者の方へ

    便利なアイデアをありがとうございます。
    ただそのままマクロに登録したところ画像のようなエラーが出てしまいました。
    何か設定に不足があるのでしょうか。
    初心者なものですいません。

    「エクセルで選択した行をテキストで掃き出す」の補足画像1
      補足日時:2017/03/24 11:31
  • No.3の回答へ

    できました!
    すごいですね。ありがとうございます。
    右クリックのメニューからマクロを実行するのはとても便利ですね。

    すいません、もしできたら最後にこちらについて教えてください。

    現在だと、テキストの保存先が私の場合「C:\Users\●●\Documents」になってしまいます。
    デスクトップに保存するにはどう記述したら良いでしょうか。

    よろしくお願いいたします。

      補足日時:2017/03/24 16:14

A 回答 (3件)

まったくの私のミスです。


意味のない行がありました。

Sub ClickMenuAdd()
Dim Con As Control ←★意味のない行です。
''右クリックメニュー登録

Dim Con As Control
の部分の行を削除して、Ctrl + s で保存してしまってください。
再起動すれば、問題なく通ります。

なぜ、自分の所でエラーが出なかったのか、気づかなかったのか、お詫びいたします。
    • good
    • 0

こんばんは。



想像しているものとは違うかもしれませんが、これは便利だと思います。
マウス・右クリックメニューに入れました。


Option Explicit
Sub Auto_Open()
'マクロは、ブックを開くと同時に設定されます。
'右クリックメニュー
 Call ClickMenuAdd
End Sub
Sub PickupSentences()
'テキスト出力
 Dim Rng As Range
 Dim Ar As Variant
 Dim buf As String
 Dim fn As Variant
 Dim i As Long, rw As Object
 If TypeName(Selection) = "Range" Then
  Set Rng = Selection
  Dim fNo As Integer
  fn = "Sample.txt" '出力名
  fNo = FreeFile()
  Open fn For Output As #fNo
  For i = 1 To Rng.Rows.Count
   Set rw = Rng.Rows(i)
   Ar = rw.Value
   Ar = Application.Index(Ar, 0, 0) '1次元化
   buf = Join(Ar, """, """)
   Print #fNo, """" & buf & """"
   buf = "": Ar = ""
  Next
  Close #fNo
  Beep
 End If
End Sub

Sub ClickMenuAdd()
Dim Con As Control
''右クリックメニュー登録
  With Application.CommandBars("CELL")
   On Error Resume Next
   .Controls("テキスト出力").Delete
   On Error GoTo 0 '--------- //ここまでは、登録を削除して、やり直し
    With .Controls.Add _
     (Type:=msoControlButton, Before:=7, Temporary:=True)
     .BeginGroup = False
     .Caption = "テキスト出力"
     .OnAction = "PickupSentences"
   End With
   .Controls("テキスト出力").FaceId = 2
  End With
End Sub
Sub ClickMenuDelete()
''右クリックメニュー登録削除(Excelが終了すると消えますから不要です)
  With Application.CommandBars("CELL")
   On Error Resume Next
   .Controls("テキスト出力").Delete
   On Error GoTo 0
 End With
End Sub

右クリックのメニューに「テキスト出力」と出てきます。
「エクセルで選択した行をテキストで掃き出す」の回答画像2
    • good
    • 0

http://www.excel-excel.com/tips/vba_198.html
こんなのありました。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
参照してみます。

お礼日時:2017/03/24 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!