Excel VBA質問箱 IV

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

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


8778 / 13644 ツリー ←次へ | 前へ→

【30970】マクロ内の変数をテキスト形式で保存 green 05/11/8(火) 14:57 質問[未読]
【30976】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/8(火) 16:08 回答[未読]
【30977】Re:マクロ内の変数をテキスト形式で保存 green 05/11/8(火) 16:20 お礼[未読]
【30979】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/8(火) 16:34 発言[未読]
【31226】Re:マクロ内の変数をテキスト形式で保存 green 05/11/15(火) 10:56 質問[未読]
【31231】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/15(火) 13:10 回答[未読]
【31235】Re:マクロ内の変数をテキスト形式で保存 green 05/11/15(火) 13:33 質問[未読]
【31236】Re:マクロ内の変数をテキスト形式で保存 Jaka 05/11/15(火) 13:48 発言[未読]
【31238】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/15(火) 13:51 回答[未読]
【31240】Re:マクロ内の変数をテキスト形式で保存 green 05/11/15(火) 14:35 質問[未読]
【31242】Re:マクロ内の変数をテキスト形式で保存 Jaka 05/11/15(火) 14:58 回答[未読]
【31245】Re:マクロ内の変数をテキスト形式で保存 green 05/11/15(火) 15:34 質問[未読]
【31248】Re:マクロ内の変数をテキスト形式で保存 Jaka 05/11/15(火) 15:51 回答[未読]
【31249】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/15(火) 15:57 回答[未読]
【31250】Re:マクロ内の変数をテキスト形式で保存 Kein 05/11/15(火) 15:57 発言[未読]
【31253】Re:マクロ内の変数をテキスト形式で保存 green 05/11/15(火) 16:22 お礼[未読]

【30970】マクロ内の変数をテキスト形式で保存
質問  green  - 05/11/8(火) 14:57 -

引用なし
パスワード
   何度もお世話になっております。

今回は、マクロ内で変数を設定していますが、
その任意な変数をテキスト形式で保存する方法を教えて頂きたいのです。

A=10:B=11:C=12:D=0:E=−10・・・と言うような変数を
テキスト形式で保存したいのです。
区切りは何でも構いませんが、出来れば「,(カンマ)」の方が
良いかな?と思っています。

希望保存例
「10,11,12,0,−10,・・・」

後、そのデータの読み取りの方法も教えて頂ければ幸いです。
宜しくお願い致します。

【30976】Re:マクロ内の変数をテキスト形式で保存
回答  Kein  - 05/11/8(火) 16:08 -

引用なし
パスワード
   イマイチ意味が分かりませんが、複数の変数の値を全て連結して、文字列にすれば
良いと思います。

Sub Test_Write()
  Dim A As Integer, B As Integer
  Dim C As Integer, D As Integer, E As Integer
  Dim Ary As Variant
  Dim Buf As String
  Const MyF As String = _
  "C:\Documents and Settings\User\My Documents\Test.txt"
  '↑仮のパスです。

  A = 10: B = 11: C = 12: D = 0: E = -12
  Ary = Array(A, B, C, D, E)
  Buf = Join(Ary, ",")
  Open MyF For OutPut Access Write As #1
  Print #1, Buf
  Close #1
End Sub

などと。
>データの読み取りの方法
は、逆に Input# を使います。

Sub Test_Read()
  Dim Buf As String, StV As String
  Const MyF As String = _
  "C:\Documents and Settings\User\My Documents\Test.txt"

  Open MyF For Input Access Read As #1
  Do Until EOF(1)
   Buf = ""
   Input #1, Buf
   StV = StV & Buf & ","
  Loop
  Close #1
  MsgBox Left$(StV, Len(StV) - 1)
End Sub

【30977】Re:マクロ内の変数をテキスト形式で保存
お礼  green  - 05/11/8(火) 16:20 -

引用なし
パスワード
   早速のお答え、ありがとうございます。
本日・明日と時間がありませんので、
明後日にマクロに組み込んでみたいと思います。

しかし、文字列にしてからの保存には全く気付きませんでした。
これでしたら十分に納得できる物が出来そうです。

本当にありがとうございました。

【30979】Re:マクロ内の変数をテキスト形式で保存
発言  Kein  - 05/11/8(火) 16:34 -

引用なし
パスワード
   あ、もしかして読み出しの方は、個々の変数の値を取得(かつ元の数値として)したい
という意味なのでしょーか ? それならワークシートのA列に落とすとして

Sub Test_Read()
  Dim i As Integer
  Dim Buf As String
  Const MyF As String = _
  "C:\Documents and Settings\User\My Documents\Test.txt"

  Open MyF For Input Access Read As #1
  Do Until EOF(1)
   Buf = "": i = i + 1
   Input #1, Buf
   Cells(i, 1).Value = CInt(Buf)
  Loop
  Close #1
End Sub

てな感じになりますが。

【31226】Re:マクロ内の変数をテキスト形式で保存
質問  green  - 05/11/15(火) 10:56 -

引用なし
パスワード
   keinさん、誠にありがとうございました。
おかげさまで希望通りの保存・読み出しが出来る様になりました。

申し訳御座いませんが、もう一つ質問が出来ました。
よく保存時に「保存する場所」の設定や「保存する名前」の変更等をする
画面があると思うのですが、それはどの様にマクロを組めば良いのでしょうか?

何度も申し訳御座いませんが、宜しくお願い致します。

【31231】Re:マクロ内の変数をテキスト形式で保存
回答  Kein  - 05/11/15(火) 13:10 -

引用なし
パスワード
   >保存時に「保存する場所」の設定や「保存する名前」の変更等をする画面
処理をするためのダイアログを出したい、ということなら

Application.Dialogs(xlDialogSaveAs).Show

とか、名前の取得のみを目的にした

Application.GetSaveAsFilename

を使います。Dialogs(xlDialogSaveAs).Show の方は、名前を入力して OK を
押すと、自動的に保存処理までしますが、GetSaveAsFilename の場合は戻り値を
変数に入れ、それを使って SaveAsメソッドで実際の保存処理をしなくては
なりません。その意味ではダイアログでなくても、InputBox等でブック名を取得しても
変わりがないわけです。即ち保存処理のキーワードは、 SaveAs なのです。
関連してバックアップ用のメソッドとして SaveCopyAs も学習しておくと
良いと思います。

【31235】Re:マクロ内の変数をテキスト形式で保存
質問  green  - 05/11/15(火) 13:33 -

引用なし
パスワード
   何度もご返答ありがとうございます。

前述の「Application.Dialogs(xlDialogSaveAs).Show」ですが、
これは拡張子が.xlsになっていると云う事は、前回、作成手順で教えて頂いた
「test.txt」ファイルの保存では無い様な気がします...。

私の説明が至らなくて申し訳御座いませんでした。
今回、保存したいのは、前回作成した「test.txt」のファイルを
任意の場所・任意のファイル名に変更して保存する方法を教えて頂きたいのです。
その時に「Application.Dialogs(xlDialogSaveAs).Show」で出てきた様な
画面を出したいと思っています。

御無理を申しますが、何卒宜しくお願い致します。

【31236】Re:マクロ内の変数をテキスト形式で保存
発言  Jaka  - 05/11/15(火) 13:48 -

引用なし
パスワード
   一応これでファイル名は取得できると思います。

FName = Application.GetSaveAsFilename("デフォルト", "TEXTファイル(*.txt),*.txt", 2)
MsgBox FName

この後のどう保存するのか解りませんけど...。

【31238】Re:マクロ内の変数をテキスト形式で保存
回答  Kein  - 05/11/15(火) 13:51 -

引用なし
パスワード
   あー・・つまり私の最初のレスで提示した"Test_Write"プロシージャに対して、
そのようなダイアログを出すように変更したい、ということですね ?
ならば

Sub Test_Write2()
  Dim A As Integer, B As Integer
  Dim C As Integer, D As Integer, E As Integer
  Dim Ary As Variant
  Dim Buf As String, MyF As String
 
  ChDir "C:\Documents and Settings\User\My Documents"
  '↑保存先のパスにする
  MyF = Application _
  .GetSaveAsFilename("","テキスト ファイル(*.txt),*.txt")
  If MyF = "False" Or MyF = "" Then Exit Sub
  A = 10: B = 11: C = 12: D = 0: E = -12
  Ary = Array(A, B, C, D, E)
  Buf = Join(Ary, ",")
  Open MyF For OutPut Access Write As #1
  Print #1, Buf
  Close #1
  ChDir Application.DefaultFilePath
  MsgBox MyF & vbLf & "を作成・保存しました", 64
End Sub

【31240】Re:マクロ内の変数をテキスト形式で保存
質問  green  - 05/11/15(火) 14:35 -

引用なし
パスワード
   Jakaさん・Keinさん
本当にありがとうございます。
「GetSaveAsFilename」のおかげで、希望する様に保存が出来る様になりました。

次は読み込みなのですが、これだけでも自分で調べて作成しようとして
がんばっていましたが、どうしても駄目でした。
また、お知恵を頂けないでしょうか?
お願い致します。

「GetopenFilename」かな?と思いましたが・・・

【31242】Re:マクロ内の変数をテキスト形式で保存
回答  Jaka  - 05/11/15(火) 14:58 -

引用なし
パスワード
   fff = Application.GetOpenFilename("テキストファイル (*.csv;*.txt), *.csv;*.txt", , "タイトル")
MsgBox fff

【31245】Re:マクロ内の変数をテキスト形式で保存
質問  green  - 05/11/15(火) 15:34 -

引用なし
パスワード
   Jakaさんありがとうございます。
しかし、前述のKeinさんのマクロにその命令文を組み込むには
どうすれば良いのでしょうか?

Dim i As Integer
Dim Buf As String
Const MyF As String = "C:\Test.txt"

Open MyF For Input Access Read As #1

Buf = ""
Input #1, Buf
ComboBox1.ListIndex = Int(Buf)
Input #1, Buf
    ・
    ・
    ・
宜しくお願い致します。

【31248】Re:マクロ内の変数をテキスト形式で保存
回答  Jaka  - 05/11/15(火) 15:51 -

引用なし
パスワード
   >Const MyF As String = "C:\Test.txt"
  ↓
Dim MyF As Variant
MyF = Application.GetOpenFilename("テキストファイル (*.txt), *.txt", , "タイトル")
If MyF = False Then Exit Sub

Open MyF For ・・・・

【31249】Re:マクロ内の変数をテキスト形式で保存
回答  Kein  - 05/11/15(火) 15:57 -

引用なし
パスワード
   うーむ・・これだけヒントを出しているのだから、少しぐらい応用を効かせて
自分で組むことが出来ませんか ? 正解コードをあっさり提示するのは、あなたの
学習意欲が失われてしまうような気がして二のを踏んでしまうのですが、私の
レスはいつもサンプルコードを示すスタイルなので、いちおう書いておきます。

Sub Test_Read()
  Dim Buf As String, StV As String, MyF As String

  ChDir "C:\Documents and Settings\User\My Documents"
  MyF = Application.GetOpenFileName("テキストファイル(*.txt),*.txt")
  If MyF = "False" Then Exit Sub
  Open MyF For Input Access Read As #1
  Do Until EOF(1)
   Buf = ""
   Input #1, Buf
   StV = StV & Buf & ","
  Loop
  Close #1
  ChDir Application.DefaultFilePath
  MsgBox Left$(StV, Len(StV) - 1)
End Sub

【31250】Re:マクロ内の変数をテキスト形式で保存
発言  Kein  - 05/11/15(火) 15:57 -

引用なし
パスワード
   >二のを

二の足を

【31253】Re:マクロ内の変数をテキスト形式で保存
お礼  green  - 05/11/15(火) 16:22 -

引用なし
パスワード
   Jakaさん・Keinさん、本当にありがとうございました。

例を挙げて頂いた時に、皆様と同じ様にマクロを組んだのですが、
エラー表示が出て困っていました。
Const MyF・・・の「Const」が原因だったとは・・・
ヘルプでConstの意味を調べてみます。

本当にありがとうございました。

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