Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6196 / 13644 ツリー ←次へ | 前へ→

【46639】ハイパーリンクについて コジコジ 07/2/8(木) 18:53 質問[未読]
【46649】Re:ハイパーリンクについて ハチ 07/2/9(金) 9:33 発言[未読]
【46652】Re:ハイパーリンクについて コジコジ 07/2/9(金) 12:37 質問[未読]
【46655】Re:ハイパーリンクについて ハチ 07/2/9(金) 15:22 発言[未読]
【46657】Re:ハイパーリンクについて コジコジ 07/2/9(金) 17:34 お礼[未読]

【46639】ハイパーリンクについて
質問  コジコジ  - 07/2/8(木) 18:53 -

引用なし
パスワード
   あるシートに記入いてあるデータを別のブックのシートへ登録しようと思うのですが、ハイパーリンクの設定で悩んでます。
ADODBでブックを開かずに登録しています。
通常のデータは問題ないのですが、あるフィールドにハイパーリンクを設定した状態で登録するにはどうすれば良いでしょうか。
サンプルコードです。
======================================================================
Private Sub test()
Dim myCon As New ADODB.Connection
Dim myRS As New ADODB.Recordset
Dim myFile As String
Dim conSTR As String
Dim EntTime As Date

  myFile = "\\Server1\\test\testDB.xls"
  conSTR = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Extended Properties=Excel 8.0;" & _
       "Data Source=" & myFile
  myCon.Open conSTR
  myRS.Open "[テスト$]", conSTR, adOpenStatic, adLockPessimistic
  With myRS
    .AddNew
    .Fields!部署 = Sheets("CTRL").Range("部署")
    .Fields!社員NO = Sheets("CTRL").Range("社員NO")
    .Fields!依頼者 = Sheets("CTRL").Range("氏名")
    .Fields!文書リンク = xxxxxx
    myRS.Update
  End With
  myRS.Close
  Set myRS = Nothing
  myCon.Close
  Set myCon = Nothing
End Sub
======================================================================
.Fields!文書リンク のフィールドに任意の文字列(例えばABC)にサーバー上の特定のファイル("\\Server1\test\ABC.xls")にハイパーリンクを設定した状態で登録したいのですが上手くいきません。何方かご教授願えませんでしょうか。

【46649】Re:ハイパーリンクについて
発言  ハチ  - 07/2/9(金) 9:33 -

引用なし
パスワード
   ▼コジコジ さん:
>あるシートに記入いてあるデータを別のブックのシートへ登録しようと思うのですが、ハイパーリンクの設定で悩んでます。
>ADODBでブックを開かずに登録しています。
>通常のデータは問題ないのですが、あるフィールドにハイパーリンクを設定した状態で登録するにはどうすれば良いでしょうか。
>サンプルコードです。
>======================================================================
>Private Sub test()
>Dim myCon As New ADODB.Connection
>Dim myRS As New ADODB.Recordset
>Dim myFile As String
>Dim conSTR As String
>Dim EntTime As Date
>
>  myFile = "\\Server1\\test\testDB.xls"
>  conSTR = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>       "Extended Properties=Excel 8.0;" & _
>       "Data Source=" & myFile
>  myCon.Open conSTR
>  myRS.Open "[テスト$]", conSTR, adOpenStatic, adLockPessimistic
>  With myRS
>    .AddNew
>    .Fields!部署 = Sheets("CTRL").Range("部署")
>    .Fields!社員NO = Sheets("CTRL").Range("社員NO")
>    .Fields!依頼者 = Sheets("CTRL").Range("氏名")
>    .Fields!文書リンク = xxxxxx
>    myRS.Update
>  End With
>  myRS.Close
>  Set myRS = Nothing
>  myCon.Close
>  Set myCon = Nothing
>End Sub
>======================================================================
>.Fields!文書リンク のフィールドに任意の文字列(例えばABC)にサーバー上の特定のファイル("\\Server1\test\ABC.xls")にハイパーリンクを設定した状態で登録したいのですが上手くいきません。何方かご教授願えませんでしょうか。

ADOからExcelの機能であるハイパーリンクを設定することはできないと思います。
正し、フィールドの値にHYPERLINK関数で入力すればできるかも。(試してません)

HYPERLINK関数の引数は、ヘルプで確認してみてください。

【46652】Re:ハイパーリンクについて
質問  コジコジ  - 07/2/9(金) 12:37 -

引用なし
パスワード
   ▼ハチ さん:
>▼コジコジ さん:
>>あるシートに記入いてあるデータを別のブックのシートへ登録しようと思うのですが、ハイパーリンクの設定で悩んでます。
>>ADODBでブックを開かずに登録しています。
>>通常のデータは問題ないのですが、あるフィールドにハイパーリンクを設定した状態で登録するにはどうすれば良いでしょうか。
>>サンプルコードです。
>>======================================================================
>>Private Sub test()
>>Dim myCon As New ADODB.Connection
>>Dim myRS As New ADODB.Recordset
>>Dim myFile As String
>>Dim conSTR As String
>>Dim EntTime As Date
>>
>>  myFile = "\\Server1\\test\testDB.xls"
>>  conSTR = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>>       "Extended Properties=Excel 8.0;" & _
>>       "Data Source=" & myFile
>>  myCon.Open conSTR
>>  myRS.Open "[テスト$]", conSTR, adOpenStatic, adLockPessimistic
>>  With myRS
>>    .AddNew
>>    .Fields!部署 = Sheets("CTRL").Range("部署")
>>    .Fields!社員NO = Sheets("CTRL").Range("社員NO")
>>    .Fields!依頼者 = Sheets("CTRL").Range("氏名")
>>    .Fields!文書リンク = xxxxxx
>>    myRS.Update
>>  End With
>>  myRS.Close
>>  Set myRS = Nothing
>>  myCon.Close
>>  Set myCon = Nothing
>>End Sub
>>======================================================================
>>.Fields!文書リンク のフィールドに任意の文字列(例えばABC)にサーバー上の特定のファイル("\\Server1\test\ABC.xls")にハイパーリンクを設定した状態で登録したいのですが上手くいきません。何方かご教授願えませんでしょうか。
>
>ADOからExcelの機能であるハイパーリンクを設定することはできないと思います。
>正し、フィールドの値にHYPERLINK関数で入力すればできるかも。(試してません)
>
>HYPERLINK関数の引数は、ヘルプで確認してみてください。

ハチ さん返信有難う御座います。
以下のように設定するとセルに代入されるのですが、どうしても頭の"="の前に"'"が付いてしまい"'="のように代入され文字列で認識されてしまいます。
"'"を削除すれば関数として認識されます。何か方法はあるでしょうか。
    .Fields!文書リンク = "=HYPERLINK(" & """"\\Server1\test\ABC.xl """" & "," & """abc.xls"")"

【46655】Re:ハイパーリンクについて
発言  ハチ  - 07/2/9(金) 15:22 -

引用なし
パスワード
   ▼コジコジ さん:
>
>ハチ さん返信有難う御座います。
>以下のように設定するとセルに代入されるのですが、どうしても頭の"="の前に"'"が付いてしまい"'="のように代入され文字列で認識されてしまいます。
>"'"を削除すれば関数として認識されます。何か方法はあるでしょうか。
>    .Fields!文書リンク = "=HYPERLINK(" & """"\\Server1\test\ABC.xl """" & "," & """abc.xls"")"

ADOから行う方法は、すいませんがわかりません。
.Fields!文書リンク = "=HYPERLINK(" & """"\・・・ の直後に
Debug.Print Fields("文書リンク").Value
として入力された値をイミディエイトで確認してみてください。
たぶん’は付いてないんじゃないかなぁーと思います。(またまた試してません)

testDB.xls側に実装して良いのなら
ThisWorkbookモジュールに
Private Sub Workbook_Open()
  Dim i As Integer
  Dim R As Range
  
  i = 2  'リンクの列番号を指定 
  With Worksheets("テスト")
    For Each R In .Range(.Cells(2, i), .Cells(.Rows.Count, i).End(xlUp))
      If Not R.HasFormula Then R.Formula = R.Value
    Next R
  End With
End Sub

【46657】Re:ハイパーリンクについて
お礼  コジコジ  - 07/2/9(金) 17:34 -

引用なし
パスワード
   ▼ハチ さん:
>▼コジコジ さん:
>ADOから行う方法は、すいませんがわかりません。
>.Fields!文書リンク = "=HYPERLINK(" & """"\・・・ の直後に
>Debug.Print Fields("文書リンク").Value
>として入力された値をイミディエイトで確認してみてください。
>たぶん’は付いてないんじゃないかなぁーと思います。(またまた試してません)
>
>testDB.xls側に実装して良いのなら
>ThisWorkbookモジュールに
>Private Sub Workbook_Open()
>  Dim i As Integer
>  Dim R As Range
>  
>  i = 2  'リンクの列番号を指定 
>  With Worksheets("テスト")
>    For Each R In .Range(.Cells(2, i), .Cells(.Rows.Count, i).End(xlUp))
>      If Not R.HasFormula Then R.Formula = R.Value
>    Next R
>  End With
>End Sub

そうですね発想の転換でtestDB.xlsのWorkbook_Openで変換する方法もありますね。
テストしましたら上手くいきました。有難う御座いました。

6196 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free