目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
48 / 109 ツリー ←次へ | 前へ→

【190】IllustratorをVBAで操作するには (基本編_HelloWorld) ちくたく 07/3/6(火) 10:18 Excel[未読]
【191】Re:IllustratorをVBAで操作するには (応用編... ちくたく 07/3/9(金) 16:13 Excel[未読]
【192】Re:IllustratorをVBAで操作するには (基本編... ちくたく 07/3/16(金) 11:18 Excel[未読]
【193】オープンパスを探したいとき ちくたく 07/3/23(金) 14:57 Excel[未読]
【197】パスのところに、レイヤの名称を書く【Illus... ちくたく 07/6/5(火) 14:03 全般[未読]
【203】【Illustrator & VBA】選択されたデータ... ちくたく 07/7/19(木) 18:19 Excel[未読]

【190】IllustratorをVBAで操作するには (基本編_...
Excel  ちくたく E-MAIL  - 07/3/6(火) 10:18 -

引用なし
パスワード
   間違って前の投稿を消してしまったので、改めて、基本編から。

前のはややこしかったので、今回は簡単に、おきまりのHelloWorldを。
Illustratorの文字列には、3種類があります。
それぞれで、HelloWorldをやってみました。

基本的には、テキストのオブジェクトを生成し、
そこにプロパティを与えるような感じです。

Sub 文字列を作成する()
  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim myTxt As Illustrator.TextArtItem
  
  Set myDoc = illApp.ActiveDocument
  
  'テキストアイテムを作成。まずは、エリアテキスト
  Set myTxt = myDoc.TextArtItems.Add
  myTxt.Contents = "Hello World"        '// 現在時間を取得し、書き出し。
  myTxt.Kind = aiAreaText       '// Kindプロパティの設定。
  
  '次にパステキスト
  Set myTxt = myDoc.TextArtItems.Add
  myTxt.Contents = "Hello World"
  myTxt.Kind = aiPathText
  myTxt.Translate 0, -50
  
  '最後にポイントテキスト
  Set myTxt = myDoc.TextArtItems.Add
  myTxt.Contents = "Hello World"
  myTxt.Kind = aiPointText
  myTxt.Translate 0, -100
End Sub

【191】Re:IllustratorをVBAで操作するには (応用...
Excel  ちくたく E-MAIL  - 07/3/9(金) 16:13 -

引用なし
パスワード
   こんにちは。
IllustratorもCAD的に使えるという例を出してみます。
まぁ、CAD的というか、スクリプトで図形を生成する楽しみみたいなものです。
数式を上手く挟めば、幾何学的な模様も簡単にかけます。

今回は、一例として、測量なんかでやる断面図について、
座標が得られているものから、図形を生成する例です。
データはC列にX軸が、D列にY軸が入っています。

Sub 座標から断面図を描く()
  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim pt2mm As Single, pos() As Variant
  Dim i As Integer
  Dim p As Illustrator.PathItem
  Dim stNum As Integer, enNum As Integer
  
  Set myDoc = illApp.ActiveDocument
  pt2mm = 2.834645  'mmに単位の変換
  stNum = 10     'データが入っているセルの始まり。
  enNum = 82     'データが入っているセルの終わり。
  
  '座標を配列に入れ込む。これを元にパスを作成する。
  For i = stNum To enNum
    ReDim Preserve pos(i - stNum)
    pos(i - stNum) = Array(Range("C" & i).Value * pt2mm, _
                Range("D" & i).Value * pt2mm)
  Next i
  
  Set p = myDoc.PathItems.Add 'パスの生成
  With p
    .SetEntirePath (pos)  '座標の投げ込み
  End With
  
End Sub

【192】Re:IllustratorをVBAで操作するには (基本...
Excel  ちくたく E-MAIL  - 07/3/16(金) 11:18 -

引用なし
パスワード
   こんにちは。
しつこく、続けてみます。
フォルダの中に入ったIllustratorを印刷するスクリプトです。
こんなことしなくても、右クリックからできそうですが、
お遊びで。

Sub フォルダの中のaiファイルを全て印刷()

  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim myDir As String, fileName As String
  Dim pOk As Integer
  
  'イラストレータファイルが入ったフォルダを指定。
  myDir = "C:\tmp\"
  
  fileName = Dir(myDir & "*.ai", vbNormal)
  
  pOk = MsgBox("印刷設定はよろしいですか?", vbOKCancel, "印刷の確認")
  If pOk = vbCancel Then Exit Sub
  
  Do While fileName <> ""         'フォルダの中をファイルがなくなるまで調べる。
    illApp.Open (myDir & fileName)   'イラストレータのファイルを開いて、
    Set myDoc = illApp.ActiveDocument  '開かれたファイルを、
    docRef.PrintOut (False)       '印刷。ダイアログは表示しない。
    fileName = Dir           'そして、次のファイルを探す。
  Loop
  
  illApp.Quit   'イラストレータを終了。

End Sub

【193】オープンパスを探したいとき
Excel  ちくたく E-MAIL  - 07/3/23(金) 14:57 -

引用なし
パスワード
   こんにちは、IllustratorをVBAで操作します。
時々、パスを閉じたつもりが、閉じきれていなくて、
オープンパスになってしまっている場合があります。
それを、探すスクリプトです。

探すだけで閉じるわけではありません。
閉じようと思えば、アンカーを探せば閉じることができるはずです。
個人的には、手作業でやりたいことが多いので、
探して、選択するだけで満足してます。

Sub オープンパスを探す()
  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim p As PathItem
  
  Set myDoc = illApp.ActiveDocument
  
  For Each p In myDoc.PathItems
    If p.Closed = False Then
      p.Selected = True
      Exit Sub
    End If
  Next p
  MsgBox "パスの検索が終了しました。"
End Sub

【197】パスのところに、レイヤの名称を書く【Ill...
全般  ちくたく  - 07/6/5(火) 14:03 -

引用なし
パスワード
   こんにちは。
標記、そのままです。

1番目のレイヤ (変数lNumの「値」番目) に含まれる、
レイヤの中にあるパスの上にレイヤの名称を書き出します。
個人的には、よく使うものです。

Sub パスのところに、レイヤの名称を書く()
  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim p As Illustrator.PathItem
  Dim t As Illustrator.TextArtItem
  Dim pos As Variant
  Dim l As Illustrator.Layer
  Dim lNum As Integer
  
  Set myDoc = illApp.ActiveDocument
  lNum = 1
  
  For Each l In myDoc.Layers(lNum).Layers
    For Each p In l.PathItems
      Set t = myDoc.TextArtItems.Add
      pos = p.Position
      With t
        .Contents = p.Layer.Name
        .Translate pos(0), pos(1)
      End With
    Next p
  Next l
End Sub

【203】【Illustrator & VBA】選択されたデー...
Excel  ちくたく  - 07/7/19(木) 18:19 -

引用なし
パスワード
   こんにちは。
よく、作成したパスに、ラベルを貼ることをします。
いちいち、手でやるのは面倒なので、
少しでも楽になる方法として、
パスの名称をラベルとして、パスの左端にくっつけます。

Sub 選択されたデータにラベルを貼る()
  Dim illApp As New Illustrator.Application
  Dim myDoc As Illustrator.Document
  Dim t As Illustrator.TextArtItem
  Dim tmpObj As Variant
  Dim i As Integer
  
  Set myDoc = illApp.ActiveDocument
  tmpObj = myDoc.Selection
  
  For i = 0 To UBound(tmpObj)
    Set t = myDoc.TextArtItems.Add
    With t
      .Contents = tmpObj(i).Name
      .Translate tmpObj(i).Left, tmpObj(i).Top
    End With
  Next i
End Sub

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
48 / 109 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free