• ベストアンサー

パスを変数にしたいのですが。

("ad7")にd:\sample\4index.html というアドレスが入っています。 ファイル名を変えたいので変数にして保存したいと思います。 Dim f As Variant f = Range("ad7") Set wPage = ActiveWorkbook.PublishObjects.Add _ (SourceType:=xlSourceRange, _ Filename:="& f &", _ Sheet:="携帯", Source:="b4:f27") 'Title:="GRAPH") ActiveCell.Activate wPage.Publish True filnameのあとの変数の書き方が分からなく 希望のホルダーに保存できません。 どのように書けばいいのでしょうか。 ちなみに、上記のvbaもネット上から拾ってきたものです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MRT1452
  • ベストアンサー率42% (1391/3293)
回答No.1

単純に Filename:=f で良いのでは? Filename:="& f &", これだと 「&f&」という文字列をファイル名として渡している事になります。 おそらく文字連結のつもりで書いているのだと思いますが、そもそも文字連結の必要性がありません。 また、引数FilenameはString型なので、String型の変数なら変数を指定すれば入ります。 出来る限り、曖昧型であるVariantは使わない方が良いです。

allsirouto
質問者

お礼

ありがとうございました。 Filename:=f, _ だけでいけました。 しかし、 f = Range("ad7") に .Value をつける必要がありました。 なぜだかよくわかりませんが。 また、色々と教えてください。

allsirouto
質問者

補足

ありがとうございます。 Filename:=f とすると、 実行時エラー1004 アプリケーションの定義またはオブジェクト定義のエラーと表示されます。 Set wPage = ActiveWorkbook.PublishObjects.Add _ (SourceType:=xlSourceRange, _ Filename:=f, _ Sheet:="携帯", Source:="b4:f27") 上記の部分が黄色く表示されます。 なぜだか分からないので、また教えてください。

その他の回答 (1)

  • MRT1452
  • ベストアンサー率42% (1391/3293)
回答No.2

とりあえず。 Dim f As String Dim wPage As PublishObject f = Range("ad7").Text Set wPage = ActiveWorkbook.PublishObjects.Add(xlSourceRange, f, "携帯", "b4:f27", , , "Title") ThisWorkbook.Activate ActiveCell.Activate wPage.Publish True xlSourceRangeの場合、Titleの引数に何らかの値が必須っぽい。 現行(上記)では最終行でメソッド実行エラーになることから、 根本的にキチンとブックから段階的にPublishObjectsオブジェクトを確立させないと動かないかも。 http://www.shoeisha.com/book/hp/pc/office/Excel/ http://www2s.biglobe.ne.jp/~iryo/2vba/vba28.html

関連するQ&A

専門家に質問してみよう