2012年04月25日

Word:Wordの差込印刷でデータソースが保存されない

【現象】
Word2003の差込印刷で、ネットワーク上のExcelをデータソースに指定していたが、LAN環境の変更によりデータソースのパスも変わったので、新しいパスを指定し文書を保存した。だが新しいパスが保存されてないせいか、次に文書を開いたときに古いパスで開こうとして、データソースが無いためデータソースを指定するダイアログが開いてしまう。

【新しいパスが保存されなかった手順】
1.文書を開く。
2.「この文書を開くと、次のSQLコマンドが実行されます」の警告メッセージに「はい」をクリック。
3.データソースを指定するダイアログが開くので新しいパスを指定する。
4.文書が開いた後、保存する。

【新しいパスが保存された手順】
1.文書を開く。
2.「この文書を開くと、次のSQLコマンドが実行されます」の警告メッセージに「いいえ」をクリック。
3.文書が開いた後、改めてデータソースを指定する。
4.文書を保存する。
【関連する記事】
posted by 忘却の達人 at 05:34| Comment(0) | TrackBack(0) | Word | このブログの読者になる | 更新情報をチェックする

2012年02月12日

Word:セクションの削除

Word2003でセクションの削除。

文字列の置換で、検索文字に ^b (セクション区切り制御文字)、置換文字列には削除する場合には何も入力しないで、改ページに置き換える場合は ^m (改ページ制御文字)を入力する。そしてオプションの「あいまい検索」のチェックを外して、置換を実行。

vbaコード
With Selection.Find
.ClearFormatting
.ClearFormatting
.Text = "^b"
.Replacement.Text = "^m"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
.Execute Replace:=wdReplaceAll
End With
posted by 忘却の達人 at 13:00| Comment(0) | TrackBack(0) | Word | このブログの読者になる | 更新情報をチェックする

2011年05月01日

youtubeのサムネイルのアドレス

http://www.youtube.com/watch?v=CpYYuSAZF6w のサムネイル
<img src="http://img.youtube.com/vi/CpYYuSAZF6w/0.jpg"/>

<img src="http://img.youtube.com/vi/CpYYuSAZF6w/1.jpg"/>

<img src="http://img.youtube.com/vi/CpYYuSAZF6w/2.jpg"/>

<img src="http://img.youtube.com/vi/CpYYuSAZF6w/3.jpg"/>

posted by 忘却の達人 at 13:27| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2011年04月09日

javascript:2つの地点の距離を求める

javascriptで2つの地点の緯度・経度から距離を求める。

function getDistance(lat1, lng1, lat2, lng2) {
    function radians(deg) {return deg * Math.PI / 180;}
    return 6378.14 * Math.acos(Math.cos(radians(lat1))
         * Math.cos(radians(lat2))
         * Math.cos(radians(lng2) - radians(lng1))
         + Math.sin(radians(lat1)) * Math.sin(radians(lat2)));
}
posted by 忘却の達人 at 14:24| Comment(0) | TrackBack(0) | JavaScript | このブログの読者になる | 更新情報をチェックする

2011年04月08日

vba:住所⇔緯度・経度変換

vbaで住所から緯度・経度に変換する関数と、逆の緯度・経度から住所に変換する関数。
注意点:住所⇔緯度・経度変換にはGoogle Geocoding APIを利用しているので、このAPIの使用制限が適用される。しかも一括変換しようとすると、10件くらいまではすぐに変換してくれるけど、それ以降は1秒に1個くらいのペースでリクエストしないとエラー(status:"OVER_QUERY_LIMIT")になる。
vba独自の注意点:エディタが大文字小文字を勝手に変換することがあるが、連想配列のキーは大文字小文字を区別するので勝手に変換されるとエラーになる。例えば、以下のコードの「jsn.status」が「jsn.Status」になるとダメ。対処法は、一度「status」で変数宣言する。そうすればその後変数宣言を消しても小文字のままになる。CallByName関数を使う。CallByName(jsn, "status", vbGet)


Dim l As Variant
    l = AddressToLatLng("東京都新宿区西新宿2−8−1")
    MsgBox "lat:" & l(0) & vbCrLf & "lng:" & l(1)
    MsgBox LatLngToAddress(l(0), l(1))

'住所から緯度・経度に変換
'戻り値は配列で、(0)が緯度、(1)が経度。
Function AddressToLatLng(ByVal address As String) As Variant
Dim sc As Object
Dim jsn As Object
Dim result As Object
Dim http As Object
Dim url As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function getLatLng(s) { return eval('(' + s + ')');}"

    url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" & sc.CodeObject.encodeURI(address)

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send
    Set jsn = sc.CodeObject.getLatLng(http.ResponseText)
    If jsn.status = "OK" Then
        For Each result In jsn.results
            AddressToLatLng = Array(result.geometry.location.lat, result.geometry.location.lng)
            Exit For
        Next
    Else
        'エラー
        AddressToLatLng = Array(999, 999)
    End If

    Set jsn = Nothing
    Set sc = Nothing
End Function

'緯度・経度から住所に変換
Function LatLngToAddress(ByVal lat As Double, ByVal lng As Double) As String
Dim sc As Object
Dim jsn As Object
Dim result As Object
Dim http As Object
Dim url As String
Dim text As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function getAddress(s) { return eval('(' + s + ')');}"

    url = "http://maps.google.com/maps/api/geocode/json?sensor=false&language=ja&latlng=" & lat & "," & lng

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send
    'ReplaceはShift_JISに無いハイフンが返されるためこれを全角ハイフンに変換
    Set jsn = sc.CodeObject.getAddress(Replace(http.ResponseText, ChrW(&H2212), "−"))
    If jsn.status = "OK" Then
        For Each result In jsn.results
            '「日本, 住所」の形で格納されてるので住所部分のみを取得
            LatLngToAddress = Split(result.formatted_address, ", ", 2)(1)
            Exit For
        Next
    Else
        'エラー
        LatLngToAddress = ""
    End If

    Set jsn = Nothing
    Set sc = Nothing
End Function
posted by 忘却の達人 at 21:10| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年03月26日

googleで住所から緯度・経度を取得する

http://maps.google.com/maps/api/geocode/json?sensor=false&address=URLエンコードした住所
これで緯度・経度を含むデータをjson形式で取得できる。jsonのところをxmlに変えるとxml形式で取得できる。

逆に緯度・経度から住所を取得する場合はlatlngパラメータに緯度・経度をカンマで区切って渡す。
http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=緯度,経度
posted by 忘却の達人 at 19:51| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2011年03月19日

vba:正規表現

VBScript.RegExpオブジェクトを使ってvbaで正規表現を使う。但し、(…)でグループ化した部分を参照する、RegExp.$n は使えない。
「Microsoft VBScript Regular Expression 5.5」のライブラリ参照でアーリーバインドできる。
ex.)文字列からURLを抜き出す。
Dim re As Object
Dim rslt() As Object
Dim url As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "https?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?"
re.IgnoreCase = True
re.Global = True
Set rslt = re.Execute("google:http://www.google.co.jp/,yahoo:http://www.yahoo.co.jp/")
For Each url In rslt
MsgBox url
Next
'rsltはコレクションなのでrslt(0)という記述もOK
posted by 忘却の達人 at 15:10| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年03月18日

vba:JavaScriptのコードを実行させる

ScriptControlオブジェクトを使うとvbaでJavaScriptのコードを実行させることができる。と言っても正確にはJScriptだけど。正規表現のマッチングやjsonデータを扱えるようになるのでいろいろ便利。
※64bit版OfficeだとScriptControlが使えないらしい。(32bit版OfficeならOSが64bitでもOK)

ex.文字列からyyyy/mm/ddを抜き出し、yyyymmddにして返す。

Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function extractDate(dt) { dt.match(/(\d{4})\/(\d{2})\/(\d{2})/); return RegExp.$1 + RegExp.$2 + RegExp.$3; }"
MsgBox sc.CodeObject.extractDate("今日の日付は2011/03/18です。")

※パラメータの無い関数だと罠があった。(Office2010で確認)
sc.AddCode "function noParam() { return 'やっほ〜'; }"
MsgBox sc.CodeObject.noParam() '←何故かエラーになる
MsgBox sc.CodeObject.noParam(0) '←適当にパラメータを渡すと動く
MsgBox CallByName(sc.CodeObject, "noParam", VbMethod) '←CallByNameを使うとパラメータが無くても動く
posted by 忘却の達人 at 00:51| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年02月06日

php:google docsのファイル一覧を取得

phpでZend Frameworkを使用してgoogle docsのファイル一覧を取得する。
Zend Gdataライブラリをダウンロードし、Zendフォルダを展開しておく。)

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_Docs');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
$user = "ユーザーID";
$pass = "パスワード";
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$docs = new Zend_Gdata_Docs($client);
$feed = $docs->getDocumentListFeed();
foreach($feed->entries as $folder){
//最終更新日とドキュメント名を出力
print date("Y/m/d H:i:s", strtotime($folder->updated->text))." - ".$folder->title->text."<br>";
}
posted by 忘却の達人 at 15:06| Comment(0) | TrackBack(0) | php | このブログの読者になる | 更新情報をチェックする

RadPHP:DB接続(mysql)で文字化け

RadPHPでDatabaseコンポーネントのCharsetプロパティをutf8に設定してるのにDB接続で文字化けする。(phpソース・mysqlのテーブル共にUTF8で作成している。)
対策はDB接続後に"SET NAMES UTF8"をmysqlに投げる。・・・しかしそれじゃあCharsetプロパティって何のためにあるの?

function Database1AfterConnect($sender, $params)
{
$this->Database1->execute("SET NAMES utf8");
}

posted by 忘却の達人 at 10:08| Comment(0) | TrackBack(0) | RadPHP | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。