i2i無料WEBパーツ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
こんにちは。

流浪のSE・PGをやってますと、運用フェーズの案件に携わる機会がたまにあります。

データメンテナンスなんかをやっていて、エクセルでDistinctしたいなーという事が
よくあるので、選択範囲の重複を省き、クリップボードに貼り付けるエクセルのマクロをメモっておきます。


'<機能>
' 選択範囲の重複を省いた値をクリップボードに出力します。
'<戻り値>
' なし
'<説明>
' クリップボードへの貼り付けはsetClipBoadのコメントを参照
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub selectedDistinctToClipBoad()

Dim map As Object
Dim key As String
Dim value As String

'Map生成
Set map = CreateObject("Scripting.Dictionary")

For Each c In Selection

If c.Text <> "" And Not (map.Exists(c.Text)) Then
'マップに値を登録
Call map.Add(c.Text, c.Address)
'
value = value + c.Text + vbCrLf
End If

Next c
'クリップボードに設定します
setClipBoad (value)

End Sub


'<機能>
' 文字列をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' [ツール]→[参照設定]で「Microsoft Forms 2.0 Object Library」に
' チェックして使用する。
'[参照可能なライブラリ]のリストにない場合は[参照設定]
'ダイアログボックスで[参照]ボタンをクリックして
'「C:\Windows\system32\FM20.DLL」を選択する
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function setClipBoad(strValue As String)
Dim CB As New DataObject

If strValue = "" Then
Exit Function
Else
With CB
.SetText strValue
.PutInClipboard
End With
End If

End Function
スポンサーサイト
エクセルを編集していてイラッとするシチュエーションに、

「本意なのか不本意なのか知らないけれどやたらハイパーリンクが設定されているドキュメントのリンクをクリックしてしまう時」

といった事はないでしょうか。
これは、

「F2を押してセルを編集しようと思ったら、間違ってF1を押してしまい使えないHELPが表示される」

の次に腹立たしい事ですね(ぇ


新しいバージョンのエクセルだとどうかわかりませんが、ハイパーリンクの削除って結構面倒なんですよね・・・セルを1つ1つ選択して削除しなければいけないような(汗

そんな訳で選択範囲のハイパーリンクを削除するマクロです。
ハイパーリンクが設定されているセルを選択してから、deleteHyperLinkを実行してください。


'<機能>
' 選択範囲のハイパーリンクを削除します
'<戻り値>
' なし
'<説明>
' 範囲選択してからこのマクロを実行してください
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub deleteHyperLink()

'シート名の文字列を保持します
For Each c In Selection
c.Hyperlinks.Delete
Next c
End Sub
人材派遣系の会社に所属していたり、受託をしていない小さな会社に所属するSEやPGって色々なプロジェクトに参加する機会が多いかと思います。
ようは、一作業員として大手が受託したプロジェクトのお手伝いをするわけですな。

私の場合、最近は1つのプロジェクトの期間が3ヶ月くらいでしょうか。
年3~4のプロジェクトに携わっています。

そんな訳で私はさまざまなエクセルのテーブル定義書の様式に出会う機会が多いのですが、テーブル一覧が無い定義書とかがあるとそれだけで萎えてしまうわけで・・・(汗
エクセルのシートがテーブルの数だけある仕様書って多いですからね。

ということで、各シートへのハイパーリンク付の一覧を作成するマクロを作ってみました。
本当は、各シートに「一覧に戻る」的なバック用のリンクもつけたいところですが、それは今後の課題ということで。



'<機能>
' 開いているブックのハイパーリンク付シート一覧を作成します。
'<戻り値>
' なし
'<説明>
' アクティブシートに新しいシートを追加し、各シートのハイパーリンク付一覧を作成します。
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub createWorkSheetNamesSheet()

'シート名の文字列を保持します
Dim namesArray() As String
ReDim namesArray(Sheets.Count)
'シートの一覧を取得します
For cnt = 1 To Sheets.Count
namesArray(cnt) = Sheets(cnt).Name
Next
'一覧用のシートを追加します
Worksheets.Add Before:=Worksheets(1)
Set newWorkSheet = Worksheets(1)
'ハイパーリンクの設定
For cnt = 1 To UBound(namesArray)
newWorkSheet.Hyperlinks.Add Anchor:=newWorkSheet.Cells(cnt, 1), Address:="", _
SubAddress:=namesArray(cnt) & "!A1", TextToDisplay:=namesArray(cnt)
Next

End Sub



あー、いい加減データベーススペシャリストの勉強を始めないといけないんですが・・・(汗
今年は3度目なんで、受からないといけないんですけどね(汗汗

今回もVBAのメモ。
お仕事で、エクセルを使う機会が多いのですが、シートが多すぎるドキュメントだと全体を把握するのが難しいし・・・(汗

そんなわけで、とりあえずですがシート一覧をクリップボードに貼り付けるマクロを作成しました。



'<機能>
' 開いているブックのシート一覧をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' クリップボードへの貼り付けはsetClipBoadのコメントを参照
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub setWorkSheetNamesToClipBoad()
'シート名の文字列を保持します
Dim workSheetNames As String

For Each targetWorkSheet In Sheets
workSheetNames = workSheetNames & targetWorkSheet.Name & vbCrLf

Next

'クリップボードに設定します
setClipBoad (workSheetNames)

End Sub

'<機能>
' 文字列をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' [ツール]→[参照設定]で「Microsoft Forms 2.0 Object Library」に
' チェックして使用する。
'[参照可能なライブラリ]のリストにない場合は[参照設定]
'ダイアログボックスで[参照]ボタンをクリックして
'「C:\Windows\system32\FM20.DLL」を選択する
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function setClipBoad(strValue As String)

Dim CB As New DataObject
With CB
.SetText strValue
.PutInClipboard
End With

End Function



ちょっと改良したらリンク一覧のシートを追加するって出来そうですな。

Excelの値をちょこちょこっとマクロで収集してクリップボードに貼り付けたいと思う状況が良くあります。
そんな訳で、VBAで文字列を値をクリップボードに貼り付ける方法のメモ。

Functionとテスト用のメソッドを作ってみました。


Sub test1()
setClipBoad ("set test")

End Sub


'<機能>
' 文字列をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' [ツール]→[参照設定]で「Microsoft Forms 2.0 Object Library」に
' チェックして使用する。
'[参照可能なライブラリ]のリストにない場合は[参照設定]
'ダイアログボックスで[参照]ボタンをクリックして
'「C:\Windows\system32\FM20.DLL」を選択する
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function setClipBoad(strValue As String)

Dim CB As New DataObject
With CB
.SetText strValue
.PutInClipboard
End With

End Function



たぶん、[ツール]→[参照設定]でライブラリを追加する必要があるかと思います。

参照設定

参照設定1

クリップボードの使い方は、タナカさんのサイト。参照設定はモーグを参考にしました。

Office TANAKA

moge


>>次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。