新生活!引っ越してから困らないように注意すべきことは?>>

はじめて投稿します。
エクセルマクロを始めたばかりですが、よろしくお願いします。

Fileフォルダ内にマクロ.xlsとdataフォルダがあり、
dataフォルダ内には複数のPDFファイルがあります。
マクロ.xlsのセルA1~A10に適当な英数字の文字列(例えばA123,B243,C072…など)が書かれていて
dataフォルダ内にはセルA1~A10に書かれている文字列に少し文字が追加された名前のPDFファイル
(例えばセルの文字列が"A123"なら"A123(OK).pdf")があります。
これをマクロを使ってA1~A10の文字列にハイパーリンクさせて、
セルに書かれている文字列をクリックして開きたいのですがどうすればよいでしょうか?

A1~A10に書かれている文字列を変数cellnameに代入し、
PDFファイルをcellnameにワイルドカードを使って変数pdfnameに代入できずにつまずいています…。

どなたかご解答の程宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> マクロ.xlsのセルA1~A10に適当な英数字の文字列(A123,B243,C072


 …など)が書かれていて
セルの文字列がすべて4桁という前提ですが。
'
Sub AAA()
 Dim i As Integer, N As Integer, TargetFile As String
 i = 1
 Do While Cells(i, 1) <> ""
  N = 0
  TargetFile = Dir$("C:\_Anns\file\data\*.pdf")
  Do While TargetFile <> ""
   If Left(TargetFile, 4) = Cells(i, 1) Then
    ActiveSheet.Hyperlinks.Add Anchor:=Range(Cells(i, 1).Address), _
          Address:="C:\_Anns\file\data\" & TargetFile
    GoTo Nxt
   End If
   TargetFile = Dir$
  Loop
Nxt: i = i + 1
 Loop
End Sub
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
このプログラムで一応ハイパーリンクできました。
ありがとうございます。
重ねてお願いなのですが、セルの文字数は9~15文字でランダムに書かれています。
したがってPDFファイル名="Cell(i,1)"と*と& ".pdf"を使って完全一致させたいのですがどうすればいいでしょうか?
質問は締め切っておりませんので、ご回答いただけると非常に助かります。
よろしくお願い致します。

P.S 教えて!gooをはじめて使うので御礼のポイントを差し上げたいのですがどうすればよいでしょうか?

お礼日時:2007/05/02 17:24

> セルへの入力ミスやファイルの欠如がありえる



ということですので、リンク対象のファイルを次のようにしました。
a.ファイルの"("までの文字列とセルの文字列が同じ。
b."("がつかないファイルは、ファイル名の先頭数文字がセルと同じ。
c.PDFに限らず、すべての拡張子が対象。
  限定が必要な場合は、 myDir & "*.*" を myDir & "*.pdf" に
  書き換えます。
'
Sub BBB()
 Dim myDir As String
 Dim i As Integer, N As Integer, TargetFile As String
 myDir = "C:\_Anns\Zone_2\data\"  '←実際のフォルダ名に書換え
 i = 1
 Do While Cells(i, 1) <> ""
  N = 0
  TargetFile = Dir$(myDir & "*.*")
  Do While TargetFile <> ""
   Select Case InStr(TargetFile, "(") - 1
    Case Is > 0
     If Left(TargetFile, InStr(TargetFile, "(") - 1) = Cells(i, 1) Then
      GoTo Lnk
     End If
    Case Else
     If Left(TargetFile, Len(Cells(i, 1))) = Cells(i, 1) Then
      GoTo Lnk
     End If
   End Select
   TargetFile = Dir$
  Loop
  GoTo Nxt
Lnk: ActiveSheet.Hyperlinks.Add Anchor:=Range(Cells(i, 1).Address), _
          Address:=myDir & TargetFile
Nxt: i = i + 1
 Loop
End Sub

これから出かけてしまいますが、最後に――
> エクセルマクロを始めたばかり
と書かれていたことに、いま気づきました。
マクロのお勉強中のようですが、私の記述はまったくの我流で、「動けばいいや」と
いうものです。(無責任!)
VBAの正しい文法や記述につきましては、書物やVBA専門のサイトを見てください。
    • good
    • 1
この回答へのお礼

重ね重ねご回答ありがとうございます。

If Left(TargetFile, InStr(TargetFile, "(") - 1) = Cells(i, 1) Then
今までの作成したプログラムの一部に上の一行を利用させて頂きました。

misatoannaさんには何度も回答いただき本当にありがとうございました。
これをつかってデータベースの方を作成して行こうと思います。

お礼日時:2007/05/03 18:38

> このプログラムで一応ハイパーリンクできました。



よかったですね。  (^^)


> セルの文字数は9~15文字でランダムに書かれています。
> PDFファイル名="Cell(i,1)"と*と& ".pdf"を使って完全一致させる。

dataフォルダ内にあるファイルは、A列のセルに書かれている不定長の
文字列に少し文字が追加された名前のPDFファイル。――ということで
したら、
 If Left(TargetFile, 4) = Cells(i, 1) Then
の部分を
 If Left(TargetFile, Len(Cells(i, 1))) = Cells(i, 1) Then
と置き換えればよいでしょう。
ファイル名の左(先頭)から「セルの文字列と同じ長さ分」が同じなら、
という、LEFTワークシート関数の考え方です。
    • good
    • 0
この回答へのお礼

またしても回答ありがとうございます。

こんなやり方があるなんて知りませんでした。
経験や発想やセンスの問題ですかね…。
核となる部分はmisatoannaさんに教えていただいたので後は自分の方で膨らませようと思います。

重ね重ね質問をお願いして申し訳ないのですが、
もし時間があるようでしたらお答えいただけると助かります。
仮にセルA1にA123、B1にA1234が入力されていたときに
dataフォルダ内にA123(OK).pdfファイルが存在せず
A1234(OK).pdfファイルのみ存在していた場合、
セルA1、B1ともにA1234(OK).pdfファイルがリンクされますよね?
こういった場合にセルA1は本来A123(OK).pdfファイルがリンクされるべきなので、
セルA1にはA1234(OK).pdfはリンクさせず、セルB1のみにリンクさせるようにはできないでしょうか?
(セルへの入力ミスやPDFファイルの欠如があると起こりえると思いましたので…)
参考になるかは分かりませんが、
PDFファイルにはセルの文字列の後に括弧"()"がついておりますので
PDFファイルの"("までの文字列とセルの文字列が同じなら
If文の処理をするという事はできないですかね…?

misatoannaさんのお手数をおかけしない程度に考えていただけると非常に助かります。

お礼日時:2007/05/03 01:01

#2です。



> Dir$("C:\_Anns\file\data\*.pdf")

テスト用で使用したディレクトリ名をそのまま記述してしまいました。(^^ゞ
実際のディレクトリ名に置き換えてください。
    • good
    • 0

どのような場合にしようされるのでしょうか?


マクロでないとだめですか?
挿入-ハイパーリンクが簡単ですが?
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。
エクセルシートにいろいろな情報が書かれてありまして
セルに書かれているファイルをすぐに参照したいと考えています。
データ量は今後増えていく予定で現在でも1000件以上あるので
今後のことを考えるとマクロで一発でリンクさせてもらえると効率的と考えました。
ご回答ありがとうございました。

お礼日時:2007/05/02 16:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBAで、PDFファイルを開きたい

セルに入力した値のブック(xls)を開く場合、
以下となりますが、↓

Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く
End Sub


これでPDFファイルを開きたいです。
記述をどうしたらよいでしょうか。
目的はPDFファイルの検索/照会をxlsにてしたいのです。
お手数ですがお願いいたします。

Aベストアンサー

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュールに
Sub test2()
Dim strFilePath As String
strFilePath = _
  Application.GetOpenFilename _
  ("PDFファイル,*.pdf", MultiSelect:=False)

If strFilePath = "false" Then
 Exit Sub
End If

Call Shell("explorer.exe " & strFilePath)

End Sub
でも?
ということかな?

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュー...続きを読む

QエクセルファイルbookにPDFファイルをリンクさせる

お世話になってます。
エクセルのbook上に、あるPDFファイルを
ショートカット呼び出し、ハイパーリンクで、同一PC内、出来れば、他PCからも出来るようにしたいのですが、方法はありますでしょうか?
PDFファイルのフォルダを指定して、ハイパーリンク表示にしてみましたが、フォルダまですら開いてリンクしてくれません。
関数などの使用も考えています。
どうか、良い案があればご教授下さい。
よろしくお願いします。
offcice2010, エクセル2014です。

Aベストアンサー

質問が良くわからないのですが
>エクセルのbook上に、あるPDFファイルをショートカット呼び出し、
エクセルには HyperLink関数があります。
使い方は =HYPERLINK("ファイルへのパス¥ファイル名","セルに表示する文字")
です。
>ハイパーリンクで、同一PC内
自分のPC内にあるファイルですので簡単ですよね。
>出来れば、他PCからも出来るようにしたいのですが
他の方のPCから貴方のPC内にあるファイルが閲覧できるように共有の設定が出来ているのですか?
それでも、他人から見ればネットワークフォルダですので、ドライブの設定が違うと思います。
つまりファイルサーバーにHyperLink関数を入れてあるエクセルのファイルとPDFファイルが
あれば、そのエクセルファイルを皆で利用すれば問題なく使えると思いますが。

QExcelからPDF文書の特定ページにリンクを貼る方法について

エクセルで作成した表のセルから
PDF文書にリンクを張りたいと考えています。

そのとき、必要なページを指定してジャンプさせられたら、
と思うのですが・・・。どうしたらいいのか分かりません。
このように指定したページ(例えば50頁中の23頁目)に
リンクを張ることは可能でしょうか。
(PDF文書の先頭ページにリンクを張ることはできました)

初心者でよく分からないので、
すみませんが詳しい方、教えてください。
よろしくお願いします。

Aベストアンサー

ご確認の2,3は、とくに問題はないと思います。
1につきましては、 Acrobat Reader のタイトルバー左端(アイコンの
 右)の表示がそうなっていれば問題ないと思うのですが……。

とりあえず、
 SendKeys "^{PGDN}"
の部分を
 Sendkeys "^{PGDN}", True
に書き換えてみてください。

あと、これでも効かないようでしたら、次の内容と差し替えてみてくだ
さい。
'
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
 AppActivate "Adobe Reader"
 SendKeys "+^{n}", True   '●1
 SendKeys Selection.Offset(0, 1).Value, True  '●2
 SendKeys "~"    '●3
End Sub
'
●ページにジャンプするショートカットキーのキー操作を意味します。
  1.[Ctrl]と[Shift]を押しながら[N]を入力
     → ページ指定ダイアログの表示。
  2.ページ番号の入力
  3.[Enter]のクリック
 これらの操作が Adobe Reader で有効ならOKなはずなのですが。

ご確認の2,3は、とくに問題はないと思います。
1につきましては、 Acrobat Reader のタイトルバー左端(アイコンの
 右)の表示がそうなっていれば問題ないと思うのですが……。

とりあえず、
 SendKeys "^{PGDN}"
の部分を
 Sendkeys "^{PGDN}", True
に書き換えてみてください。

あと、これでも効かないようでしたら、次の内容と差し替えてみてくだ
さい。
'
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
 AppActivate "Adobe Reader"
 SendKeys "+^{n}", True  ...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセルマクロについて質問です ファイルを開くマクロをワイルドカードを使用して作成したいです

エクセルマクロの初心者です
ファイルを開くマクロを作成したいです。

対象のファイルは、
 商品コード(5桁の数字) スペース 商品名
 たとえば 40157 ベーコンスライス500g
という名前が付いており、100個以上同一のフォルダに入っています。商品コードのみを入力して、マクロを実行すると目的のファイルが開ける。という形式で作りたいです。
商品名まで入力し、開きたいファイル名と完全に一致させれば

Sub 栄養計算()
'
Workbooks.Open Filename:="D:\ekuseru\" & Range("E4").Value & ".xls"

End Sub

で実行できたのですが商品名まで入力するは大変です。
そこで、ワイルドカードを使えばコードのみの入力でできるカナと思い試してみたのですがうまくいきませんでした。一応調べてみて Like関数を使うとできるという話を見つけたのですが、私が未熟なのかうまくできませんでした。
とても初歩的な質問で恐縮なのですが、自分では完全に行き詰ってしまいましたので、皆様の力をお借りしたいです。お願いします。

エクセルマクロの初心者です
ファイルを開くマクロを作成したいです。

対象のファイルは、
 商品コード(5桁の数字) スペース 商品名
 たとえば 40157 ベーコンスライス500g
という名前が付いており、100個以上同一のフォルダに入っています。商品コードのみを入力して、マクロを実行すると目的のファイルが開ける。という形式で作りたいです。
商品名まで入力し、開きたいファイル名と完全に一致させれば

Sub 栄養計算()
'
Workbooks.Open Filename:="D:\ekuseru\" & Range("E4").Value...続きを読む

Aベストアンサー

ワイルドカードでやるなら、Dirで該当ファイルがあるか調べて開いては?
ワイルドカードで無い場合でも、ファイルを開く前に存在するか否かを確認するのは基本です。

Sub 栄養計算()
 Dim sTarget As String
 sTarget = Dir("D:\ekuseru\" & Range("E4").Value & "*.xls")
 If sTarget <> "" Then
  Workbooks.Open Filename:="D:\ekuseru\" & sTarget
 Else
  MsgBox ("該当ファイル無し")
 End If
End Sub

商品コードで始まるファイルが複数ある場合は考慮していません。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QEXCEL2010のハイパーリンク先の一括変更

EXCEL2010のハイパーリンク先の一括変更をしたいのですが、
\\TS-XHL6E6\ だけを削除して、このお尻の部分のリンクを生かしたいのですが、エクセル上で検索して、一括変更するには、どうすればよいのでしょうか?

Aベストアンサー

リンク先を別のブックに変更したいなら、リンクの編集から操作するのが簡単で確実です。

データタブの「リンクの編集」をクリックし、「リンク元の変更」で新しくリンクさせたいブックを指定してください。

Qフォルダ名をだすには

以下のコードでファイル名一覧がだせる。しかしフォルダ名がでない
フォルダ名をだすには、どうすればいいか。
 sub macro1()
Target = InputBox("ディレクトリ名を入力", "ディレクトリの指定", "C:\Windows") Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)
Set Fil = Fol.Files
ThisWorkbook.Sheets("Sheet1").UsedRange.Delete
'見出しを付ける
ThisWorkbook.Sheets(1).Range("B2") = "ファイル名"
ThisWorkbook.Sheets(1).Range("C2") = "ファイル種別"
ThisWorkbook.Sheets(1).Range("D2") = "最終更新日"
ThisWorkbook.Sheets(1).Range("E2") = "説明"
ThisWorkbook.Sheets(1).Range("B2:E2").Interior.Color = RGB(0, 0, 0)
ThisWorkbook.Sheets(1).Range("B2:E2").Font.Color = RGB(255, 255, 255)
ThisWorkbook.Sheets(1).Range("B2:Es2").HorizontalAlignment = xlCenter
i = 3
For Each Fx In Fil
'ファイル名
sFile = Fx.Name
'ファイル名の書き出し
ThisWorkbook.Sheets(1).Cells(i, 2) = sFile
'ファイル種別
sFType = Fx.Type
'最終更新日時の書き出し
ThisWorkbook.Sheets(1).Cells(i, 3) = sFType
'最終更新日
sLMod = Fx.DateLastModified
ThisWorkbook.Sheets(1).Cells(i, 4) = sLMod
i = i + 1
Next
End Sub

以下のコードでファイル名一覧がだせる。しかしフォルダ名がでない
フォルダ名をだすには、どうすればいいか。
 sub macro1()
Target = InputBox("ディレクトリ名を入力", "ディレクトリの指定", "C:\Windows") Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)
Set Fil = Fol.Files
ThisWorkbook.Sheets("Sheet1").UsedRange.Delete
'見出しを付ける
ThisWorkbook.Sheets(1).Range("B2") = "ファイル名"
ThisWorkbook.Sheets(1)...続きを読む

Aベストアンサー

下記で動きましたが。
Target = CurDir
Set bk = appexcel.Workbooks.Open(CurDir & "\" & "Book7.xls")
の部分はテストしやすいように我流ですから、適当に変えてください。
エクセルを立ち上げていない
ForEachで繰り回す必要がある
など質のコードには不足しているのでは。
ーーー
ub macro1()
Target = CurDir
MsgBox CurDir
Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)

Set Fil = Fol.Subfolders
i = 1
Set appexcel = CreateObject("Excel.Application")
Set bk = appexcel.Workbooks.Open(CurDir & "\" & "Book7.xls")
For Each fx In Fil
'MsgBox fx.Name
'サブフォルダ名
sFile = fx.Name
'サブフォルダ名の書き出し

bk.Sheets(1).Cells(i, "B") = sFile
'ファイル種別
sFType = fx.Type
'最終更新日時の書き出し
bk.Sheets(1).Cells(i, "C") = sFType
'最終更新日
sLMod = fx.DateLastModified
bk.Sheets(1).Cells(i, "D") = sLMod
i = i + 1
Next
bk.Close
Set bk = Nothing
Set appexcel = Nothing
End Sub

下記で動きましたが。
Target = CurDir
Set bk = appexcel.Workbooks.Open(CurDir & "\" & "Book7.xls")
の部分はテストしやすいように我流ですから、適当に変えてください。
エクセルを立ち上げていない
ForEachで繰り回す必要がある
など質のコードには不足しているのでは。
ーーー
ub macro1()
Target = CurDir
MsgBox CurDir
Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)

Set Fil = Fol.Subfolders
i = 1
Set appexcel = CreateObje...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング