ここから本文です

Excel VBAのCells.Replace関数を利用した場合、置き換える文字列に256文字以上 指...

wod********さん

2008/9/2518:49:36

Excel VBAのCells.Replace関数を利用した場合、置き換える文字列に256文字以上
指定すると「型が一致しません」エラーが発生します。

Replace関数は置き換える文字列に256以上を指定することができないのでしょうか?

当方で作成したいプログラムは、
1.テンプレートファイルを読み込み
2.指定した文字列を置換
3.別名で保存するプログラム
です。

色々調べましたが、Replace関数の文字列制限が存在しなかったため
困惑しております。


ソースファイルを記述いたします。
なにとぞご教示の程お願いいたします。


Private Sub CommandButton1_Click()

Dim strTemplateFilePath As String
Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objTemplateWorkbook As Excel.Workbook

strTemplateFilePath = "C:\Temp\templates.xls"

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Add(Template:=strTemplateFilePath)
Set objTemplateWorkbook = objExcel.Workbooks.Add(Template:=strTemplateFilePath)


With objExcel
objWorkbook.Activate

Dim str1 As String
Dim str2 As String

str1 = "置換対象"

'255文字以上の文字列
str2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"


objExcel.Cells.Replace What:=str1, Replacement:=str2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

End With

strSaveFilePath = "newfile.xls";
' ファイルの保存
objWorkbook.SaveCopyAs strSaveFilePath
objWorkbook.Close (False)

NML_EXIT:
F_BZ_Output_TB1 = True
GoTo ALL_EXIT

ERR_EXIT:
F_BZ_Output_TB1 = False
On Error Resume Next
If Not objWorkbook Is Nothing Then
objWorkbook.Close (False)
objTemplateWorkbook.Close (False)
End If

ALL_EXIT:
DoCmd.Hourglass False
Set objWorkbook = Nothing
Set objTemplateWorkbook = Nothing
Set objExcel = Nothing
On Error GoTo 0

End Sub

閲覧数:
7,169
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kup********さん

編集あり2008/9/2613:55:14

DoCmdなんでAccessか。
==========================================
> Set objExcel = CreateObject("Excel.Application")
とかでわざわざExcelのインスタンス作ってんで
提示のソースはVBですかね?
まぁ、んな事は直接関係ないんですけど。

Cells.Replaceってのは、Replace関数ではなく、
Replaceメソッドですね。

こいつの場合は、お察しの通り、文字数に限界があるようで、
置換フォームで適当に文字を入力し続けたところ、
256文字目から入力を受け付けなくなりました。
検索対象、置換後文字列ともにどうやら
255文字が限界の様です。

仕様でしょうから、こればっかりはどうしようもないんで(汗
UsedRangeをチマチマ1セルづつ、ホント?のってか、
StringsクラスのReplace関数で置換していくとかで
対応されてみては?

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

my_********さん

2008/9/2812:44:41

正規表現でもして・・・・別にセット

これを利用すれば?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる