• ベストアンサー

動的に変更した状態をそのまま保存したい

VisualBasic2008です。 csvファイルに「タイトル名」が100個あります。 フォームに100個のボタンがあり、起動時にcsvの「タイトル名」でボタンのtextを動的に変更しています。 この動的な変更をやめて、ボタンのtextを固定したいと思います。 ひとつずつ手動でtextを変更すればできるのですが、なかなか大変です。 そこで動的に変更した状態をそのまま保存し、コードを取り除くことができれば一番いいのですが・・・ そんなことできるでしょうか? もちろんコードの削除は手動で問題ありません。

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

  • ベストアンサー
回答No.5

> たとえば、「現在の状態をコードとして表示する」なんてことでもいいんですが・・ > 現在のフォームの状態、どこかにないんですかねぇ。 それはコンパイラされたアセンブリの実行中の動作結果であって、開発上のソースにはどこにもありません。 > ご紹介いただいてる「変換.zip」というのはどういうものなんですか? Excelでの変換方法です。 単純に説明しづらいので、アップローダを利用してあげてます。

okidsaya555
質問者

お礼

わかりました。 しつこくて申し訳ありませんでした。 色々と記載いただき、何かと勉強になりました。 ありがとうございました。

その他の回答 (4)

回答No.4

> textプロパティにひとつずつ手動で設定していけば、CSVやコードがなくても目的のフォームが完成しますよね。 > この状態を一発で作る方法があったら、教えていただきたいのです。 不可能です。 > あのーまったく単純にCSVをやめたいのです。シンプルにしたいのです。 外部に見える形でCSVファイルは利用しませんよ。 CSVの形式を持つ内部リソースを利用するだけです。 コードも流用せず、デザイナですべてリテラル文字として設定したいというのがお望みなら、そもそも元々の設計思想が異なるわけですからせこせこ直すしかありません。 Excel関数を利用して一部の文字列を置換した状態でDesigner.vbファイルの中身を生成し直すとか、 エディタ、正規表現、置換を駆使して頑張ってください。 Excelなら、以下の手順で比較的簡単にできそうですが。 ちょっとデバッグコードを書いてすべてのボタン名を取得してExcelに貼りつけておいて、 そのボタンごとに設定すべきテキストを指定。 Designer.vbファイルの中身を全部Excelへ張り付け、特定条件下のコードだった場合はText値を書き換え、みたいな。 http://fast-uploader.com/file/6968126068558/ ただその場合は、当然ですが、コードが破壊されていないことを確認することも必要です。

okidsaya555
質問者

お礼

何度も投稿いただきありがとうございます。 やはりダメですか。 たとえば、「現在の状態をコードとして表示する」なんてことでもいいんですが・・ 現在のフォームの状態、どこかにないんですかねぇ。 なんかできそうな気がするんですが。

okidsaya555
質問者

補足

ご紹介いただいてる「変換.zip」というのはどういうものなんですか?

回答No.3

追記です。 書き込んだ直後に気づいたんですが、 CSVファイル(タイトル部分だけでいい)を、そのままリソース管理させて、 CSVファイルを読み込んでいる部分をリソースを読み込むように変更すれば それだけで済むかもですね。 タイトルが複数行にまたがるようなら、もうちょっとコード修正が必要ですが。

okidsaya555
質問者

お礼

あのーまったく単純にCSVをやめたいのです。シンプルにしたいのです。

回答No.2

> 目的とするものができあがってる訳ですから、何か一発でできませんかねぇ。 現在は『CSVファイル』からタイトルを設定しているわけですよね? 例えばですが、デザイナーでTextプロパティを編集し直すのではなく、 『コード』でタイトルを設定すればいいと思うんですが、それではダメですか? フォームのコンストラクタのInitializeComponent()走行後に処理させれば、 デザイナでは編集されていませんが、実行されるモノとしてはデザインされた ものになりますし、元々そういう作りですよね? Textプロパティのインポート元が異なるイメージでコードを修正してしまえば それで済む気がします。 タイトルなんて、List(Of String)とかで変数初期化時に全部突っ込んでおけば いいわけですから。 現行コードの流用がどのくらいできるかにもよりますが、KeyValuePair(Of String, String)() で、ボタン名とタイトルを紐づけた上で回すということもできるでしょうし、 コード上でタイトル名が邪魔だというならば、リソースファイルなどを利用して 設定すればいいでしょう。

okidsaya555
質問者

お礼

ありがとうございます。 記載いただいたこと、理解できない部分もあります...VBの経験浅いもので... textプロパティにひとつずつ手動で設定していけば、CSVやコードがなくても目的のフォームが完成しますよね。 この状態を一発で作る方法があったら、教えていただきたいのです。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> フォームに100個のボタンがあり、起動時にcsvの「タイトル名」でボタンのtextを動的に変更しています。 フォームはどうやって作ってるんでしょう?フォームエディタでボタンを100個配置? であれば、フォームの.frmファイルをテキストファイルとして開くと、処理方法の手がかりがあるかも ・上手い事ボタン名を逐次置換するとか ・Excelなんかに取り込んで文字列処理とか > ひとつずつ手動でtextを変更すればできるのですが、 ひとつ変更した状態で保存した.frmファイル ふたつ変更した状態で保存した.frmファイル なんか作って比較するとかも参考になるかも。

okidsaya555
質問者

お礼

「Form1.Designer.vb」を直接編集しろということですね。 でもそのためのコードが必要になりますよね。 目的とするものができあがってる訳ですから、何か一発でできませんかねぇ。

関連するQ&A

  • csvファイルが保存すると数値が変更される

    CSVファイルについてですが、商品コードが14桁あるのですが、保存してから あらためて開くと数値が変更しています。 なにか解決方法はないでしょうか。 例  変更前 30000000414781 変更後 30000000000000 商品コードのためカンマなどはつけることができません。 ファイル形式はcsvでしか読み込みできない仕様です。 どなたかわかる方がいましたら、よろしくお願いいたします。

  • ファイルの保存を行いたい

    Visual Basic 2010で、メールソフトで添付ファイルの保存・削除と同じような動きをするテキストボックス?を作りたいと考えてますがコードが思いつきません。 どなたか教えて頂けないでしょうか? 動作として (1)テキストボックスにドラッグ&ドロップで選択されたファイルを表示。 この時、テキストボックスに表示されているファイルを右クリックで表示から削除も行いたい (2)実行ボタンを押下で、テキストボックスに表示されているファイルを 日付(年月日と時刻)のファイル名でフォルダーを新規作成して保存したい。 宜しくお願いします。

  • ファイル保存

    Private Sub Command1_Click()   intFileNo = FreeFile   Open "sample_01.csv" For Output As #intFileNo   Print #intFileNo, Text1.Text   Close #intFileNo End Sub このプログラムではテキストボックスに表示されたcsvをファイル名sample_01.csvとして保存できるのですが、 これだとテキストボックスに表示されているのが何でもファイル名がsample_01.csvとなってしまいます>< こうではなくて、テキストボックスに表示されている、『○○○.csv』というのをそのままファイル名として保存したいのです。 sample_01.csvの部分をtext1.textにかえてやったらエラーがでてできませんでした・・・ どなたかご教授お願い致しますm(__)m

  • エクセル テキスト形式の名称変更保存

    みなさまお世話になります 早速ですが、標記の件です csv形式になっているテキストファイル(拡張が異なりますset)をエクセルで カンマ区切りにて開いた後 保存しようとした場合 上書き保存であれば、拡張も元々の拡張子で保存されるのですが マクロを使用してファイル保存をしようとすると ActiveWorkbook.SaveAs Filename:=ActiveSheet.Name, FileFormat:=xlCSV, CreateBackup:=False 拡張子がCSVになってしまいます。 それを元々の拡張にて保存を行いたいのです。 またファイル名が長いので 変更をかけた後  シート名の一部を変更して保存したいためにActiveSheet.Nameを 使用しています どうぞよろしくお願いします。

  • 保存をすると再開できる時とできない時がある

    VBAコードを編集し保存せずに フォームビューでコマンドボタンを押しADOを含むコードを実行しようとすると 「マシン '<マシン名>' のユーザー 'Admin' が データベースを開けない状態、またはロックできない状態にしています。」 のエラーが出ます。 その時保存をすると再開できる時とできない時があるのですが どういう場合ができないときなのかわかりません。 ただ、フォームのデザインをいじると 確実に保存しただけでは再開できずファイルを一度閉じなければいけないのですが VBAコードだけをいじっても再起動しなければいけない場合があります。 このファイルは自分しか使ってないです。 わかりづらくてすいません。 宜しくお願い致します。

  • DataGridViewでの変更保存

    初めて投稿します。 VisualBasic2005、SQL Server2005 EXPRESSで開発を行っております。 初心者なので簡単な内容なのでしょうが、糸口がつかめず思考がストップしています。 DataGridViewに1つのテーブルをバインディングでドラッグアンドドロップし、IDで紐付く別テーブルの名称を1カラム追加しています。 DataGridView上でIDを変更し、それに合わせて名称が変更されます。 変更後の状態をBindingNavigatorの保存ボタンで保存をしたいのですが、次にフォームを開いても変更が反映されていません。 検索結果にも同様の質問と回答があったので試みましたが解決しておりません。 因みにコードは以下です。 Private Sub T_payscheduleBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles T_payscheduleBindingNavigatorSaveItem.Click Try  "テーブル名"TableAdapter.Update(MoPDataSet.テーブル名) Catch ex As Exception End Try End Sub 長くなりましたがよろしくお願いします。

  • 「変更を保存しますか?」と聞かれたくない。

    現在のファイルと同名のCSVファイルを作成したいのですが、 Sub CSV作成() Dim MyFileName As String MyFileName = ActiveWorkbook.FullName MyFileName = Left(MyFileName, Len(MyFileName) - 5) Workbooks.Add ActiveWorkbook.SaveAs Filename:=MyFileName & ".csv", FileFormat:=xlCSV ActiveWorkbook.Save ActiveWindow.Close End Sub をしたときに、「変更を保存しますか?」と聞かれます。 保存しますか?と聞かれても、無条件で保存したいし、そもそも変更してないのに、 なんで聞かれてるのかわかりません。 保存する方法を教えてください。ご回答よろしくお願いします。

  • 「名前を付けて保存」で保存されるファイルの拡張子

    ブラウザに、palemoon12をメインで使っています。 他には、ie8、firefox13、その他いろいろ使っています。 ウエッブでページを保存する場合に、ファイルの種類として、主に Webページ、完全 Webページ、HTMLのみ テキストファイル の3種類で保存しています。 palemoonやfirefoxで保存するとき、「ファイルの種類」が何であっても、「ファイル名」のボックスではファイル名にデフォルトで「.htm」が付いてしまっています。 しかしこれは、「テキストファイル」で保存する場合、困ります。 テキストなのに拡張子に「.htm」が付いたファイルを開くと、テキストエディタで開かれますが、改行が全くないベタのテキストなので、大変に読みにくいのです。 そのため、テキストで保存する場合には一々、拡張子の部分を削除してから保存しています。そうすると、ファイル名に「.txt」が付いて保存されますし、元が<br>などで改行されている箇所はちゃんと改行されているのです。 しかし、保存するときに一々ファイル名に付いている拡張子を削除しなければならない、これは面倒です。 palemoonやfirefoxで、保存する「ファイルの種類」がテキストの時に、一々手動で削除しなくても自動的にファイル名に拡張子に「.txt」が付く方法がないでしょうか。 よろしくお願いいたします。 ちなみに、ieでは「ファイルの種類」が何であっても、「ファイル名」のボックスでは拡張子は付きません。しかし、保存されたファイルには、選択した「ファイルの種類」に応じて、「.htm」「.mht」「.txt」など適切な拡張子が付けられていますし、ファイルの中身もそれに応じた体裁になっています。 もう一つちなみに、この点はieがいいのですが、決定的に不便な点があります。 「名前を付けて保存」する場合、 palemoonやfirefoxでは Ctrl+S のショートカットキーが使えます。しかし、ieにはこのような便利なショートカットキーが用意されていない。 どちらも中途半端で、困ります。

  • EXCEL 変更を保存しますか

    こんにちは。 マクロで、リスト.csvというファイルを開くと、それを閉じるときに、何も変更していなくても 変更を保存しますかというダイアログが出ます。 原因は、末尾にURLが記載されているからです。 これを、当該マクロでそのファイルを開いた場合に限っては、 そのファイルを閉じるときに変更を保存しますかというダイアログを出さない方法はありませんか。 よろしくお願いします。

  • フォームで入力したテキストを分解し、テーブルに格納

    ACCESS 2003を使用しています。 下記のようなものを作りたいのですが、わからないので質問させていただきます。 (1)フォーム画面の「ファイル名称」というフィールドにテキストを入力する。  ファイル名称は"YYYYMMDD_FileName_Type_ID.csv"という定義になっており  CSVの他に、SSV・TSVと複数種類がある。  この箇所は、手動で入力する。 (2)あるボタンを押すと、入力したテキストが分解され、「年月」・「ファイル名」・「タイプ」・ 「ID」・「拡張子」のフィールドに自動的に格納される。 現在、考えているやり方としまして、 (1)ボタンを押すと、文字を分解し、テーブルに格納するVBAを作る (2)格納されたデータをフォームに反映する (3)反映ができたら、分解して格納したテーブルのデータを削除する という流れでいるのですが、(1)の箇所から躓いてしまい、どうにも進まない状態です。 どうか、お助けください。 どうぞ、宜しくお願いいたします。

専門家に質問してみよう