【VBA】テキストファイル出力
2010-07-13 23:18:51 Tue
このページの左の方にある「名言集」という javascript はプラグインとして
誰かのつくっていたものの借り物です。
このプラグインに従って、名言とその発言者をエクセルに記述することで javascript ファイルを出力する簡単なマクロを作成しました。
上記ソースは、
・ファイルオープンダイアログで保存場所を選択する
・テキストファイルへ出力する
といったものの参考にできるかもしれません。
なお、上記のコメントを外してちゃんとコードを記述すると、行、列でネストして繰り返しをします。
1行目-1列目
1行目-2列目
1行目-3列目
:
:
:
2行目-1列目
2行目-2列目
2行目-3列目
:
:
:
といった感じになります。
なお、エクセルのほうは下記のようなイメージ。
マクロは、ボタンのクリックイベントで処理を起動しています。
これでちょっとは便利になったかな。
参考URL
http://www.happy2-island.com/excelsmile/smile03/capter00804.shtml
誰かのつくっていたものの借り物です。
このプラグインに従って、名言とその発言者をエクセルに記述することで javascript ファイルを出力する簡単なマクロを作成しました。
'/** ' * FC2ブログ用プラグインJavaScript出力マクロ ' */ Sub outputJavaScript() Dim path As String path = fileOpen() If path = "False" Then GoTo EndLabel Else 'MsgBox path End If main path EndLabel: End Sub '/** ' * ファイルオープンダイアログ ' * ファイルパスを返却します ' */ Private Function fileOpen() As String Dim vntFileName As Variant 'ファイルを保存するダイアログを開きます vntFileName = Application.GetSaveAsFilename( _ InitialFileName:="meigen.js" _ , FileFilter:="javascriptファイル(*.js),*.js" _ , FilterIndex:=1 _ , Title:="保存先の指定" _ ) fileOpen = vntFileName End Function '/** ' * valueが空でも出力する ' */ Sub writeText(ByVal value As String, ByVal n As Long) If value = "" Then Print #n, value Else Print #n, value End If End Sub '/** ' * メイン処理 ' */ Sub main(ByVal path As String) Dim ws As Worksheet Dim currentWs As Worksheet Dim counter As Long counter = 0 Set currentWs = ActiveSheet ' 入力最大行数取得 MaxRow = currentWs.Cells(Rows.Count, 1).End(xlUp).Row Dim n As Long n = FreeFile Open path For Output As #n writeText "<SCRIPT TYPE=""text/javascript"">", n writeText "<!-- ", n writeText "", n writeText "// このプラグインの本家です。<a href=""http://plaza.rakuten.co.jp/bluesidusfield/"" target=""_blank"">星が見える名言集</a>", n writeText "", n writeText "var msg = new Array();", n writeText "", n writeText "", n writeText "// 設定開始(メッセージの内容を設定してください)", n writeText "", n For i = 2 To MaxRow ' ' 入力最大列数定義 ' MaxCol = 2 ' ' j = 1 ' Do While j < MaxCol + 1 ' meigenString = currentWs.Cells(i, 1) hatugensyaString = currentWs.Cells(i, 2) ' ' ' ' 名言 ' If j = 1 Then writeText "msg[" & counter & "]= '『" & meigenString & "』…" & hatugensyaString & "';", n ' 名言の発言者 counter = counter + 1 Next i writeText "", n writeText "", n writeText "// 設定終了", n writeText "", n writeText "", n writeText "var no = Math.floor(Math.random() * msg.length);", n writeText "", n writeText "// 表示開始", n writeText "document.write(msg[no]);", n writeText "// 表示終了", n writeText "", n writeText "// -->", n writeText "</SCRIPT>", n Close #n End Sub
上記ソースは、
・ファイルオープンダイアログで保存場所を選択する
・テキストファイルへ出力する
といったものの参考にできるかもしれません。
なお、上記のコメントを外してちゃんとコードを記述すると、行、列でネストして繰り返しをします。
1行目-1列目
1行目-2列目
1行目-3列目
:
:
:
2行目-1列目
2行目-2列目
2行目-3列目
:
:
:
といった感じになります。
なお、エクセルのほうは下記のようなイメージ。
マクロは、ボタンのクリックイベントで処理を起動しています。
Private Sub CommandButton1_Click() Call ThisWorkbook.outputJavaScript End Sub
これでちょっとは便利になったかな。
参考URL
http://www.happy2-island.com/excelsmile/smile03/capter00804.shtml