ここから質問投稿すると、最大4000ポイント当たる!!!! >>

ExcelでRichTextBoxを使おうとして、Microsoft Rich Textbox Control(SP6)を コントロールの追加を使って登録しました。いざ、フォームに置こうとすると「サブジェクトは指定された操作に対して信頼されていません」というエラーが出ます。このエラーを回避する方法か、複数行が書けるラベルコントロールのようなものはあるでしょうか

A 回答 (6件)

> 同じ症状ですね・・・



ご質問文や補足を読めば、わかる・調べるスキルがある方なのは、
わかりますが、、、、なんだかなぁ。。。

http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0

s_husky です。



RichTextBox ----------- 使えません!
Threed panel control -- 使えます!

Threed panel control は、VB5からVB6への移行時にセット用のバッチファイルが配布されたと思います。
    • good
    • 0
この回答へのお礼

わざわざ補足説明ありがとうございます。
Thread panel controlを探してみたのですが、Excel 2003には入っていないのですね・・・。配布ファイルを探すしかないのでしょうか。マイクロソフトのダウンロードセンターでは見つけることが出来ませんでした。

お礼日時:2006/06/27 10:28

> Excel2003で使えますか・・・。



#1 で s_husky さんは、RichTextbox で使用しないで、TextBox で済ませた、、
とコメントされてます。TextBox の MultiLine を使ってはどうか、、という
アドバイスが意図だと思います。使える、、とは言及されてないですよ。

確かに OfficeXP 以降は RichTextbox はセキュリティーホールがあるため、
使えなくなったと OFFICE カテで以前話題にあがっていたと記憶しています。

でも、今検索してもその情報が見つからないんですよね~...

MSDN や Google でもそれらしい情報を見つけられません。が、事実私の環境では、
WindowsXP + Excel2002 ですが、やはり、RichTextbox はフォームに配置すら
できません。「信頼されてません」とアラートが表示されます。

Excel 2000 以前では OK みたいですね。

VBA 標準コントロールではないので、情報量が少ないのは当然として、ひょっと
するとタブー視されてるのかな?

私見ですが、確かに RitchTextbox は HTML 表示に係るセキュリティーホールが
ほったらかし状態ですし、NT 系 OS での挙動が不安定だとの話も聞きますので、
Label や Textbox を上手く使うか、OCX を探すか、、という方向で見直した方が
良いのかもしれません。

多彩な書式を使う、、という用途なら、WEB Browser コントロール が代替で使え
そうですけどね。
    • good
    • 0
この回答へのお礼

>アドバイスが意図だと思います。使える、、とは言及されてないですよ
そうですね。私が勘違いしていました・・・

>「信頼されてません」とアラートが表示されます
同じ症状ですね・・・

ご指摘ありがとうございました

お礼日時:2006/06/27 10:19

ラベルでも、


途中にスペースを入れてトコロテン式に押し出せば
それっぽく見えます。行数が多いと煩雑でしょうけど。
    • good
    • 0
この回答へのお礼

それですと、印刷した時と画面の文字数が違う時があるので、なるべく使いたくないのです・・・

お礼日時:2006/06/25 07:46

Excel 2000 ですが問題なくフォームに置く事が可能です。



RichTextBox はExcel標準では入っていないコントロールなので、他の環境でも使用する事をお考えの場合は利用を控えた方が良いでしょう。

TextBox でもMultiLine = Trueとすれば複数行の記入が可能です。
    • good
    • 1

Excel は操作したことがない門外漢ですが、やむなく、請求書、営業報告書を作ったばかりです。

(Excel2003)
私は、何も考えずに TextBox を使いました。
40数行を中途改行も含めて表示しております。

※検討違いであれば無視して下さい。
    • good
    • 0
この回答へのお礼

Excel2003で使えますか・・・。コントロールの追加は私の書いた方法で合っているでしょうか?

お礼日時:2006/06/25 07:47

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QTextBox内で違う色の文字を表示したい

最近Visual Basicをはじめました。最新?のVB2008EEをダウンロードして色々頑張っています。
テキストボックスに文字を表示する時、
例えば
あいうえお(黒)さしすせそ(赤)とか違う色で続けて表示する方法はありますか?
例)
RichTextBox1.Text = RichTextBox1.Text + (str & ht & vbCrLf)
↑のhtの部分だけ赤とか。

VBは素人なので質問内容が不鮮明かもしれませんがご理解の上、宜しくお願いします。

Aベストアンサー

テキストボックスの文字の部分的な色分けは、できませんが
RichTextBoxならできます。
SelectionColorプロパティで、いかがでしょうか

Qリッチテキストボックスの中身をExcelにコピー

リッチテキストボックスを用いて
中身(テキスト)の単語を色々な表現(色、太字、サイズ)で表すことを行なっています。
この内容をExcelにコピーできるようにしたいのですが。
色などの情報を正しく引き継いでもらうためには
どのようなコーディングをすればいいのでしょうか?

Aベストアンサー

ズブの素人ですので、見当違いであればお許し下さい。

<単純にテキストを読み込む場合>

Public Function FileReadAll(ByVal FileName As String) As String
On Error GoTo Err_FileReadAll
   Dim fso As FileSystemObject
   Dim fil As File
   Dim txs As TextStream
  
   Set fso = New FileSystemObject
   Set fil = fso.GetFile(FileName)
   Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)
   FileReadAll = txs.ReadAll
Exit_FileReadAll:
   Exit Function
Err_FileReadAll:
   MsgBox Err.Description & "(FileReadAll)", vbExclamation, " 関数エラーメッセージ"
   Resume Exit_FileReadAll
End Function

Private Sub CommandButton1_Click()
  Dim strText As String
  
  strText = FileReadAll("d:\temp\Test.txt")
  MsgBox strText
End Sub

これで、コマンドボタンをクリックすると Test.txt の内容をstrTextに代入してMsgBox で表示できます。
リッチテキストボックスのテキストを出力した後にエクセルのコマンドボタンをクリックし、エクセルにstrText を表示すれば、事実上のコピーが成立します。
もちろん、エクセルが開いていない場合に、自動オープンして自動コピーする。
あるいは、エクセルのコマンドボタンを送信側から操作するなど色々のケースがあるでしょう。
まあ、直接にコピーするよりも簡単という訳です。

<複雑な情報の転送>

・元々の情報とエクセルの対応を決める。
・それぞれの情報の再現方法を決める。
・これらを構造体変数に代入する。
・構造体変数を一旦ファイルとして出力する。
・エクセルで構造体変数を呼び込む。
・構造体変数をエクセルに反映する。

コピー情報が単純ではないと判断し<構造体変数化>という手法を提示したものです。

どのような構造体変数を用意すべきかは、質問の範囲では不明です。
例えば、次のような構造体変数の出力とリードには BLoad()、BSave()という関数を使っています。

Private Type MENU
  TitleCaption   As String * 24 ' トップメニュータイトル
  MenuCount     As Integer   ' メニュー総数
  SubItems(5)    As Integer   ' 各メニューの項目数
  MenuNames(5)   As String * 16 ' 主メニュー名
                   ' ----+----1----+----2----
  LargeIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico
  SmallIcons(5, 19) As String * 24 ' Icons\Small\xxxxxxxx.ico
  IconTexts(5, 19) As String * 12 ' アイコンテキスト
  AppTypes(5, 19)  As String * 1  ' アプリケーションの種類
  AppNames(5, 19)  As String * 20 ' アプリケーション名
  AppDescs(5, 19)  As String * 32 ' アプリケーションの説明
  ViewMode     As Integer   ' 表示モード
End Type
Dim MyMenu As MENU

' --------------------------------------------------------------------------------
' 構造体変数 MyMenu を Menu.ini に保存
' --------------------------------------------------------------------------------
Private Function BSave(ByVal FileName As String, ByRef MyMenu As MENU) As Boolean
On Error GoTo Err_BSave
  Dim isOK    As Boolean
  Dim intFreeFile As Integer
  
  isOK = True
  intFreeFile = FreeFile
  Open FileName For Random As intFreeFile Len = Len(MyMenu)
  Put #intFreeFile, 1, MyMenu
Exit_BSave:
On Error Resume Next
  Close #intFreeFile
  BSave = isOK
  Exit Function
Err_BSave:
  isOK = False
  Resume Exit_BSave
End Function

' --------------------------------------------------------------------------------
' ランダムファイル Menu.ini を構造体変数 MyMenu にロード
' --------------------------------------------------------------------------------
Private Function BLoad(ByVal FileName As String, ByRef MyMenu As MENU) As Boolean
On Error GoTo Err_BLoad
  Dim isOK    As Boolean
  Dim intFreeFile As Integer
  
  isOK = FileExists(FileName)
  If isOK Then
    intFreeFile = FreeFile
    Open FileName For Random As intFreeFile Len = Len(MyMenu)
    Get #intFreeFile, 1, MyMenu
  End If
Exit_BLoad:
On Error Resume Next
  Close #intFreeFile
  BLoad = isOK
  Exit Function
Err_BLoad:
  isOK = False
  Resume Exit_BLoad
End Function

参考になれば幸いです。

ズブの素人ですので、見当違いであればお許し下さい。

<単純にテキストを読み込む場合>

Public Function FileReadAll(ByVal FileName As String) As String
On Error GoTo Err_FileReadAll
   Dim fso As FileSystemObject
   Dim fil As File
   Dim txs As TextStream
  
   Set fso = New FileSystemObject
   Set fil = fso.GetFile(FileName)
   Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)
   FileReadAll = txs.ReadAll
Exit_FileReadAll:
   ...続きを読む

Qユーザーフォームをホイールでスクロールする方法(Excel2000VBA)

お世話になります。

エクセルで、上下に長いのでスクロールさせて使うユーザーフォームを作成しています。

このユーザーフォームが、ホイールでスクロールできないので、できるようにしたいのですがどうしたら良いでしょうか?

フリーソフトはインストールできない環境ですので、できればVBAで行いたいのですが方法はありますでしょうか。
よろしくお願いします。

Aベストアンサー

こんにちは。KenKen_SP です。

>ホイールでスクロールできないので、できるようにしたいのですが
>どうしたら良いでしょうか?

VBA のユーザーフォームはコントロールを含めてマウスホイールには
対応していません。

したがって、フリーソフトを使うか、どうしても Excel 単体で実現し
ようと思えば、下記のような方法をとることになります。

簡単に方法を説明すると、、、

ユーザーフォームをサブクラス化して、WM_MOUSEWHEEL メッセージを
をフックします。そして、コールバックプロシージャ内で wParam 値
を使ってユーザーフォームの ScrollTop プロパティーを操作します。

ただ、、

この方法は、OS の発するメッセージを横取り(フック)して、そこに
独自の処理を挟み込むわけですから、制御の仕方を間違えると最悪 OS
ごとハングアップしかねません。

難易度は高いのですが、ご希望があれば、サンプルコードを書きます。
どうでしょうか?

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

QVBAでユーザーフォームを再表示させたい。

ExcelのVBAでユーザーフォームを作成し、
Initializeイベントで初期化をし、コマンドボタンを
クリックしたら処理を行うように作成しました。
ところがコマンドボタンによって処理を行った後、
再度Initializeイベントを呼びたいんです。。
(コンボボックスの表示を更新する処理を
含んでいるため)
なんとかうまい方法はないでしょうか??

Aベストアンサー

まったく、トンチンカンな答えかも知れませんが・・・
> まったく、このコンボボックスの内容が変化しないんです。

UserForm4.ComboBox1.AddItem は後へ後へと追加するばかりだと思うんです。
つまり、下の方に変化した内容がありませんか?
最初から入れ直したいのであれば、コンボボックスをクリアする必要があると思うのですが。

で、3行目にクリアするのを追加してみました。

Private Sub UserForm_Initialize()
Dim i As Integer

UserForm4.ComboBox1.Clear

Worksheets("Sheet1").Select
Range("B4").Select
For i = 4 To 200
If Range("B" & i).Value <> "" Then
UserForm4.ComboBox1.AddItem Range("B" & i).Value
End If
Next i

End Sub

Qリッチテキストをテキストに変換

お世話になります。
アクセスVBAでデータをリッチテキスト形式にて出力することはできたのですが、その後、出力したリッチテキストをテキスト(改行つき)で保存する方法がわかりません。マクロなど使えば可能なのでしょうか??

出力の際に、テキストで出力すればいいだろうって話かもしれませんが、そこはリッチテキスト形式にて出力する課題なんです(^_^;)

Aベストアンサー

>アクセスVBAでデータをリッチテキスト形式にて出力することはできたのですが

>出力したリッチテキストをテキスト(改行つき)で保存する方法がわかりません

これは対なので、それを逆作業を行うだけですね^^;


取り出し方法が一つじゃないので、格納方法も複数考えられます。

まず取り出し元のソースと、格納されているDBの型を公開してください。
イメージ型かメモ型では、扱いがそれぞれ異なるパターンがあります。

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qテキストボックスに改行を含む値を表示する場合

テキストファイルより1行ずつ値を改行「chr(13)」でつなげて取得し、それを
テキストボックスに表示させたいのですが、そのまま値をテキストボックスの
textプロパティに設定すると、改行が「・」で表示され改行されていません。
テキストボックスのプロパティでMultiLineもTrueにしてあるのですが、これは
無理なことなのでしょうか?
一行ずつ取得してテキストボックスに表示する際に改行を設定していくしかない
のでしょうか?
詳しい方いらっしゃいましたらご教示ください。
よろしくお願いいたします。

Aベストアンサー

お疲れ様です。

では、これでどうですか?

例)

  Dim strText As String

  '// 元の文字
  strText = "AAA" & Chr(13) & "BBB"

  '// Cr を CrLf に変換
  '// Text1.Text = Replace(strText, Chr(13), Chr(13) & Chr(10)) と同じ意味
  Text1.Text = Replace(strText, vbCr, vbCrLf)


strText をファイルから読み込んだものとして考えるといいと思います。
お試しください。

間違っていたらごめんなさい。

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング