アプリ版:「スタンプのみでお礼する」機能のリリースについて

メモ帳で作ったHTMLを、エクセルの一つのセル内にコピーしたいのですが、この時、改行<BR>をALT+ENTERに一括変換したいのです。
また、メモ帳で改行しているENTERのコードも抹殺削除しないと不要な改行まですると思います。
以上の2つの作業が一括でできたら更に良いと思いますが方法が判りません。
また、メモ帳のように単純なフリーソフトで改行を最初からALT+ENTERで扱えたり、改行コード変換が簡単なフリーソフトがありましたら是非、ご紹介下さい。

A 回答 (14件中1~10件)

こんばんは。



>最後の正規表現以外のURLは、表示が拒否されました
もう一度、掲示します。すみません。
区切れのないURLを掲示すると、画面が広がるので、分かち書きしたのがいけなかったようです。

正規表現は、Perl 準拠のほうがよいのですが、Windowsの場合は、かなり表現力が落ちます。それでも、なんとか、Webサイトの情報を拾ってきてくれますので、他のものを使わずに、Windowsのものを使っています。

参考URL:http://www.microsoft.com/japan/msdn/columns/scri …
    • good
    • 0
この回答へのお礼

少しずつ試していきたいと思います。

いろいろお教え頂きまして誠に有難う御座いました。

お礼日時:2005/10/05 05:37

こんばんは。



今回は、手数を掛けてさせて、誠にすみませんでした。穴があったら入りたいぐらいのミスでした。良く辛抱してくださいました。m(__)m

それと、最後の
Quit:
objIE.Quit '← 一応、これを入れておいてください。万が一です。
Set objIE = Nothing

本来は、自分のシステムをお見せ出来ると、最初から、こんなことにはならなかったのですが。途中で、投げ出したりする方が大半なので、私は、掲示板に書く時は、全部を書かないようにしていたことが、災いになってしまいました。(他人のコードは読めないということも、また正しいのですが。)

>コマンドボタン1つに対して、サブルーチンは1つですか?複数、連続してもいいのですか?

サブルーチンにしても構いません、というか、本来は、サブルーチンのほうが一段上の使い方です。

ただし、VBAでは、昔のBASIC のように、メイン・コードとサブルーチン・コードという区分けがありません。したがって、SUB と書いてあっても、SUBルーチンではなく、プロシージャと呼んでいます。もちろん、VBAでも、SUBを使わないで方法はあるのですが、あまり使いません。一般的に、VBAでは、CALLされるプロシージャや、引数を取るプロシージャがサブルーチンです。

その場合、

Call プロシージャ名

で呼んで(Callして)ください。そのプロシージャーは、標準モジュールに書くのが最適です。また、そのプロシージャ名には、Public ステートメントをつける必要はありません。

つまり、最初書いた、Sub InternetContent()~End Sub を標準モジュールにおいて、

Privete CommandButton1_Click()
 Call InternetContent
 'ここに、Call プロシージャ名を入れていきます。
End Sub

としたほうが、いろんな意味でよいのです。

>それと、コマンドボタンは、エクセルファイルの中に、複数、配置できますか?

何個でもよいです。限界があったはずですが、常識的に、10数個ぐらいは問題ありません。ただ、アクセスする場所が変わるということでしたら、
SUB プロシージャ名(URL)
.Navigate URL
 ・
 ・
として、 CALL プロシージャ名(アドレス)
としたら、サブルーチン・プロシージャはひとつで足ります。

>HTML文のテキストの中に、ビジュアルベーシックをJavaのように、はめ込みして使えますか?それとも、逆でしょうか?

JavaScript のことだと思いますが、こちらの方が圧倒的にメジャーですね。でも、Visual Basic とは言いませんが、その兄弟の VBScript という種類もつかわれます。以下のように宣言をしてあげるだけです。表現力が、やはり、JavaScriptのほうが上なのですが、使い方が簡単です。
------------------------
  <script language="VBScript">
------------------------
少し、ややこしいのは、Windows Script Host とも似ていますが、そのものずばりでもありません。Visual Basic などからすると、かなり命令が減ります。

VBScript:
http://www.microsoft.com/japan/msdn/library/ja
/script56/html/vtoriVBScript.asp

>ビジュアルベーシックに、はめ込むBASIC命令語は、どんな参考書で習得しやすいですか?

ExcelのVBAの一覧表のネット上では、ここで足ります。

http://www.microsoft.com/japan/msdn/library/ja
/off2000/vbaxl/html/xlmscobjectmodelchanges2000.asp?

参考図書として、Excel VBAの基礎的なことは、同じカテゴリの
「No.1687132 質問:マクロの学習法について :2005/10/2 14:14:00」
の#1 の文末に参考図書のサイトを入れておきました。

今回のようなインターネット関係の場合は、「ASP」という種類のものです。私は、買おう買おうと思いながら、まだ、参考書を購入していません。今の私は、手探りです。

それから、ダウンロードしたテキストなどを、本格的に切り分け作業になど用いるのは、やはり、HTMLそのもののコマンド集や正規表現(RegularExpression)というものを参考にしながら使います。これらは、Visual Basic 関連には直接には出てこないものです。それらは、バラバラの資料から、自分で調べて学習するしかありません。

正規表現:
http://www.microsoft.com/japan/msdn/columns/
scripting/scripting051099.asp

※上記に掲げているURL は、メモ帳などで、つなげてから、アクセスしてください。
    • good
    • 0
この回答へのお礼

最後の正規表現以外のURLは、表示が拒否されました。
以下の表示がありました。

このページの表示が認められていません
このディレクトリを表示するアクセス許可がないか、提供されたアカウント情報を使用してページを表示するアクセス許可がない可能性があります。


いろいろ丁寧に有難う御座いました。
今後、の参考になりました。

お礼日時:2005/10/04 17:39

こんばんは。



ごめんなさい。もう一度、お願いします。
重ね重ねすみません。

Open ThisWorkbook.Path & "WebLog.txt" For Output As #Fno '○
  ↓
Open ThisWorkbook.Path & "\WebLog.txt" For Output As #Fno 

とWeblog.textの前に、「\」を入れてみてください。

この回答への補足

自分のURLに替えて実行したところ、文字だけが、きちんと、抜き出されていました。
本当に有難う御座いました。

コマンドボタン1つに対して、サブルーチンは1つですか?複数、連続してもいいのですか?
それと、コマンドボタンは、エクセルファイルの中に、複数、配置できますか?

最後に、
私は、根本的な事が解かっていません。

HTML文のテキストの中に、ビジュアルベーシックをJavaのように、はめ込みして使えますか?それとも、逆でしょうか?

BVAのプログラムファイルをサーバに転送しておいて、HTMLから呼び出し実行して使用できますか?

BVAだけで色々な全てができそうには思えるのですが、後後の使い勝手の事も考えて、どういうスタイルが向いているのか検討したいと思います。

ビジュアルベーシックに、はめ込むBASIC命令語は、どんな参考書で習得しやすいですか?

いくつも、質問して誠に申し訳け御座いません。
宜しくお願い申し上げます。

補足日時:2005/10/02 22:32
    • good
    • 0

こんにちは。



ご面倒を掛けてたいへんすみません。

>テストするには、エクセルファイルの中身をどのようにしていれば判り易いのでしょうか?

サンプルコードで、Logを保存するところを手抜きしたのがいけなかったのでした。まったく、気が付きませんでした。(自分が今使っているものも直さないといけないようです。)

それから、これは、メモ帳に出すものであって、シートには出しません。その理由は、余計なものが一杯あるからです。それを抜き出す技術がなかなか面倒なのです。

WebLog.txtというファイルは、たぶん、Excelのデフォルトフォルダ(オプションで登録しているところ)のはずです。それで、コードの以下の部分を訂正してください。

'ログ検査用
Fno = FreeFile()
× Open "WebLog.txt" For Output As #Fno  ←
 ↓
以下に換えてください。

'ログ検査用
Fno = FreeFile()
Open ThisWorkbook.Path & "WebLog.txt" For Output As #Fno '○

新規ブックで、テキスト保存されるのがデフォルトパスですから、良いと思ったのですが、確かに、使っているブックとフォルダが別なことがありますね。とりあえず、これで様子をみてくれませんか?

このコードは、あくまでも、テスト用なのです。うまくいったら、これを、ご自身の使われるURLに変更して試してください。

もし、これでよいことになれば、ご要望しだいでは、ある程度、シートへの対応も可能だと思います。ご面倒をおかけしますが、諦めずに、よろしくお願いします。

この回答への補足

入れ替えて、コマンドボタンをクリックしました。

【WebLog.txtと言う名前でこのブックと同じフォルダに保存されました。】が出ましたが、同じフォルダに何もファイルが追加されません。

【OK】をクリックすると、【・・\MYフォルダ\WebLog.txtが見つかりません。新しく作成しますか?・・が出ます。

「はいY」】はいをクリックしたら空白中身のメモ帳ファイルがWebLog.txtとしてできています。同じのようです。
ご指摘どおり入れ替えができているのか、コードの表示で再確認しましたが、入れ替えはできているようです。

たびたび、ご面倒をお掛けして申し訳け御座いません。

補足日時:2005/10/02 15:40
    • good
    • 0

こんばんは。



>でコンパイルエラー End Subが必要と出ました。

× Sub InternetContent() 行頭二番目


× End Sub 行末(ひとつ手前、どちらでもよい)

この二行は不要です。
(中身)ということは、外皮のSub と End Sub を省くことです。お手数ですが、その二行を削除してください。

一応、説明として、なぜ、このような中身だけを写すことを書いたかというと、CommandButton1_Click() は、そのままVBEのウィンドウに貼り付けても認識しないからなのです。認識させる儀式が必要なのですね。その儀式も簡単ですが、それよりは、こうしたほうが早いと考えたからだったのです。

諦めずに、もう一度、お試しください。

この回答への補足

エラーは出なくなりました。が、【WebLog.txtと言う名前でこのブックと同じフォルダに保存されました。】が出ましたが、同じフォルダに何もファイルが追加されません。

【OK】をクリックすると、【・・\MYフォルダ\WebLog.txtが見つかりません。新しく作成しますか?・・が出ます。

「はいY」】はいをクリックしたら空白中身のメモ帳ファイルがWebLog.txtとしてできています。

テストするには、エクセルファイルの中身をどのようにしていれば判り易いのでしょうか?

ご面倒をお掛けして申し訳け御座いません。

補足日時:2005/10/02 09:54
    • good
    • 0

こんにちは。



安全を期して、新規ブックのほうがよいかもしれません。

簡単に、そのコードを取り付ける場合は、

ツールバーの何もないところで、右クリックして、[コントロールツール]バーをクリックして、ツールバー上に出します。その中から、『コマンドボタン』をドラッグして、シートに貼り付けます。

そして、そのボタンを右クリックすると、コンテキストの中に、[コードの表示(V)]というのがありますから、それをクリックすると、Visual Basic Editor画面で、

Private Sub CommandButton1_Click()

End Sub

というのが現れていますから、その中に、
Sub InternetContent()
(中身)
End Sub

中身だけを、新しいCommndButton1_Clickの間に、貼り付けて、ツールバー上の青い三角定規をクリックして、凹みを戻します。

次に、Alt + Q で、画面を閉じ、一旦、ブックを保存してください。保存しないと、メモ帳が、ブックのパスを探してしまいます。

後は、ボタンをクリックすれば動くはずです。
気に入りましたら、既存のブックにつけ直してください。(そのコードは試験用ですので、一回ずつのアクセスになってしまいます。)

本来は、標準モジュールからのほうがよいのですが(プロシージャー群のメモリ配分が出来るから)、それは、もし、本格的に勉強されるなら、書籍を参考にしてください。

この回答への補足

Private Sub CommandButton1_Click()
Sub InternetContent()
Dim objIE As Object
Dim URL As String
Dim myContentText As String, i As Long, flg As Integer
Dim Fno As Integer
Dim myID As Long
On Error GoTo Quit
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
'URL を入れる
URL = "http://oshiete1.goo.ne.jp/oshiete.php3?c=232"
.Navigate URL
Do While .Busy
DoEvents
Loop
Do Until .ReadyState = 4
DoEvents
i = i + 1
If i > 3000 Then
MsgBox "アクセスできませんでした。", vbInformation: GoTo Quit
End If
Loop
If flg = 0 Then
myContentText = .Document.body.innerText
'ログ検査用
Fno = FreeFile()
Open "WebLog.txt" For Output As #Fno
Print #Fno, myContentText
Close #Fno
'
End If
End With
AppActivate Application.Caption
If Err.Number = 0 Then
MsgBox "WebLog.txt という名前で、このブックと同じフォルダに保存されました。"
myID = Shell("Notepad.exe " & ThisWorkbook.Path & "\Weblog.txt", vbNormalFocus)
Else
MsgBox "残念ながら、ログが取れなかったもようです。"
End If
Quit:
Set objIE = Nothing
End Sub
End Sub
でコンパイルエラー End Subが必要と出ました。

補足日時:2005/10/01 11:33
    • good
    • 0

再び、Wendy02です。



もう、ついでのついでだから書いてしまいます。

>HTML文をTXT形式のままエクセルの一つのセルに保存したいのでした。

私も、ついこの間までは、Text形式でよいと思っていました。Text形式って、うまくいく場合と、そうでない場合があります。例えば、ここの掲示板って、だいたいは、Text形式でも体制に影響しないのです。ところが、Textですと、切り分けが出来ないものがあります。その場合、HTML形式にせざるを得ません。

まだまだ、私もわからない部分はあるものの、一応、自分では、問題ないレベルまで、Excelでインポートできています。ボタンを押すと、例えば、ここの掲示板の内容を取ってきて、セルに受付中と、締切、題名、日付、そのハンドル名なんとかが切り分け出来ます。

しかし、以下のように、ログを取るまでは出来ても、最終的にログを、切り分ける技術は、正規表現というテクニックしか、思い当たらないのです。そういう技術は、教えるに教えられない部分なのです。

ただ、もし、よかったら、(私の使っている)切り分け前のテストログ取得用のサンプルコードをあげておきますので、試してください。以下のようなログが、Excelで試すときの、最初の生ログです。

ここのカテゴリの1ページ目を取るコードです。ログは標準テキストファイルです。何度も試していますから、たぶん、大丈夫だと思います。取得したら、メモ帳が立ち上がります。これは、再度行う場合、メモ帳を閉じてくださいね。

'<標準モジュール推奨ですが、どこでもよいです。セルには書き出しません。>

Sub InternetContent()
Dim objIE As Object
Dim URL As String
Dim myContentText As String, i As Long, flg As Integer
Dim Fno As Integer
Dim myID As Long
On Error GoTo Quit
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
 'URL を入れる
 URL = "http://oshiete1.goo.ne.jp/oshiete.php3?c=232"
  .Navigate URL
  Do While .Busy
   DoEvents
  Loop
  Do Until .ReadyState = 4
   DoEvents
   i = i + 1
   If i > 3000 Then
    MsgBox "アクセスできませんでした。", vbInformation: GoTo Quit
   End If
  Loop
   If flg = 0 Then
   myContentText = .Document.body.innerText
'ログ検査用
 Fno = FreeFile()
 Open "WebLog.txt" For Output As #Fno
 Print #Fno, myContentText
 Close #Fno
'
  End If
 End With
 AppActivate Application.Caption
 If Err.number = 0 Then
  MsgBox "WebLog.txt という名前で、このブックと同じフォルダに保存されました。"
  myID = Shell("Notepad.exe " & ThisWorkbook.Path & "\Weblog.txt", vbNormalFocus)
 Else
  MsgBox "残念ながら、ログが取れなかったもようです。"
 End If
Quit:
 Set objIE = Nothing
End Sub

この回答への補足

お恥ずかしいのですが、サンプルを具体的にどう扱って良いのか分かりません。私は、通常のHTMLだけでJavaScriptをはめ込んだことが有りません。
エクセルも関数がやっと扱える程度です。
サンプルの内容がハッキリとは分かりませんが、昔のMSDOSのベーシックはやっていましたので流れは判ります。丁寧な回答を頂きながら、申し訳け御座いません。

補足日時:2005/09/30 19:46
    • good
    • 0

こんにちは。

Wendy02です。
わざわざ、お返事つけてありがとうございました。

>本当はHTMLのまま保存したいのですが・・。

Excelに直接貼り付ければ、そのまま、自動的に変換されますね。

私の場合は、Webサイトで、表形式のものになっているものは、WordよりもExcelの方が管理が優れていることが分り、Excelを使用しています。しかし、多少、レイアウト的に調整する必要が出てきたりしています。また、HTMLで保存して、Excelで閲覧する方法もありますね。
    • good
    • 0
この回答へのお礼

有難う御座います。
書き間違えました。HTML文をTXT形式のままエクセルの一つのセルに保存したいのでした。ゴメンナサイ。

お礼日時:2005/09/30 15:11

ALT+Enterというのは改行コードの種類の一種ではなくて、Excelでセル内改行をする際のキーボードショートカットなんで、「ALT+Enterに変換する」という考えが間違っています。

セル内改行が実際にどういうコードになるのかは扱い方によります。シートをCSV形式等で名前を付けて保存すれば普通の改行コードになります。VBAで扱う場合は、chr(10)です。
おそらく、VBAを使って、ファイルを読んで、<BR> を chr(10) に変換したり、ファイル中の改行を削除したりするのがよいと思います。
    • good
    • 0

#4 のWendy02です。



Excelにログを貼り付けにするなら、あまりWordは関心しません。コピー&ペーストにするときに、テキストのみにしないと、他のコードまで移すことになりかねません。なるべく、テキスト・エディタのほうがよいです。念のため。
問題がないのでしたら、余計なお世話になってしまいますが。
    • good
    • 0
この回答へのお礼

有難う御座います。

私は、初心者ですので、色々、お教え頂きましたが、理解できなくて申し訳け御座いません。
エクセルで、タグを扱うのは無理という事が分かって来ました。Accessで編集すれば良いようですが、初心者の私には、敷居が高いながらも少しやってみましたが無理でした。
エクセルでCSVで保存すれば良いように書かれてあったのでやったけど、セルの高さが広がり、解決できませんでした。
今は、タグをはずして、簡素にしました。とりあえず、改行だけは直す必要がありました。本当はHTMLのまま保存したいのですが・・。

お礼日時:2005/09/30 13:11

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