fc2ブログ

【VBA】テキストファイル出力

2010-07-13 23:18:51 Tue

このページの左の方にある「名言集」という javascript はプラグインとして
誰かのつくっていたものの借り物です。

このプラグインに従って、名言とその発言者をエクセルに記述することで 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列目




といった感じになります。

なお、エクセルのほうは下記のようなイメージ。

WS000013_20100713232246.jpg

マクロは、ボタンのクリックイベントで処理を起動しています。

Private Sub CommandButton1_Click()
    Call ThisWorkbook.outputJavaScript
End Sub


これでちょっとは便利になったかな。


参考URL
http://www.happy2-island.com/excelsmile/smile03/capter00804.shtml

⇒comment

Secret

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading