Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
『エクセルファイル名』と同じファイル名で、『メモ帳』保存をループさせたいです
投稿日時: 18/09/20 17:51:21
投稿者: dada

結構ググっり途中まで作ったのですが行き詰まり、ここへたどり着きました。
VBAを始めたばかりで、ド初心者で勉強中です。
初心者で恐縮ですが、どなたかお助けください。
  
■やりたい事
エクセル ファイル名「a.xls」「b.xls」「c.xls」・・・というファイルが約100個ぐらいあるとします。
 
@エクセルa.xlsのセルc2~C51をコピーして、
Aメモ帳に貼り付け
Bファイル名「a.txt」で指定フォルダへ保存
※メモ帳ファイル名をエクセルファイル名と同じで保存したいです。
(保存場所はどこでもOK)
Cそれをb・cと約100回同じ操作を繰り返したいです。
  
■わからない点
@エクセルファイル名と同じファイル名でメモ帳を保存
 
Aそのループさせ方。
※doやfor文がちゃんと理解できていないんだと 涙
 
一応途中まで作ったものを載せます。
-------------------------------------------------------------------
Sub memo()
  
Dim fol As String
Dim f As String
Dim wb As Workbook
Dim ret As Long
  
fol = "C:\Users\指定フォルダ"
f = Dir(fol & "\*.xls")
  
Do While f <> "" '空白でなければループ開始
  
Set wb = Workbooks.Open(fol & "\" & f) 'エクセル開く
    f = Dir() 'たぶんfを空に?
    ActiveSheet.Range("C2:C51").Select '50番目まで選択
    Selection.copy 'コピーエクセル側
        ret = Shell("Notepad.Exe", vbNormalFocus) 'メモ帳オープン
        AppActivate ("無題 - メモ帳") '無題のメモアクティブ
        CreateObject("Wscript.Shell").SendKeys "^v" 'コントロール+V
        SendKeys "%FA" 'メモ帳を保存
                
Loop
  
  
Set wb = Nothing
End Sub
  
※色々ツッコミどころ満載のコードだと思います。

回答
投稿日時: 18/09/20 18:06:07
投稿者: sk

引用:
『エクセルファイル名』と同じファイル名で、『メモ帳』保存をループさせた

引用:
Aメモ帳に貼り付け
Bファイル名「a.txt」で指定フォルダへ保存

「任意のセル範囲のデータを新規テキストファイルとして保存したい」
とおっしゃった方が話が早いのではないかと思います。
(わざわざメモ帳( notepad.exe )を仲介させる必要もないでしょう)

投稿日時: 18/09/20 18:36:52
投稿者: dada

SK様
ありがとうございます!!
任意のセルの範囲を、新規テキストファイル保存
という事を思い付きませんでした 汗汗
この方法で調べてみます!

回答
投稿日時: 18/09/20 18:53:52
投稿者: Suzu

こんにちは。
 
ファイルを開く までは出来ていらっしゃるので
・C1〜C51以外を削除
・ファイルを名前を付けて保存(txt)
・ブックを保存無しで閉じる
上記を繰り返せば良いでしょう。
 
C1〜C51以外を削除が 範囲不定等で難しいなら
・別に新規ワークブックを用意し、C1〜C51を その新規ワークブックに貼りつけ
・ファイルを名前を付けて保存(txt)
・新規ブックのセル内容をクリア
の繰り返しで良いでしょうね。

投稿日時: 18/09/21 15:46:05
投稿者: dada

Suzu様
回答ありがとうございます!
今までメモ帳に固執していた自分が恥ずかしいです。
いただいた内容でできそうな気がしてきました!
本当にありがとうございます!

投稿日時: 18/09/25 17:48:30
投稿者: dada

無事できました!
皆様本当にありがとうございました!!